За последние 24 часа нас посетили 8450 программистов и 461 робот. Сейчас ищут 216 программистов ...

Всё перепробовал, но при обновлении страницы заново подает отправку формы

Тема в разделе "PHP и базы данных", создана пользователем Titan_ser, 25 апр 2020.

  1. Titan_ser

    Titan_ser Новичок

    С нами с:
    25 апр 2020
    Сообщения:
    3
    Симпатии:
    0
    Имею отправку данных с формы, всё хорошо, в базу добавляется, также делаю вывод данных с БД на страницу, но при обновлении страницы просит подтвердить повторную отправку данных, и добавляет повторно последний запрос. Вот собственно код (html и php в одном файле php)
    HTML:
    1. <!DOCtype html>
    2.  
    3. <title>Запись в БД через форму на php</title>
    4. </head>
    5. <form method="POST" action="" >
    6.    <label>От кого: </label><br>
    7.   <input name="name" type="text" value="" placeholder="Имя"/><br>
    8.    <label>Сообщение: </label><br>
    9.   <textarea name="text" type="text" cols="30" rows="20" placeholder="Текст"/></textarea>
    10.   <input type="submit" value="Отправить"/>
    11.  
    12. </form>
    13.  
    14. </body>
    15. </html>
    Также php
    PHP:
    1. <?php
    2.  
    3. if (isset($_POST['name']) && isset($_POST['text'])){
    4.     // Переменные с формы
    5.     $name = $_POST['name'];
    6.     $text = $_POST['text'];
    7.  
    8.     $_SESSION["name"]= $name;
    9.     $_SESSION["text"]= $text;
    10.     // Параметры для подключения
    11.     $db_host = "localhost";
    12.     $db_user = "root"; // Логин БД
    13.     $db_password = ""; // Пароль БД
    14.     $db_base = "sega"; // Имя БД
    15.     $db_table = "mytable"; // Имя Таблицы БД
    16.  
    17.     // Подключение к базе данных
    18.     $mysqli = new mysqli($db_host,$db_user,$db_password,$db_base);
    19.     $mysqli->query("SET NAMES 'utf8'");
    20.  
    21.   $mysqli->query (
    22.   "CREATE TABLE `sega`.`mytable`(
    23.      `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    24.      `name` VARCHAR(20),
    25.      `text` VARCHAR(255),
    26.      `regdate` DATE
    27.  )
    28.  ");
    29.  
    30.   $errors = array();
    31.  
    32.   if( $_POST['name'] == '' ) {
    33.       $errors[] = 'Введите Ваше имя!';
    34.   }
    35.  
    36.   if( $_POST['text'] == '' ) {
    37.       $errors[] = 'Введите Ваш текст!';
    38.   }
    39.   if ( empty($errors) ) {
    40.     $result = $mysqli->query("INSERT INTO ".$db_table." (name,text) VALUES ('$name', '$text')");
    41.  
    42.   }else {
    43.      //Errors are present
    44.      echo $errors['0'] . '<hr><br>';
    45.      }
    46.  
    47.  
    48.  
    49.     $result = mysqli_query($mysqli, "SELECT * FROM `mytable`");
    50.     while($r1 = mysqli_fetch_assoc($result))
    51.     {
    52.  
    53.     echo 'Имя: '.$r1['name'].'<br>'.'Сообщение: '.$r1['text'];
    54.     echo '<hr>';
    55.     }
    56.  
    57. }
    58.  
    59. ?>
    Пробовал различные Header но не помогало, в случае с header выдаёт ошибку (Cannot modify header information - headers already sent by) Перечитал множество вариантов в интернете, ничего не помогло, думаю в моём коде какая то ошибка. Прошу помощи
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    2.383
    Симпатии:
    464
    Адрес:
    Татарстан
    После записи в бд принудительное перенаправить на нужную страницу header('location: url'); exit();
     
  3. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    325
    @Titan_ser, ты не попробовал самый главный вариант, прочитать хотя бы одну книгу по РНР+MySQL