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 :: Получить из формы еще одну переменную

 PHP.SU

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


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

> Без описания
satoneinfo
Отправлено: 07 Марта, 2015 - 12:14:19
Post Id



Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Окт. 2012  
Откуда: Жашкив


Помог: 0 раз(а)




Всем привет!

Есть код который отлично работает, из формы методом POST передаются данные и записываются в БД:

PHP:
скопировать код в буфер обмена
  1.  
  2. if(isset($_GET['purchaseOK'])) { echo "<div class='error'>ок!</div>";}
  3.  
  4. if(isset($_POST['name']) && is_array($_POST['name']))
  5.         {
  6.                 foreach($_POST['name'] as $id => $name)
  7.                 {
  8.                         if(!$name || isset($_POST['purchase'][$id]))
  9.                         {
  10.                                 db_insert(PREFIX . "hist", array("name" => $name, "userid" => $_SESSION['user_id']));
  11.                                 Header("Location:profile.php?myinfo&purchaseOK");
  12.  
  13.                         }
  14.                 }
  15.         }
  16.  
  17. ###
  18.  
  19. echo "<form action='profile.php?myinfo&purchase' method='POST'>";
  20.  
  21. $topics_p = db_array(mysql_query("SELECT namber,name,id,size FROM `".PREFIX."phist` ORDER BY `sort` ASC"));
  22.  
  23. echo "<table style='width: 100%;' border='0' cellspacing='1' cellpadding='1'>
  24. <tr>
  25. <td class='head6' style='padding-left: 2px; width: 5%;' align='center'><strong>№</strong></td>
  26. <td class='head6' style='padding-left: 10px; width: 50%;' align='left'><strong>Название</strong></td>
  27. <td class='head6' style='padding-left: 2px; width: 23%;' align='center'><strong>Выбрать</strong></td>
  28. </tr>";
  29.  
  30.  
  31. foreach($topics_p as $ppp) { echo "<tr><td class='head5' style='padding-left: 2px; width: 5%;' align='center'>".$ppp['namber']."</td>
  32.         <td class='head5' style='padding-left: 10px; width: 50%;' align='left'>".$ppp['name']."</td>
  33.         <td class='head5' style='padding-left: 2px; width: 23%;' align='center'><input type='checkbox' name='purchase[{$ppp['id']}]'> Выбрать</td>
  34.         <input type='hidden' name='name[{$ppp['id']}]' value='{$ppp['name']}'>
  35.         </tr>"; }
  36.  
  37. echo "</table>";
  38. echo "<input type='submit' value='выбрать' class='bottom'>";
  39. echo "</form>";


Появилась необходимость добавить в форму еще одну переменую size:

PHP:
скопировать код в буфер обмена
  1.  
  2. echo "<form action='profile.php?myinfo&purchase' method='POST'>";
  3.  
  4. $topics_p = db_array(mysql_query("SELECT namber,name,id,size FROM `".PREFIX."phist` ORDER BY `sort` ASC"));
  5.  
  6. echo "<table style='width: 100%;' border='0' cellspacing='1' cellpadding='1'>
  7. <tr>
  8. <td class='head6' style='padding-left: 2px; width: 5%;' align='center'><strong>№</strong></td>
  9. <td class='head6' style='padding-left: 10px; width: 50%;' align='left'><strong>Название</strong></td>
  10. <td class='head6' style='padding-left: 2px; width: 22%;' align='center'><strong>Размер</strong></td>
  11. <td class='head6' style='padding-left: 2px; width: 23%;' align='center'><strong>Выбрать</strong></td>
  12. </tr>";
  13.  
  14.  
  15. foreach($topics_p as $ppp) { echo "<tr><td class='head5' style='padding-left: 2px; width: 5%;' align='center'>".$ppp['namber']."</td>
  16.         <td class='head5' style='padding-left: 10px; width: 50%;' align='left'>".$ppp['name']."</td>
  17. <td class='head5' style='padding-left: 2px; width: 22%;' align='center'>".$ppp['size']."</td>
  18.         <td class='head5' style='padding-left: 2px; width: 23%;' align='center'><input type='checkbox' name='purchase[{$ppp['id']}]'> Выбрать</td>
  19.         <input type='hidden' name='name[{$ppp['id']}]' value='{$ppp['name']}'>
  20.         </tr>"; }
  21.  
  22. echo "</table>";
  23. echo "<input type='submit' value='выбрать' class='bottom'>";
  24. echo "</form>";


Добавить то добавил... но как ее получить ума не хватает, точнее знаний:
PHP:
скопировать код в буфер обмена
  1.  
  2. if(isset($_POST['name']) && is_array($_POST['name']))
  3.         {
  4.                 foreach($_POST['name'] as $id => $name)
  5.                 {
  6.                         if(!$name || isset($_POST['purchase'][$id]))
  7.                         {
  8.                                 db_insert(PREFIX . "hist", array("name" => $name, "size" => '???' "userid" => $_SESSION['user_id']));
  9.                                 Header("Location:profile.php?myinfo&purchaseOK");
  10.  
  11.                         }
  12.                 }
  13.         }


Третий день бьюсь безуспешно... Помогите пожалуйста. Огорчение

(Отредактировано автором: 07 Марта, 2015 - 12:19:00)

 
 Top
matpockun
Отправлено: 07 Марта, 2015 - 13:47:37
Post Id



Новичок


Покинул форум
Сообщений всего: 18
Дата рег-ции: Март 2014  
Откуда: нижний новгород


Помог: 0 раз(а)




".$ppp['name']."</td>
<td class='head5' style='padding-left: 2px; width: 22%;' align='center'>".$ppp['size']. У тебя $ppp одинаковые,обычно не ставят на разное значение,если не секрет зачем тебе размер указывать?
 
 Top
satoneinfo
Отправлено: 07 Марта, 2015 - 17:19:41
Post Id



Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Окт. 2012  
Откуда: Жашкив


Помог: 0 раз(а)




на так правильно я вывожу через оператор foreach значения в таблицу, и получается $ppp['name'], $ppp['size'] и т.д. Все отлично выводится и передается... но вот как передать третье значение (а за ним и четверто...) сообразить не могу. Значение добавляется так как проект развивается...

Кто еще подскажет? Однако
 
 Top
satoneinfo
Отправлено: 08 Марта, 2015 - 16:11:45
Post Id



Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Окт. 2012  
Откуда: Жашкив


Помог: 0 раз(а)




В общем как обычно разобрался сам -) свем спасибо за помощь Радость

Но возникла другая проблема:
PHP:
скопировать код в буфер обмена
  1.  
  2.         if(isset($_POST['name']) && is_array($_POST['name']))
  3.         {
  4.                 foreach($_POST['name'] as $id => $name)
  5.                 {
  6.  
  7.                         $desc = $_POST['size'][$id];
  8.                         $defn = $_POST['def'];
  9.                        
  10.                         if(!$name || isset($_POST['purchase'][$id]))
  11.                         {
  12.                                
  13.                                 db_insert(PREFIX . "hist", array("name" => $name, "size" => $desc, "userid" => $_SESSION['user_id']));
  14.                                 Header("Location:action.php?purchaseOK");
  15.                        
  16.                         } else {Header("Location:action.php?purchaseOFF");}
  17.                 }      
  18.                
  19.         }  


Проблема заключается в том, что если в форме указан выбор и если не указан все время срабатывает последний Header который указывает на purchaseOFF.

В чем может быть проблема???
 
 Top
Tyoma5891
Отправлено: 08 Марта, 2015 - 16:38:43
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




satoneinfo пишет:
В общем как обычно разобрался сам -) свем спасибо за помощь Радость

