#php #mysql
#php #mysql
Вопрос:
Я пытаюсь обновить свою базу данных сообщением, которое пользователь отредактировал на форуме. Вся форма редактирования функционирует, за исключением: когда пользователь нажимает редактировать, форма отправляется и переходит на главную страницу форума, но база данных и сообщение не меняются.
Мой сохраненный код редактирования выглядит следующим образом:
#data preparation for the query
$id=intval($_POST['id']);
$a_id=intval($_POST['a_id']);
$question_id=intval($_POST['question_id']);
foreach ($_POST as $key => $value)
$_POST[$key] =
mysql_real_escape_string($value);
$sql = "UPDATE $tbl_name SET
a_answer='$_POST[a_answer]' WHERE
a_id='$a_id' AND
question_id='$question_id'";
if (!mysql_query($sql)) {
die('Error: ' . mysql_error()); }
mysql_close; header ("location:
main_forum.php");
?>
Мой код для страницы редактирования таков:
#data preparation for the query
$id=intval($_GET['id']);
$a_id=intval($_GET['a_id']);
$question_id=intval($_GET['question_id']);
# selects title and description fields from database
$sql = "SELECT a_answer FROM $tbl_name WHERE a_id='$a_id' AND question_id='$question_id'";
$result=mysql_query($sql);
$rows=mysql_fetch_array($result);
?>
И HTML
<h3>Edit</h3>
<form action="save_edit.php" method="get" name="myForm" />
<center>
<table>
<tr>
<td valign="top">
<b>Answer</b>
</td>
<td>
<textarea cols="80%" rows="10" name="a_answer">
<?php echo htmlspecialchars($rows['a_answer']); ?>
</textarea>
</td>
</tr>
<tr>
<td colspan="3">
<input name="a_id" type="hidden" value="amp;<? echo $rows['a_id']; ?amp;>">
<input name="question_id" type="hidden" value="amp;<? echo $rows['question_id']; ?amp;>">
<input type="submit" name="Submit" value="edit post">
<?php mysql_close(); ?>
</input>
</input>
</input>
</td>
</tr>
</table>
</center>
Комментарии:
1. По какой-то причине мой sql-запрос не распознает question_id или a_id
2. Если вы закомментируете
header ("location: main_forum.php");
, вы видите какую-либо ошибку mysql?3. Упс. Я не видел, чтобы вы использовали
die()
. Не имеет значения, что последует дальше.
Ответ №1:
Вы путаете get
и post
. В вашей форме, которую вы используете, method="get"
пока вы используете $_POST
на странице обработки. Измените свою форму на method="post"
:
<form action="save_edit.php"
method="post" name="myForm">
PS. Вы не должны закрывать открывающий тег с помощью />
.