Я создаю проект веб-сайта, где вы можете редактировать сообщение после его публикации. Я сделал сайт с PHP, SQL и jQuery, и все публикации, которые публикуются на сайте, выводятся на веб-сайты "feed" через while-l oop (не включены в это содержание вопросов). Всем публикациям присваивается уникальный идентификатор, когда они публикуются (в базе данных).
У меня сейчас проблема в том, что вторая форма ( post__edit ) вообще не запрашивается.
Я понял, что мне нужно передать идентификатор сообщения в поле <input type="hidden" value="$postID">
. Эта форма ниже просто запрашивает фактическую post_edit форму, которая используется для отправки изменения сообщения.
echo '
<form method="post">
<button type="button" class="post__editBtn">Edit post</button>
<input type="hidden" name="post__editHidden" value="'.$postID.'">
</form>';
Когда класс кнопки: post__editBtn
нажимается, jQuery click eventlistener срабатывает, что исчезает в форме ( post_edit ), что позволяет вам вносить изменения в сообщение и отправлять их.
$('.post__editBtn').click(function() {
$('.post__edit').fadeIn();
});
Тогда у меня есть PHP if-statment, который проверяет, было ли установлено скрытое значение. Если это так, то я повторяю ранее скрытую форму и назначаю переменную SESSION, которая будет использоваться позже при выполнении запроса UPDATE.
if(isset($_POST['post__editHidden'])) {
$_SESSION['post__editHidden'] = $_POST['post__editHidden'];
echo'
<form method="post" action="../../php/includes/updatePost.php" class="post__edit">
<input type="text" name="postTitle" placeholder="Edit title" required>
<textarea name="postMsg" maxlength="255" placeholder="Edit message" required></textarea>
<button type="submit">Edit Post</button>
<button class="post__edit-close">Close</button>
</form>';
}
Для суммирования
- Первый форма запускает эффект jQuery fadeIn для сообщения (с $ postID )
- jQuery просто исчезает во второй форме ( post__edit )
- Вторая форма ( post__edit ) принимает значение
post__editHidden
(правильный идентификатор для правильного сообщения) и присваивает его переменной SESSION, которая впоследствии может быть использована для создания SQL UPDATE запрос, который выполняется, когда вторая форма окончательно отправлена (на updatePost. php).
Я верю, что, поскольку у меня для кнопки первой формы установлено значение type="button"
, она не передает форма так isset($_POST['post__editHidden']
не работает. Но если я изменю кнопку на обычный тип отправки, то первая форма просто отправляется и перезагружает страницу, на которой она находится. Я мог бы просто e.preventDefault
в моем jQuery fadeIn, но я не знаю, работает ли это.
Я совершенно новичок в PHP и SQL, так что я могу ошибаться. В любом случае, спасибо!