PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (4): « 1 2 3 [4]

> Найдено сообщений: 49
ЧИМ Отправлено: 12 Декабря, 2016 - 19:52:06 • Тема: Очистка POST после нажатия на кнопку средствами PHP, возможно? • Форум: Вопросы новичков

Ответов: 7
Просмотров: 549
Строитель пишет:
ЧИМ пишет:
Кстати код работает и без вот этой части:
Эта часть нужна для вывода в браузер сообщений об успешной записи, или наоборот - об ошибке. Так, как страницу перезагружает header('Location: ...) , то и вывод в echo вы не получите. Именно поэтому я дописал в скрипт сессии.
(Добавление)
Вместо этого

header('Location: '. basename("prihod.php"));

Напишите так :

header('Location: prihod.php');

Заменил. Ну в принципе разницы я так понял нет, так как "." это символ который стыкует между собой две конструкции.
А на счёт сессии всё же не понятно, потому как не работал вывод сообщений когда я код просто скопировал и вставил.
ЧИМ Отправлено: 11 Декабря, 2016 - 17:15:59 • Тема: Очистка POST после нажатия на кнопку средствами PHP, возможно? • Форум: Вопросы новичков

Ответов: 7
Просмотров: 549
Строитель пишет:
ЧИМ, попробуйте так
Спойлер (Отобразить)


Большое спасибо за этот кусок кода, теперь заносится в базу только по нажатию на кнопку, но я немного не понял как это работает, так как не могу отследить ход событий ни echo ни с помощью print_r. Сообщений просто нет, причём никаких и не могу понять почему. Кстати код работает и без вот этой части:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.  
  3. if (isset($_SESSION['msg']))
  4.     {
  5.     $msg = $_SESSION['msg'];
  6.     unset($_SESSION['msg']);
  7.     }
  8. else {
  9.     $msg = '';
  10.  

Что с ней, что без неё - эффект один и тот же.

Вот ещё один момент:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. if (!mysqli_query($con, $sql))
  3.             {
  4.         if (!$name_med) {
  5.             $_SESSION['msg'] = 'Запись не вставлена!';
  6.             echo 'Запись не вставлена!';
  7.         }
  8.     }
  9.     else {
  10.             $_SESSION['msg'] = 'Медикамент поставлен на приход!';
  11.             echo 'Медикамент поставлен на приход!';
  12.         }
  13.  

Ни одно из сообщений не выводится при условии ввода в базу данных, или при вводе с пустым полем наименования. Хотя сам ввод данных из условия if работает но дальше не понятно что происходит, такое ощущение что просто на этом всё обрывается и не идёт даже в else.
Сейчас конструкция работает в таком виде:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <html>
  3.     <head>
  4.         <meta charset="UTF-8">
  5.         <title></title>
  6.     </head>
  7.     <body>
  8. <form method="post" name="sender" >
  9. <table border="1">
  10.     <tr>
  11.         <th>Наименование</th><th>Дата производства</th><th>Дата поставки</th><th>Срок годности(до)</th><th>Количество</th><th>Еденица измерения</th>
  12.     </tr>
  13.     <tr>
  14.         <td><input type="text" autofocus="1" placeholder="Введите название медикамента" name="name_med"></td>
  15.         <td><input type="date" autofocus="2" placeholder="0000-00-00" name="date_pr"></td>
  16.         <td><input type="date" autofocus="3" placeholder="0000-00-00" name="date_post"></td>
  17.     <td><input type="date" autofocus="4" placeholder="0000-00-00" name="date_godn"></td>
  18.     <td><input type="number" autofocus="5" placeholder="Введите количество" name="kolvo"></td>
  19.     <td><select name="izm" autofocus="6"><option value="шт">шт</option><option value="мг">мг</option><option value="мл">мл</option> </select></td>
  20.     <td><input type="submit" autofocus="7" value="Записать в приход" name="add_pr"></td>
  21.    
  22.     </tr>
  23. </table>
  24. </form>
  25.    <?php
  26.   include 'sql_con.php';
  27.   $post=$_POST['add_pr'];
  28.  
  29. if ($post) {
  30.    print_r($post);
  31.    $name_med=$_POST['name_med'];
  32.    $date_pr=date('Y-m-d G:i:s',strtotime($_POST['date_pr']));
  33.    $date_post=date('Y-m-d G:i:s',strtotime($_POST['date_post']));
  34.    $date_godn=date('Y-m-d G:i:s',strtotime($_POST['date_godn']));
  35.    $kolvo=$_POST['kolvo'];
  36.    $izm=$_POST['izm'];
  37.    $polya=TB_POL;
  38.    $charset='utf8';
  39.    $con=mysqli_connect(HOST, LOGIN, PASS, BD);
  40.    mysqli_set_charset($con, $charset);
  41.    $sql = "
  42.       INSERT INTO $polya
  43.       VALUES (
  44.           '$name_med',
  45.           '$date_pr',
  46.           '$date_post',
  47.           '$date_godn',
  48.           '$kolvo',
  49.           '$izm'
  50.       )
  51.   ";
  52.    mysqli_query($con, $sql);
  53.  
  54.    header('Location: '. basename("prihod.php"));    
  55. }
  56. ?>
  57.  

Ещё раз огромное спасибо!
ЧИМ Отправлено: 11 Декабря, 2016 - 10:45:04 • Тема: Очистка POST после нажатия на кнопку средствами PHP, возможно? • Форум: Вопросы новичков

Ответов: 7
Просмотров: 549
Строитель пишет:
ЧИМ, данные в POST можно сбросить, передав браузеру заголовок Location . При этом страница будет перезагружена.

Если я правильно понял то конструкция для очистки заголовка в POST выглядит так:

и вставил я его вот сюда:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. if($_POST['add_pr'])
  3. {
  4.     $name_med=$_POST['name_med'];
  5.     $date_pr=date('Y-m-d G:i:s',strtotime($_POST['date_pr']));
  6.     $date_post=date('Y-m-d G:i:s',strtotime($_POST['date_post']));
  7.     $date_godn=date('Y-m-d G:i:s',strtotime($_POST['date_godn']));
  8.     $kolvo=$_POST['kolvo'];
  9.     $izm=$_POST['izm'];
  10.     $polya=TB_POL;
  11.     $con=mysqli_connect('localhost', user_login, user_pass, 'apteka');
  12.     mysqli_query("SET NAMES utf8");
  13.    
  14.  
  15.     mysqli_query("INSERT INTO $polya VALUES ('$name_med','$date_pr','$date_post','$date_godn','$kolvo','$izm')");
  16.    echo 'Медикамент поставлен на приход!';
  17.    
  18.    header("Location:"."");
  19.    exit();
  20.        
  21.     }
  22.  else {
  23.        
  24.           echo 'Запись не вставлена.';
  25.     }
  26.  


Но ничего не выходит, всё равно при обновлении страницы и при нажатии на кнопку в POST остаются все данные. После обновления страницы выводится сообщение "Медикамент поставлен на приход!".
ЧИМ Отправлено: 11 Декабря, 2016 - 09:47:12 • Тема: Очистка POST после нажатия на кнопку средствами PHP, возможно? • Форум: Вопросы новичков

Ответов: 7
Просмотров: 549
Добрый день, пытаюсь не переходя на другую страницу вносить записи в базу данных. Записи заносятся, но есть проблема. После первого срабатывания данные формы хранятся в POST и после каждого обновления страницы запись в БД заносится автоматически с данными которые были занесены в прошлый раз. Можно ли средствами PHP очистить метод POST?
unset($_POST); пробовал - нет эффекта.

Собственно кусок кода(без подключений)
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <form method="post" name="sender">
  3. <table border="1">
  4.     <tr>
  5.         <th>Наименование</th><th>Дата производства</th><th>Дата поставки</th><th>Срок годности(до)</th><th>Количество</th><th>Единица измерения</th>
  6.     </tr>
  7.     <tr>
  8.         <td><input type="text" autofocus="1" placeholder="Введите название медикамента" name="name_med"></td>
  9.         <td><input type="date" autofocus="2" placeholder="0000-00-00" name="date_pr"></td>
  10.         <td><input type="date" autofocus="3" placeholder="0000-00-00" name="date_post"></td>
  11.     <td><input type="date" autofocus="4" placeholder="0000-00-00" name="date_godn"></td>
  12.     <td><input type="number" autofocus="5" placeholder="Введите количество" name="kolvo"></td>
  13.     <td><select name="izm" autofocus="6"><option value="sht">шт</option><option value="mg">мг</option><option value="ml">мл</option> </select></td>
  14.     <td><input type="button" autofocus="7" value="Записать в приход" onclick="sw()" name="add_pr"></td>
  15.     </tr>
  16. </table>
  17. </form>    
  18. <!--
  19. <script language="JavaScript">  
  20. function sw() {
  21. alert("Вы нажали кнопку");
  22. }
  23. -->
  24.  
  25.     <?php
  26.  
  27. include 'sql_con.php';
  28. if($_POST['add_pr'] and $_SERVER['REQUEST_METHOD'] == "POST")
  29. {
  30.    $name_med=$_POST['name_med'];
  31.    $date_pr=date('Y-m-d G:i:s',strtotime($_POST['date_pr']));
  32.    $date_post=date('Y-m-d G:i:s',strtotime($_POST['date_post']));
  33.    $date_godn=date('Y-m-d G:i:s',strtotime($_POST['date_godn']));
  34.    $kolvo=$_POST['kolvo'];
  35.    $izm=$_POST['izm'];
  36.    $polya=TB_POL;
  37.    $con= mysqli_connect('localhost', 'login', 'pass', 'apteka');
  38.    mysqli_query("SET NAMES utf8");
  39.        
  40.    mysqli_query("INSERT INTO $polya VALUES ('$name_med','$date_pr','$date_post','$date_godn','$kolvo','$izm')");
  41.    
  42.    echo 'Медикамент поставлен на приход!';
  43.    }
  44. else {
  45.        
  46.         echo 'Запись не вставлена.';
  47.    }
  48.  
  49.    ?>
  50.  

Страниц (4): « 1 2 3 [4]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB