Есть index.php который выводит таблицу и на нем расположена кнопка "sumbit" которая отправляет форму в delete.php и удаляет строки отмеченные с помощью "checkbox".Проблема в том что после отправки страница не обновляется , если нажать обновить в браузере "обновить" удаленные строки исчезают но при этому выделенные "checkbox" остаются. Помогает только перезагрузка страницы (и "checkbox" сбрасываются и строки исчезают). Как правильно сделать перезагрузку ? Код (Text): <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>Документ без названия</title> <script type="text/javascript" src="http://yandex.st/jquery/2.1.0/jquery.min.js"></script> <script type="text/javascript" language="javascript"> function call() { var msg = $('#forms').serialize(); $.ajax({ type: 'POST', url: 'delete.php', // Если обработчик лежит не рядом с формой, то здесь следует указать полный путь до него. Например http://example.com data: msg, success: function(data) { $('#results').html(data); }, error: function(xhr, str){ alert('Возникла ошибка: ' + xhr.responseCode); } }); } function add() { location.reload(); } </script> <?php // Подключение login.php require_once 'login.php'; // Соединение с базой данных $db_server = mysqli_connect($db_hostname, $db_username, $db_password); if (!$db_server) die("Невозможно подключиться к MySQL: " . mysqli_error()); mysqli_query($db_server,"SET NAMES utf8"); //Выбор базы данных mysqli_select_db($db_server, $db_database) or die ("Невозможно выбрать базу данных: " . mysqli_error()); // Сам запрос SQL $query = "SELECT id,ip_addr,namepc,pass, passadm FROM vlc ORDER BY ip_addr "; // Выводим таблицу на экран $result = mysqli_query($db_server, $query); echo '<table border="1">'; echo '<thead>'; echo '<tr>'; echo '<th>ID</th>'; echo '<th>IP</th>'; echo '<th>Имя ПК</th>'; echo '<th>Пароль</th>'; echo '<th>Пароль администратора</th>'; echo '</tr>'; echo '</thead>'; echo '<tbody>'; ?><form method="POST" id="forms" action="javascript:void(null);" onsubmit="call()"><?php echo '<input type="submit" action="index.php" name="submitForm" value="Удалить отмеченные" />'; while($data = mysqli_fetch_array($result)) { echo '<tr>'; echo '<td>' . $data['id'] . '</td>'; echo '<td>' . long2ip ($data['ip_addr']) . '</td>'; echo '<td>' . $data['namepc'] . '</td>'; echo '<td>' . $data['pass'] . '</td>'; echo '<td>' . $data['passadm'] . '</td>'; echo "<td width='10px'><input type='checkbox' name='check[]' value=". $data['id'] ."></td>"; echo '</tr>'; } ?></form><?php ?> Код (Text): <?php require_once 'login.php'; $db_server = mysqli_connect($db_hostname, $db_username, $db_password); if (!$db_server) { echo "Текст ошибки error: " . mysqli_connect_error() . PHP_EOL; exit; } mysqli_select_db($db_server, $db_database); foreach ($_POST['check'] as $item) { $query = "DELETE FROM vlc WHERE id = $item"; $result = mysqli_query($db_server, $query); } ?>
Если я правильно понял вопрос, то есть такая функция header(), например, header('Location: ../index.php'); Указывается она в конце php скрипта, т.е. скрипт отработал и пойдет перенаправление пользователя на главную страницу.
Заголовки работают не так. Во-первых, если не используется буферизация вывода, их нужно прописывать строго в начале работы скрипта до первого отданного байта.. Если же используется буферизация, то их можно прописывать где угодно. От этого ничего не изменится. Во-вторых, они не выполняются на сервере. Это часть ответа сервера. Указание клиенту, не более того. Даже нет, не указание, а просьба. Клиент, с определенной вероятностью, может внемлить содержимому заголовка (если это браузер, соблюдающий стандарты), а может и не внемлить (если это бот, который на эти ваши стандарты болт клал). Не более того.