Повторная отправка данных БД
Начал пробовать создание БД вручную.Создаю таблицы в БД,все было нормально до момента их заполнения.Заполняются они корректно,но при обновлении страницы,они заполняются повторно.Я знаю,что вопросо очень заезженный,но на просторах подобного именно с этим примером кода я не нашел ничего,кроме форм регистраций и прочих.Я пробовал делать редирект - создал пустой файл и указал переадресацию на него,но мне в итоге пишет что раузер сделал слишком много переадресаций и все так-же продолжил пополнять БД даннными.Прошу помощи в этом.
// создаем таблицу 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 шт):
Вы получаете на 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.