2015-03-23 4 views
1

Я хочу иметь страницу профиля, где я мог бы просматривать и редактировать информацию, не используя дополнительные страницы.Использование 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-запросы на одной странице?

+0

Спасибо всем за показывая очевидную ошибку - элемент формы должен быть в верхней части таблицы. – gVoid

ответ

1

Поместите метку <form> прежде всего входы. Не забудьте указать специальные HTML символы с htmlspecialchars:

<table border="0" style="width:25%"> 
    <form action = "" method="post"> 
    <tr><td>E-mail:</td> 
     <td><input type="text" name="email" value="<?php echo htmlspecialchars($user['email']); ?>"/></td> 
    </tr> 
    <tr><td>About Me:</td></tr> 
    </table> 
    <textarea name="about" rows="4" cols="64"><?php echo htmlspecialchars($user['about']); ?></textarea> 
    <input type = "submit" name="modify2" value="Edit My Profile"/> 
    <input type = "submit" name="cancel" value="Cancel"/> 
</form> 

MySQL запросов вроде нормально.

1

Ваша форма сбоку таблицы, в которой есть поля. Поля, которые вы хотите обновить, должны быть внутри элемента формы.

<form action = "" method="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> 
<tr><td> <textarea name="about" rows="4" cols="64"><?php echo $user['about']; ?></textarea></td></tr></table> 

<input type = "submit" name="modify2" value="Edit My Profile"/> 
<input type = "submit" name="cancel" value="Cancel"/> 
</form> 
1

пользователя форма тег над таблицей, так что все входной приходит в форме, чем вы можете получить значение формы с помощью $ _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> 
Смежные вопросы