Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Очистка POST после нажатия на кнопку средствами PHP, возможно?
Покинул форум
Сообщений всего: 49
Дата рег-ции: Дек. 2016
Помог: 0 раз(а)
Добрый день, пытаюсь не переходя на другую страницу вносить записи в базу данных. Записи заносятся, но есть проблема. После первого срабатывания данные формы хранятся в POST и после каждого обновления страницы запись в БД заносится автоматически с данными которые были занесены в прошлый раз. Можно ли средствами PHP очистить метод POST?
unset($_POST); пробовал - нет эффекта.
Но ничего не выходит, всё равно при обновлении страницы и при нажатии на кнопку в POST остаются все данные. После обновления страницы выводится сообщение "Медикамент поставлен на приход!".
Большое спасибо за этот кусок кода, теперь заносится в базу только по нажатию на кнопку, но я немного не понял как это работает, так как не могу отследить ход событий ни echo ни с помощью print_r. Сообщений просто нет, причём никаких и не могу понять почему. Кстати код работает и без вот этой части:
$_SESSION['msg']='Медикамент поставлен на приход!';
echo'Медикамент поставлен на приход!';
}
Ни одно из сообщений не выводится при условии ввода в базу данных, или при вводе с пустым полем наименования. Хотя сам ввод данных из условия if работает но дальше не понятно что происходит, такое ощущение что просто на этом всё обрывается и не идёт даже в else.
Сейчас конструкция работает в таком виде:
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 73 раз(а)
ЧИМ пишет:
Кстати код работает и без вот этой части:
Эта часть нужна для вывода в браузер сообщений об успешной записи, или наоборот - об ошибке. Так, как страницу перезагружает header('Location: ...) , то и вывод в echo вы не получите. Именно поэтому я дописал в скрипт сессии. (Добавление)
Вместо этого
header('Location: '. basename("prihod.php"));
Напишите так :
header('Location: prihod.php');
ЧИМ
Отправлено: 12 Декабря, 2016 - 19:52:06
Новичок
Покинул форум
Сообщений всего: 49
Дата рег-ции: Дек. 2016
Помог: 0 раз(а)
Строитель пишет:
ЧИМ пишет:
Кстати код работает и без вот этой части:
Эта часть нужна для вывода в браузер сообщений об успешной записи, или наоборот - об ошибке. Так, как страницу перезагружает header('Location: ...) , то и вывод в echo вы не получите. Именно поэтому я дописал в скрипт сессии. (Добавление)
Вместо этого
header('Location: '. basename("prihod.php"));
Напишите так :
header('Location: prihod.php');
Заменил. Ну в принципе разницы я так понял нет, так как "." это символ который стыкует между собой две конструкции.
А на счёт сессии всё же не понятно, потому как не работал вывод сообщений когда я код просто скопировал и вставил.
Строитель
Отправлено: 12 Декабря, 2016 - 21:44:56
Участник
Покинул форум
Сообщений всего: 1580
Дата рег-ции: Февр. 2014 Откуда: Украина
Помог: 73 раз(а)
ЧИМ пишет:
Заменил. Ну в принципе разницы я так понял нет, так как "." это символ который стыкует между собой две конструкции.
Дело не в конкатенации (".") , а в том, что в моём варианте браузер перенаправляется на эту же страницу. Название файла с кодом определяется функцией basename(), на вход которой передаётся константа __FILE__ . Всё вместе выглядело так:
header('Location: '. basename(__FILE__));
А в вашем варианте перенаправление браузера выполняется не на этот же файл с формой, а на prihod.php . Поэтому использование функции basename() у вас становится бессмысленным. Соответственно вам следует записать так:
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.