Как обновить страницу после отправки и выполнения оператора обновления, чтобы показать обновленные значения?

Я должен нажать на кнопку обновления, а затем сделать обновление в базе данных и обновить, чтобы показать обновленные значения на той же странице. Эти значения также должны быть обновлены в базе данных. Я пытался сделать обновление, но это не работает. Нужна помощь и руководство. Есть ли другая альтернатива, кроме обновления страницы? Можно ли это сделать без обновления страницы?

      <?php
//initalizing the query
$id =  $_GET['id'];
$query = "SELECT * FROM new_default_reports WHERE id = '$id'";
$result = $conn->query($query);
$row = $result->fetch_assoc();
?>

<input type="button" id="btnShow" style="overflow:hidden;margin- left:1400px;font-weight:bold;background-color:lightgray" value="Edit Default Reports" />
<div id="dialog" align="center">
<form action = "" method="post">
<label> SQL Statement</label>
<textarea name="sqlst" style="width:100%;height:40%;" class = "form-control"><?php echo $row['sql_statement']?></textarea><br>
<label> X axis: </label>
<input type="text" name="x" class = "form-control" value="<?php echo $row['x_axis'] ?>"><br>
<label> Y axis: </label>
<input type="text" name="y" class = "form-control"  value="<?php echo $row['y_axis'] ?>"><br>
<input type="submit" name = "set" value="Update" style="background-color:darkred;width:100px;color:white;font-weight:bold" onclick="window.location.reload();"/>
</form>
</div>

<?php
if (isset($_POST['set'])){
$query = "UPDATE new_default_reports SET sql_statement ='{$_POST['sqlst']}', x_axis ='{$_POST['x']}', y_axis = '{$_POST['y']}' where id = $id";
$result = $conn->query($query);
header("Refresh: 0; url=previewgraphs.php?id=".$id);
}
?>

ОБНОВЛЕНО:

  <input type="button" id="btnShow"style="overflow:hidden; margin-left:1400px; font-weight:bold; background-color:lightgray" value="Edit Default Reports">
<div id="dialog" align="center">
<form action="previewgraphs.php?id=$id" method="post">
<label>SQL Statement</label>
<textarea name="sqlst" style="width:100%; height:40%;" class="form-control">
<?php echo $row['sql_statement']?>
</textarea>
<br>
<label>X axis: </label>
<input type="text" name="x" class="form-control"value="<?php echo $row['x_axis'] ?>">
<br>
<label>Y axis: </label>
<input type="text" name="y" class="form-control"value="<?php echo $row['y_axis'] ?>">
<br>
<input type="submit" name="set" value="Update"style="background-color:darkred;width:100px;color:white;font-weight:bold">
<input type="submit" name="submitted" value="Submit the form">
</form>
</div>

<?php
if (isset($_POST['submitted'])){
$query = "UPDATE new_default_reports SET sql_statement  ='{$_POST['sqlst']}', x_axis ='{$_POST['x']}', y_axis = '{$_POST['y']}' where id = $id";
$result = $conn->query($query);

// make a query to get the updated result and display it on the page
$select_query = "SELECT sql_statement, x_xis, y_axis FROM new_default_reports WHERE id = $id";
$select_result = $conn->query($select_query);
if ($select_result->num_rows == 1) {
echo "You have successfully updated the database.";
$row = $select_result->fetch_assoc();
echo $row['sql_statement'];
echo $row['x_axis'];
echo $row['y_axis'];
}
}
?>

0

Решение

Пожалуйста, возьмите обновленное значение из базы данных после запроса на обновление.

Пожалуйста, попробуйте этот код: —

<?php
if (isset($_POST['set'])){
$query = "UPDATE new_default_reports SET sql_statement ='{$_POST['sqlst']}', x_axis ='{$_POST['x']}', y_axis = '{$_POST['y']}' where id = $id";
$result = $conn->query($query);

$select_query = "SELECT * FROM new_default_reports where id = $id";
$select_result= $conn->query($select_query );
$row = $select_result->fetch_assoc();
}
?>

<input type="button" id="btnShow" style="overflow:hidden;margin- left:1400px;font-weight:bold;background-color:lightgray" value="Edit Default Reports" />
<div id="dialog" align="center">
<form action = "" method="post">
<label> SQL Statement</label>
<textarea name="sqlst" style="width:100%;height:40%;" class = "form-control"><?php echo $row['sql_statement']?></textarea><br>
<label> X axis: </label>
<input type="text" name="x" class = "form-control" value="<?php echo $row['x_axis'] ?>"><br>
<label> Y axis: </label>
<input type="text" name="y" class = "form-control"  value="<?php echo $row['y_axis'] ?>"><br>
<input type="submit" name = "set" value="Update" style="background-color:darkred;width:100px;color:white;font-weight:bold" />
</form>
</div>
0

Другие решения

header функция не работает в вашем случае, потому что вы уже выводили, прежде чем пытаться установить заголовок.
Решение состоит в том, чтобы полностью изменить код php и html так, чтобы код php находился в самом начале документа.

Небольшое примечание: теперь вам больше не нужно обновляться.

РЕДАКТИРОВАТЬ включенный запрос выбора.

