Повторная отправка данных БД

Начал пробовать создание БД вручную.Создаю таблицы в БД,все было нормально до момента их заполнения.Заполняются они корректно,но при обновлении страницы,они заполняются повторно.Я знаю,что вопросо очень заезженный,но на просторах подобного именно с этим примером кода я не нашел ничего,кроме форм регистраций и прочих.Я пробовал делать редирект - создал пустой файл и указал переадресацию на него,но мне в итоге пишет что раузер сделал слишком много переадресаций и все так-же продолжил пополнять БД даннными.Прошу помощи в этом.

// создаем таблицу users

try {
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "CREATE TABLE users (
    id INT (11) NOT NULL  AUTO_INCREMENT,
    login VARCHAR (20) NOT NULL,
    pass VARCHAR (32) NOT NULL,
    PRIMARY KEY(id)
    ) ENGINE=INNODB";

 $pdo->exec($sql);
//   echo "Таблица users создана успешно";
}
catch(PDOException $e)
   {
  $sql . "<br>" . $e->getMessage();
   }
// Наполняем таблицу users

try {

 
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

   // Установка данных в таблицу
   $sql = "INSERT INTO users ( `login`, `pass`)
   VALUES ('john', 'some_pass'),('alex', 'some_pass')";

   $pdo->exec($sql);
  // echo "Успешно создана новая запись";
   }
catch(PDOException $e)
   {
  $sql . "<br>" . $e->getMessage();
   }
// header('Location: adress.php');
// exit();

Ответы (1 шт):

Автор решения: Виктор 78

Вы получаете на url (например, /adress.php) некий запрос. Если вы хотите чтобы один и тот же файл отвечал за обработку запроса по одному и тому же url (например, вы хотите отрисовывать форму на этой странице, а при нажатии на кнопку Добавить вести пользователя на эту же страницу, где производить добавление таблицы пользователей), то тогда вам необходимо разделить логику обработки запроса по некоторому признаку. Самый логичный и широкоиспользуемый признак - является ли этот запрос GET или POST. Либо, что лучше, пришло ли поле из переданной формы.

<?php

if ($_POST['some_form_field']) {
  //тут логика создания таблицы
    header('Location: adress.php');
    exit;
}
//здесь отрисовка формы

Также, можно разнести логику в разные url. URL и файл, отвечающий за создание таблиц, отдельный ('create.php'), файл отвечающий за отрисовку формы, отдельный ('index.php'). Тогда, в файле create.php нужно всегда редиректить на index.php.

→ Ссылка