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 :: Версия для печати :: как принять массив
Форумы портала PHP.SU » PHP » Программирование на PHP » как принять массив

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

1. Axiles - 30 Июля, 2010 - 08:36:23 - перейти к сообщению
существует таблица содержание которой передаётся в php скрипт методом POST
вот таким образом пытаюсь принять данные в скрипте:

PHP:
скопировать код в буфер обмена
  1.  
  2. $nom = $_POST('nom');
  3. $nem = $_POST('nem');
  4.  


но принимаю только последньую строку таблицы

Вопрос: как мне весь массив принять?
2. Djin_dj - 30 Июля, 2010 - 08:56:11 - перейти к сообщению
Axiles пишет:
Вопрос: как мне весь массив принять?

PHP:
скопировать код в буфер обмена
  1.  
  2. if(isset($_POST) && !empty($_POST))
  3. {
  4.    foreach($_POST as $var=>$var_value)
  5.   {
  6.      $$var = $var_value;
  7.   }
  8. }
  9.  

После выполнения этого цикла у Вас будут доступны переменные $nom = $_POST['nom'] и $nem = $_POST['nem']
3. smok - 30 Июля, 2010 - 09:58:54 - перейти к сообщению
Axiles пишет:
существует таблица содержание которой передаётся в php скрипт методом POST
вот таким образом пытаюсь принять данные в скрипте:

PHP:
скопировать код в буфер обмена
  1.  
  2. $nom = $_POST('nom');
  3. $nem = $_POST('nem');
  4.  


но принимаю только последньую строку таблицы

Вопрос: как мне весь массив принять?


http://php.su/functions/?f=extra...&choice=info
4. Axiles - 30 Июля, 2010 - 11:17:24 - перейти к сообщению
дело вот в чём, array извлекает из $_POST только значения последней строки, предыдущие затирает так как одинаковые индексы, тоесть названия столбцов, они же и имена форм (я так думаю)
extract конечно упростило мне задачу, но проблему не решыло, ведь я не могу извлеч из $_POST всю инфу
наверно нада придумывать скрипт который будет индексы переименовывать или ещё чего (
(Добавление)
Djin_dj пишет:
Axiles пишет:
Вопрос: как мне весь массив принять?

PHP:
скопировать код в буфер обмена
  1.  
  2. if(isset($_POST) && !empty($_POST))
  3. {
  4.    foreach($_POST as $var=>$var_value)
  5.   {
  6.      $$var = $var_value;
  7.   }
  8. }
  9.  

После выполнения этого цикла у Вас будут доступны переменные $nom = $_POST['nom'] и $nem = $_POST['nem']


чесно говоря не понял (
5. smok - 30 Июля, 2010 - 12:02:14 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. if(isset($_POST) && !empty($_POST)){
  2.    foreach($_POST as $var=>$var_value){
  3.      if (!isset($$var)) $$var = $var_value; else{
  4.           $i=1;
  5.           while(isset(${$var}.$i)){$i++}
  6.           ${$var}.$i=$var_value;
  7.      }
  8.   }
  9. }


Вроде как должно работать, но не проверял. Думаю идея понятна.
6. Axiles - 30 Июля, 2010 - 12:11:05 - перейти к сообщению
Поставлю вопрос по другому. Меняю метод передачис POST на GET, вижу передачу:

CODE (html):
скопировать код в буфер обмена
  1.  
  2. test.php?nom=1&nem=55&nom=2&nem=66&nom=3&nem=77
  3.  


PHP:
скопировать код в буфер обмена
  1.  
  2. $nom = $_GET('nom');
  3. $nem = $_GET('nem');
  4.  

таким образом я получаю только nom=3 nem=77

PHP:
скопировать код в буфер обмена
  1.  
  2. $array = array ($_GET);
  3.  

и таким образом я получаю только nom=3 nem=77

PHP:
скопировать код в буфер обмена
  1.  
  2. extract ($_GET);
  3.  

тоже даёт только nom=3 nem=77
а как мне все значения получить?
7. EuGen - 30 Июля, 2010 - 12:15:14 - перейти к сообщению
Передавайте так:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. test.php?nom[]=1&nem[]=55&nom[]=2&nem[]=66&nom[]=3&nem[]=77
  3.  

И проверяйте массивы
$nom=$_GET['nom']
$nem=$_GET['nem']
8. smok - 30 Июля, 2010 - 12:16:12 - перейти к сообщению
ну так ты пиши сразу в чём проблема.
В твоём случае надо просто имена полей поменять. Одинаковые поля у инпутов не должны быть, т.к. ты никаким способом их не получишь, кроме как распарсить QUERY_STRING. Если ты выбираешь 2ой способ, то explode тебе в помощь, иначе параметр name у инпутов.
9. Axiles - 30 Июля, 2010 - 13:20:06 - перейти к сообщению
EuGen пишет:
Передавайте так:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. test.php?nom[]=1&nem[]=55&nom[]=2&nem[]=66&nom[]=3&nem[]=77
  3.  

И проверяйте массивы
$nom=$_GET['nom']
$nem=$_GET['nem']

пасиба Улыбка
процесс пошол )
10. JustUserR - 30 Июля, 2010 - 13:37:26 - перейти к сообщению
Axiles Если строка запроса формируется не вами и вы не имеете возможность переопределелить имена передаваемых параметров с добавлением к ним квадратных скобок чтобы они автоматически трактовались как массивы PHP - то можете воспользовать ручным разбором переменной окружения QUERY_STRING - в таком случае вы получите все реально переданные параметры и вам нужно будет только обработать их посредством функиций типа explode и сохранить в конечный массив

 

Powered by ExBB FM 1.0 RC1