<?php
if (isset($_POST['set'])){
$query = "UPDATE new_default_reports SET sql_statement ='{$_POST['sqlst']}', x_axis ='{$_POST['x']}', y_axis = '{$_POST['y']}' where id = $id";
$result = $conn->query($query);
//header("Refresh: 0; url=previewgraphs.php?id=".$id);//not needed
$select_query = "SELECT sql_statement, x_xis, y_axis FROM new_default_reports WHERE id = $id";
$select_result = $conn->query($select_query);
if ($select_result->num_rows == 1) {
$row = $select_result->fetch_assoc();
}
}

?>

<input type="button" id="btnShow" style="overflow:hidden;margin- left:1400px;font-weight:bold;background-color:lightgray" value="Edit Default Reports" />
<div id="dialog" align="center">
<form action = "" method="post">
<label> SQL Statement</label>
<textarea name="sqlst" style="width:100%;height:40%;" class = "form-control"><?php echo $row['sql_statement']?></textarea><br>
<label> X axis: </label>
<input type="text" name="x" class = "form-control" value="<?php echo $row['x_axis'] ?>"><br>
<label> Y axis: </label>
<input type="text" name="y" class = "form-control"  value="<?php echo $row['y_axis'] ?>"><br>
<input type="submit" name = "set" value="Update" style="background-color:darkred;width:100px;color:white;font-weight:bold" />
</form>
</div>

И удалить onclick="window.location.reload();"

0

Вот как я бы это сделал:

<input type="button" id="btnShow"style="overflow:hidden; margin-left:1400px; font-weight:bold; background-color:lightgray" value="Edit Default Reports">
<div id="dialog" align="center">
<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>"method="post">
<label>SQL Statement</label>
<textarea name="sqlst" style="width:100%; height:40%;" class="form-control">
<?php echo $row['sql_statement']?>
</textarea>
<br>
<label>X axis: </label>
<input type="text" name="x" class="form-control"value="<?php echo $row['x_axis'] ?>">
<br>
<label>Y axis: </label>
<input type="text" name="y" class="form-control"value="<?php echo $row['y_axis'] ?>">
<br>
<input type="submit" name="set" value="Update"style="background-color:darkred;width:100px;color:white;font-weight:bold"">
<input type="submit" name="submitted" value="Submit the form">
</form>
</div>

<?php
if (isset($_POST['submitted'])){
$query = "UPDATE new_default_reports SET sql_statement  ='{$_POST['sqlst']}', x_axis ='{$_POST['x']}', y_axis = '{$_POST['y']}' where id = $id";
$result = $conn->query($query);

// make a query to get the updated result and display it on the page
$select_query = "SELECT sql_statement, x_axis, y_axis FROM new_default_reports WHERE id = $id";
$select_result = $conn->query($select_query);
if ($select_result->num_rows == 1) {
echo "You have successfully updated the database.";
$row = $select_result->fetch_assoc();
echo $row['sql_statement'];
echo $row['x_axis'];
echo $row['y_axis'];
}
}
?>

Таким образом, вам не нужно обновлять страницу, а отправлять форму самому себе. Это приведет к другому запросу. Если форма была отправлена, php-код в условии if будет выполнен, и база данных будет обновлена. Затем у вас есть задача сделать запрос на выборку, чтобы получить обновленный результат и отобразить его на странице.

Если пользователь откроет страницу с формой для каждого запроса get, он не увидит никаких результатов из базы данных.

При написании HTML вы также должны стараться быть последовательными и придерживаться кодовых соглашений на протяжении всего проекта. Для отдельных тегов XML-подобный стиль <input \>HTML-стиль <input>,

Я надеюсь, что это поможет вам, а также даст вам альтернативный взгляд на то, как решить вашу проблему.

РЕДАКТИРОВАТЬ:

Я удалил событие onclick из вашего элемента ввода и добавил кнопку отправки. При проверке, была ли отправлена ​​форма, ищите кнопку отправки в вашем предложении if. Если вам нравится, вы можете использовать <button type="submit">Submit the form</button> вместо <input type="submit">

ДРУГОЕ РЕДАКТИРОВАНИЕ:

Я добавил простой запрос выбора и вывел обновленный отчет на страницу.
Это моя идея об этом:

  • пользователь отправляет запрос GET — форма отображается
  • пользователь отправляет запрос POST (отправка формы) — он отправляется самому себе, отображается значение from и пользователь получает отзыв, если обновление прошло успешно, отображаются обновленные значения

При создании чего-то подобного я всегда думаю о CRUD — создавать, извлекать, обновлять, отображать.

Форма должна обновить запись в базе данных.
Для извлечения части лучше использовать другой вид, отображающий только результат, но не форму.

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

например что-то вроде этого:

<form action="<?php echo 'previewgraphs?id=$id'; ?>">

Вы не должны втиснуть много логики в одну часть. Переосмыслите свой дизайн. Я также рекомендую вам использовать платформу, которая реализует шаблон MVC. У вас большой выбор. Фреймворк позаботится о многих вещах и предоставит вам также семантические URL, поэтому у вас будет что-то вроде:

/reports
/reports/1

вместо добавления всех параметров в URL.

0

Сначала реструктурируйте свой код.
Первая часть вашего кода должна сохранять значения в случае отправки изменений. Затем вы снова читаете из базы данных и показываете результаты.

Однако это может быть проблема с кэшированием в браузере или прокси. У меня есть пара тегов, которые были очень полезны:

        <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
<meta http-equiv="cache-control" content="no-cache">

положить их в HTML < руководитель> раздел. Старые IE иногда делают странные вещи с прокси.

Ура, Карстен

-1
По вопросам рекламы [email protected]