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
Форумы портала PHP.SU :: Версия для печати :: Как сохранить post в переменную и не очищать ее при обновление страницы
Форумы портала PHP.SU » » Вопросы новичков » Как сохранить post в переменную и не очищать ее при обновление страницы

Страниц (1): [1]
 

1. zapatronen - 17 Июля, 2017 - 17:14:59 - перейти к сообщению
Есть в корзине покупок поле " промо". Код который дает скидку.
Поле обрабатывается постом, цена меняется, но при переходе на другую страницу, пост очищается и скидка не получается.
Помогите понять логику как обхитрить пост и зафиксировать его при активации

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <?
  3. $_SESSION['promo']=mysqli_real_escape_string($dbc, trim($_POST['promo']));
  4. $promo=$_SESSION['promo'];
  5.     switch ($promo) {
  6.        case '':
  7.           echo "<form method='post'><input size='11' type='text' name='promo' pattern='^[a-zA-Z0-9\s]+$' value='' placeholder='код'>
  8.            <input type='submit' name='submit5' value='+'></input>
  9.            </form>";
  10.             $_SESSION['summa']=$summa;
  11.             break;
  12.             case 'blackfreeday':
  13.             echo "промо активирован";
  14.                 $_SESSION['summa']=$summa*30/100;
  15.                 echo "<form  method='post'><input size='11' type='text' name='promo' pattern='^[a-zA-Z0-9\s]+$' value='' placeholder='код'>
  16.            <input type='submit' name='submit5' value='+'></input>
  17.            </form>";              
  18.             break;
  19.             case ($promo != blackfreeday):
  20.                 $error="такого нет";
  21.                 echo "<form method='post'><input size='11' type='text' name='promo' pattern='^[a-zA-Z0-9\s]+$' value='$error' placeholder='код'>
  22.                 <input type='submit' name='submit5' value='+'></input>
  23.                 </form>";
  24.             break;
  25.     }
  26. ?>
  27.  
  28.  


Проблему вижу в замкнутом круге. Воожу данные в пост и начинается активация скрипта. Но если обновить страницу, то поле " промо" получается пустым от чего вся моя конструкция рушится

Подскажите логику или костыль, чтобы промо код сохранялся и не обнулялся, желательно без базы данных

С уважением, Павел
2. Строитель - 17 Июля, 2017 - 18:03:21 - перейти к сообщению
zapatronen, сохраняйте значение в сессию, и тогда после обновления страницы данные из пост запроса будут сохранены. Разумеется, сессию проверять надо перед записью, если она ещё пуста, тогда сохранить в неё данные из пост запроса.
3. zapatronen - 17 Июля, 2017 - 18:26:24 - перейти к сообщению
Так я в сессию и записываю
$_SESSION['promo']=mysqli_real_escape_string($dbc, trim($_POST['promo']));

Просто, когда жму перейти на сл. страницу, куда должна перенестись сессия поле в форме, которое обрабатывается постом очищается и сесси присваевается нулевое значение и все херится
или вы говорите, что проверка сесси на пустоту ключ к решению?
4. Строитель - 17 Июля, 2017 - 18:54:47 - перейти к сообщению
zapatronen пишет:
проверка сесси на пустоту ключ к решению?
Совершенно верно.
5. zapatronen - 18 Июля, 2017 - 07:14:06 - перейти к сообщению
Все работает как часы добавил просто строку по совету Строителя

if(empty($_SESSION['promo'])){

}

 

Powered by ExBB FM 1.0 RC1