Я хочу иметь страницу профиля, где я мог бы просматривать и редактировать информацию, не используя дополнительные страницы.Использование POST внутри запроса POST
По умолчанию эта информация печатается:
<table border="0" style="width:35%">
<tr><td>E-mail:</td><td><?php echo $user['email']; ?></td></tr>
<tr><td>About me:</td><td><?php echo $user['about']; ?></td></tr>
</table>
<form action = "" method="post">
<input type = "submit" name="modify" value="Edit My Profile"/>
Если POST [ 'изменить'] выбран ли это:
<table border="0" style="width:25%">
<tr><td>E-mail:</td><td><input type="text" name="email" value="<?php echo $user['email']; ?>"/></td></tr>
<tr><td>About Me:</td></tr>
</table>
<textarea name="about" rows="4" cols="64"><?php echo $user['about']; ?></textarea>
<form action = "" method="post">
<input type = "submit" name="modify2" value="Edit My Profile"/>
<input type = "submit" name="cancel" value="Cancel"/>
</form>
Если POST [ 'modify2'] выбрано сделать это:
$db = new mysqli('localhost', 'r00t', 'somepass', 'sometable');
$stmt = $db->prepare("UPDATE users SET email= ?, about= ? WHERE username = ?");
$stmt->bind_param('sss', $_POST['email'], $_POST['about'], $_SESSION['username']);
$stmt->execute();
$stmt->close();
redirect("profile.php");
Работает так, как ожидалось, за исключением случаев, когда я пытаюсь изменить свой профиль. Я не могу перезаписать электронную почту или раздел «О». Я думаю, что это как-то связано с запросом MySQL? Я знаю, что у меня есть $ _SESSION ['username']. Так может быть, что $ _POST ['email'] или/и $ _POST ['about'] не установлен?
Я попробовал свой запрос в PhpMyAdmin с правильными аргументами, и это действительно сработало.
Или невозможно использовать двойные POST-запросы на одной странице?
Спасибо всем за показывая очевидную ошибку - элемент формы должен быть в верхней части таблицы. – gVoid