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 :: Передача N колличества переменных

 PHP.SU

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


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

> Без описания
ADIOS
Отправлено: 21 Октября, 2010 - 15:52:23
Post Id



Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Май 2010  
Откуда: Россия, Калуга


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




Все привет.

Подскажите как файлу обработчику принять N количество переменных...

Т.е. у меня есть форма которую генерируется циклом из базы,
сколько строк в базе, столько и радио кнопок:
<input name='otvet_%s' type='radio' value='%s' />
переменных $otvet_%s может быть 2 а может и 10 или 100,
Как файлу обработчику сказать скока и какие переменные к нему пришли?

Думаю верно разъяснил, очень жду Вашей помощи, застрял на одном месте...
Заранее благодарен...


-----
Не откладывай работу на завтра, от которой можно вообще отказаться
 
 Top
Саныч Модератор
Отправлено: 21 Октября, 2010 - 15:58:36
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




как пример
CODE (html):
скопировать код в буфер обмена
  1. <input name='otvet[]' type='radio' value='blabla' />

в обработчике применяете foreach для $_POST['otvet'] (или $_GET['otvet'], смотря что у вас)


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
ADIOS
Отправлено: 21 Октября, 2010 - 16:02:33
Post Id



Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Май 2010  
Откуда: Россия, Калуга


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




Саныч пишет:
в обработчике применяете foreach для $_POST['otvet'] (или $_GET['otvet'], смотря что у вас)


А можно по подробней, ни как не могу въехать... (((


-----
Не откладывай работу на завтра, от которой можно вообще отказаться
 
 Top
Саныч Модератор
Отправлено: 21 Октября, 2010 - 16:06:53
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




вот у вас стоит name='otvet_%s'. Вместо %s я так понимаю подставляется число... Вы вишите вместо otvet_%s просто otvet[], т.е. все ваши 2 - 10 - 100 переменных складываются в массив $_POST['otvet']. В опработчике будет примерно такой код...
PHP:
скопировать код в буфер обмена
  1. foreach($_POST['otvet'] as $val)
  2. {
  3.    //тут действия с каждой строкой
  4. }

подробнее - http://php.su/learnphp/cs/?cycles#foreach

(Отредактировано автором: 21 Октября, 2010 - 16:10:03)



-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
ADIOS
Отправлено: 21 Октября, 2010 - 16:22:06
Post Id



Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Май 2010  
Откуда: Россия, Калуга


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




Саныч пишет:
Вместо %s я так понимаю подставляется число... Вы вишите вместо otvet_%s просто otvet[],

Дело в том что сюда %s подставляется id вопроса, а сюда value="id_ ответа".
На странице идет спиок с N колличеством вопросов, и если сделать так otvet[] то можно будит выбрать только один ответ со всех вопросов, а так не должно быть...


-----
Не откладывай работу на завтра, от которой можно вообще отказаться
 
 Top
Саныч Модератор
Отправлено: 21 Октября, 2010 - 16:51:41
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


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




почему это только один?!

вот подправил для конкретно вашей задачи
CODE (html):
скопировать код в буфер обмена
  1. <input name='otvet[%s]' type='radio' value='%s' />

и обработчик
PHP:
скопировать код в буфер обмена
  1. foreach($_POST['otvet'] as $question => $answer)
  2. {
  3.    $question - id вопроса
  4.    $answer - ответ на него
  5. }


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
ADIOS
Отправлено: 22 Октября, 2010 - 09:28:41
Post Id



Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Май 2010  
Откуда: Россия, Калуга


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




Саныч пишет:
<input name='otvet[%s]' type='radio' value='%s' />


Спасибо Вам огромное.. Вот с этого и надо было ничинать...

И чтоб добить эту тему, хотелось бы еще узнать как все эти переменные сложит в одну сумму. Например передается 3, 5,10 итого 18, или 5,6,2,2 итого 15...

Заранее спасибо


-----
Не откладывай работу на завтра, от которой можно вообще отказаться
 
 Top
JustUserR
Отправлено: 22 Октября, 2010 - 13:26:08
Post Id



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


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




ADIOS пишет:
Подскажите как файлу обработчику принять N количество переменных...
Для проведения передачи PHP-скрипту набор перемнных их формы запрос число которых не является фиксированным - можно использовать также специальную схему отличную от применния поля автогенерации массива на серверонй стороне - для этой цели возможно создания клиентского JS-скрипта который производит подсчет элементов в форме и осуществляет передачу их идентификаторов в кодированном сериализованном виде к PHP-скрипту - который в свою очередь производит получения конкретных имен и их выборку их строки запроса


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
OrmaJever Модератор
Отправлено: 22 Октября, 2010 - 14:20:14
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




ADIOS пишет:
<input name='otvet_%s' type='radio' value='%s' />
переменных $otvet_%s может быть 2 а может и 10 или 100


Можно использовать так как ты написал.

PHP:
скопировать код в буфер обмена
  1.  
  2. $count = count($_POST);   //количество откравленых даных через пост
  3.  
  4. foreach($_POST as $key => $val)
  5. {
  6.       echo $key.' => '.$val;  
  7. }
  8.  


Если есть ненудные кнопки который выводить не надо то

PHP:
скопировать код в буфер обмена
  1.  
  2. foreach($_POST as $key => $val)
  3. {
  4.      if($key != 'submit' && $key != 'button')     // submit и button это не type а name
  5.      echo $key.' => '.$val;  
  6. }
  7.  

(Отредактировано автором: 22 Октября, 2010 - 14:22:53)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
ADIOS
Отправлено: 23 Октября, 2010 - 10:22:37
Post Id



Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Май 2010  
Откуда: Россия, Калуга


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




PHP:
скопировать код в буфер обмена
  1.    foreach($_POST['otvet'] as $question => $answer)
  2.    
  3.       {
  4.    $otvet[] = $answer;
  5.        }
  6.          
  7.         for ($i=0; $i<=$question; $i++) {
  8.     // запускаем цикл для перебора всех элементов массива
  9.  
  10.     $otvet['summa']+=$otvet[$i];
  11.        
  12.  
  13. }
  14. echo $otvet['summa'];
  15.  


Сам ответил напоставленный вопрос..
Всем спасибо за помощь!!!! Улыбка

(Отредактировано автором: 23 Октября, 2010 - 10:24:22)



-----
Не откладывай работу на завтра, от которой можно вообще отказаться
 
 Top
JustUserR
Отправлено: 23 Октября, 2010 - 12:59:15
Post Id



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


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




ADIOS Использование пользовательской формы элементы которой представлены в виде массива однородных элементов впоследствии обрабатываемом на стороне PHP-скрипта может представлять некоторые проблемы с безопсностью - дело в том что при подаче соответствующего запроса PHP-скрипту потенциаильго возможгно создать собственную форму с чрезмерным количетсвом полей запроса - и в случае если полный массив впоследствии применяется к примеру для генерации SQL-запроса то это может привести к перегрузке сервера


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB