если я обработаю PoST в начале, то форма не отправляет данные. Код (Text): <?php if (!empty($_POST)) { $sql = mysqli_query($conn, "INSERT INTO `users` (`name`, `age`, `salary`) VALUES ('{$_POST['name']}', '{$_POST['age']}', '{$_POST['salary']}')"); header('Location: redirect.php'); } ?> <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=.0"> <title>Редиректы PHP</title> <link rel="stylesheet" href="css/bootstrap-grid.css"> <link rel="stylesheet" href="css/bootstrap.min.css"> <link rel="stylesheet" href="learnphp.css"> </head> <body> <header> <h1>Редиректы PHP</h1> </header> <div class="container-fluid p-0"> <div class="row"> <div data-bs-spy="scroll" data-bs-target="#list-example" data-bs-offset="0" class="col-lg-9 scrollspy-example" tabindex="0"> <article id="form_saving"> <h3><a href="https://code.mu/ru/php/book/prime/redirect/form-saving/" target="_blank">Сохранение формы в БД и редирект в PHP</a></h3> <?php $servername = "localhost"; $username = "root"; $password = ""; $database = "practice_01"; $conn = mysqli_connect($servername, $username, $password, $database); if (!$conn) { die('<p style="color:red">'.mysqli_connect_errno().' - '.mysqli_connect_error().'</p>'); } echo "Соединение с БД установленно". '<br>'; mysqli_set_charset($conn, "utf8"); $query = "SELECT * FROM users"; $result = mysqli_query($conn, $query) or die(mysqli_error($conn)); $user = mysqli_fetch_assoc($result); ?> <form action="" method="POST"> <input name="name" value="<?= $user['name'] ?>"> <input name="age" value="<?= $user['age'] ?>"> <input name="salary" value="<?= $user['salary'] ?>"> <input type="submit"> </form> <?php $sql = mysqli_query($conn, "SELECT `name`, `age`, `salary` FROM `users`"); while ($usr = mysqli_fetch_assoc($sql)) { echo "<table> <tr> <td>{$usr['name']}</td> <td>{$usr['age']}</td> <td>{$usr['salary']}</td> </tr> </table>"; } echo 'юзер успешно добавлен!'; ?> </article> </div> <!-- Navigation --> <div class="col-lg-3"> <h3>Всего 4 темы</h3> <div id="list-example" class="list-group"> <a class="list-group-item list-group-item-action" href="#redirect_intro">1. Введение в редиректы PHP</a> <a class="list-group-item list-group-item-action" href="#get_queries">2. GET запросы и редирект в PHP</a> <a class="list-group-item list-group-item-action" href="#flash">3. Флеш сообщения в PHP</a> <a class="list-group-item list-group-item-action" href="#form_saving">4. Сохранение формы в БД и редирект в PHP</a> </div> </div> </div> </div> </body> </html>
Скажи, в полях формы есть значения? PHP: <form action="" method="POST"> <input name="name" value="<?= $user['name'] ?>"> <input name="age" value="<?= $user['age'] ?>">
да есть. --- Добавлено --- Проверил сейчас специально. не знаю что случилось. но код вставленный после формы начал работать. если вставить до начала всего html, то не отправляются данные из формы --- Добавлено --- форма отправляется но сообщение: Cannot modify header information - headers already sent by (output started at всё равно появляется
форма отправляется но сообщение: Cannot modify header information - headers already sent by (output started at всё равно появ этот код вообще не работает. а exit если прписать, то боковое меню на сайте исчезает и ошибка : Warning: Cannot modify header information - headers already sent by (output started at C:\OpenServer\domains\lavrikphp\redirect.php:1) in C:\OpenServer\domains\lavrikphp\redirect.php on line 237 на 237 строке у меня как раз header --- Добавлено --- тогда так: Array ( [name] => usr16 [age] => 50 [salary] => 23000 ) Warning: Cannot modify header information - headers already sent by (output started at --- Добавлено --- принт распечатывает массив, если обработчик после формы вставлен. если до html кода, то ничего. вообще никакоЙ реакции
Mля. Ну, ты и упорный «непонимаха»! Этот код ни разу не пересекается с боковым меню и прочим HTML-кодом. И в нем есть exit безо всяких «если приписать». Выкладывай весь файл с этим кодом (HTML-составляющую можно сократить).
Это здец: PHP: <?php if (!empty($_POST)) { $sql = mysqli_query($conn, Я походу начинаю догадываться, почему у тебя ничего не работает Уже успел написать в теме, что код подключения к БД можно прописать выше этой вилки. Иначе нужно дублировать код подключения в обеих ветках. --- Добавлено --- Вот это тоже хрень: PHP: <?php ... $query = "SELECT * FROM users"; $result = mysqli_query($conn, $query) or die(mysqli_error($conn)); $user = mysqli_fetch_assoc($result); ?> <form action="" method="POST"> <input name="name" value="<?= $user['name'] ?>"> <input name="age" value="<?= $user['age'] ?>"> <input name="salary" value="<?= $user['salary'] ?>"> <input type="submit"> </form> <?php $sql = mysqli_query($conn, "SELECT `name`, `age`, `salary` FROM `users`"); while ($usr = mysqli_fetch_assoc($sql)) {