Но возникла другая проблема:
PHP:
скопировать код в буфер обмена
  1.  
  2.         if(isset($_POST['name']) && is_array($_POST['name']))
  3.         {
  4.                 foreach($_POST['name'] as $id => $name)
  5.                 {
  6.  
  7.                         $desc = $_POST['size'][$id];
  8.                         $defn = $_POST['def'];
  9.                        
  10.                         if(!$name || isset($_POST['purchase'][$id]))
  11.                         {
  12.                                
  13.                                 db_insert(PREFIX . "hist", array("name" => $name, "size" => $desc, "userid" => $_SESSION['user_id']));
  14.                                 Header("Location:action.php?purchaseOK");
  15.                        
  16.                         } else {Header("Location:action.php?purchaseOFF");}
  17.                 }      
  18.                
  19.         }  


Проблема заключается в том, что если в форме указан выбор и если не указан все время срабатывает последний Header который указывает на purchaseOFF.

В чем может быть проблема???

я могу вас растроить или обрадовать он будет у вас всегда срабатывать))) это первое, второе зачем в цикл засовывать хедер во чето нимогу никак понять?))

(Отредактировано автором: 08 Марта, 2015 - 16:41:31)

 
 Top
satoneinfo
Отправлено: 08 Марта, 2015 - 16:46:09
Post Id



Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Окт. 2012  
Откуда: Жашкив


