Я хочу создать форму, где у меня есть текст, который я могу редактировать и сохранить в базе данных для последующего использования в другом файле. Я написал следующий код, текст показывает отлично из базы данных, но обновление текста кнопкой отправки не работает.
Странно, но после отправки, эхо "Успешно сохранено!" нормально отображает, но не обновляет.
$connection = new mysqli("localhost", "db", "password", "db");
$query = "SELECT text FROM mailtext";
$result = mysqli_query($connection, $query);
while($row = mysqli_fetch_assoc($result))
{
$text = iconv('iso-8859-2', 'utf-8', $row['text']);
echo'
<center>
<form id="mailtext" method="post">
<textarea name="text" style="width: 500px; height: 300px;">'.$text.'</textarea>
<input type="submit" name="submit" value="Save">
</form>
</center>
';
if(isset($_POST['submit'])) {
$query2 = "UPDATE mailtext SET text='.$text.' WHERE id=1";
mysqli_query($connection, $query2);
echo 'Successfully saved!';
}
}
Если у вас есть какие-либо вопросы или что-то подобное, пожалуйста, задавайте :) Да, я пытался искать ответы в других вопросах, но ничего не помогло.
Добавьте пустой атрибут действия в вашу форму и обновите код
if(isset($_POST['submit'])) {
$text= $_POST['text'];
$query2 = "UPDATE mailtext SET text='.$text.' WHERE id=1";
mysqli_query($connection, $query2);
echo 'Successfully saved!';
}
Когда вы отправляете форму, страница перезагружается с содержимым $_POST
и перезапускается сверху вниз.
// Form is submitted
// You are getting the content of the table
// |
// |
// V
$connection = new mysqli("localhost", "db", "password", "db");
$query = "SELECT text FROM mailtext";
$result = mysqli_query($connection, $query);
// You are displaying the form
// |
// |
// V
while($row = mysqli_fetch_assoc($result))
{
$text = iconv('iso-8859-2', 'utf-8', $row['text']);
echo'
<center>
<form id="mailtext" method="post">
<textarea name="text" style="width: 500px; height: 300px;">'.$text.'</textarea>
<input type="submit" name="submit" value="Save">
</form>
</center>
';
// You are treating the previously submitted form
// |
// |
// V
if(isset($_POST['submit'])) {
$query2 = "UPDATE mailtext SET text='.$text.' WHERE id=1";
mysqli_query($connection, $query2);
echo 'Successfully saved!';
}
}
Вы должны обработать форму перед запросом базы данных, чтобы получить информацию, иначе данные не будут вставлены/обновлены
$connection = new mysqli("localhost", "db", "password", "db");
if(isset($_POST['submit'])) {
$text = $_POST['text'];
$query2 = "UPDATE mailtext SET text='.$text.' WHERE id=1";
// Beware, this query is VULNERABLE to SQL injections !
mysqli_query($connection, $query2);
echo 'Successfully saved!';
}
$query = "SELECT text FROM mailtext";
$result = mysqli_query($connection, $query);
while($row = mysqli_fetch_assoc($result))
{
$text = iconv('iso-8859-2', 'utf-8', $row['text']);
echo'
<center>
<form id="mailtext" method="post">
<textarea name="text" style="width: 500px; height: 300px;">'.$text.'</textarea>
<input type="submit" name="submit" value="Save">
</form>
</center>
';
}
mailtext
и только обновлены?