Помог: 0 раз(а)




а как надо? Не понял
 
 Top
satoneinfo
Отправлено: 08 Марта, 2015 - 22:23:59
Post Id



Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Окт. 2012  
Откуда: Жашкив


Помог: 0 раз(а)




Ну и??? Один пришел покритиковал, другой пришел покритиковал, а помощи как не было так и нет... Огорчение
 
 Top
caballero
Отправлено: 08 Марта, 2015 - 22:49:39
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


Помог: 126 раз(а)




как можно помочь если ты даже не в состоянии обьяснить что тебе нужно?
если ты даже не знаешь зачем ты написал то что написал (например хедеры в цикле)

а HTML тэги, зачем то выводимые через echo, просто глаза выворачивают


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
satoneinfo
Отправлено: 08 Марта, 2015 - 23:25:52
Post Id



Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Окт. 2012  
Откуда: Жашкив


Помог: 0 раз(а)




Я написал так как у меня хватило ума и знаний написать... Огорчение

В первом вопросе написал, что нужно передать три значения в БД... А во втором вопросе , что нужно два хереда один редиректит на одну страницу если форма передана, а второй редиректит на другую страницу если форма не переданна, например из-за того, что ничего не выбрано. Ниндзя
 
 Top
satoneinfo
Отправлено: 14 Апреля, 2015 - 20:55:04
Post Id



Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Окт. 2012  
Откуда: Жашкив


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1.         if(isset($_POST['name']) && is_array($_POST['name']))
  2.         {
  3.                 foreach($_POST['name'] as $id => $name)
  4.                 {
  5.  
  6.                         $desc = $_POST['size'][$id];
  7.                         $defn = $_POST['def'];
  8.                        
  9.                         if(!$name || isset($_POST['purchase'][$id]))
  10.                         {
  11.                                
  12.                                 db_insert(PREFIX . "hist", array("name" => $name, "size" => $desc, "userid" => $_SESSION['user_id']));
  13.                                 Header("Location:action.php?purchaseOK");
  14.                        
  15.                         } else {Header("Location:action.php?purchaseOFF");}
  16.                 }      
  17.                
  18.         }  


Вопрос так и остался... если в форме указан выбор и если не указан все время срабатывает последний Header который указывает на purchaseOFF. Почему? Как исправить?
 
 Top
Ts.Saltan
Отправлено: 14 Апреля, 2015 - 21:47:25
Post Id



Посетитель


Покинул форум
Сообщений всего: 384
Дата рег-ции: Дек. 2013  
Откуда: Belarus


Помог: 22 раз(а)




satoneinfo пишет:
все время срабатывает последний Header который указывает на purchaseOFF. Почему? Как исправить?

Ну тут несколько вариантов
Либо не срабатывает условие
PHP:
скопировать код в буфер обмена
  1. if(!$name || isset($_POST['purchase'][$id]))


либо происходит отправка нескольких хедеров (а т.к. в цикле - именно это и происходит), и браузер "слушает" именно последний, который и перенаправляет на purchaseOFF

либо и то, и другое

Объясните смысл этого условия
PHP:
скопировать код в буфер обмена
  1. if(!$name || isset($_POST['purchase'][$id]))

Это валидация данных, чтоб в $_POST['purchase'] и $_POST['name'] содержались одинаковые ключи?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB