Автор Тема: приём полей формы (метод POST) с одинаковым именем через $HTTP_POST_VARS  (Прочитано 4127 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн vol

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
почему-то вместо множества
ID1=значение1
ID1=значение2
ID1=значение3
удаётся принять только первое из значений


передача

Серый
Титановый
Черный


приём
while ($tmp=each($HTTP_POST_VARS))
{
print "$tmp[0]=$tmp[1]
";
}


результат при пометке всех трёх чекбоксов
63=404

как правильно принять все помеченные чекбоксы с одинаковым именем?

варианты давать разные имена (типа 63_1,63_2) не предлагать

Оффлайн tserbis

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 496
  • +0/-0
  • 0
    • Просмотр профиля
input type=checkbox name=arrrrrr[]
input type=checkbox name=arrrrrr[]
...
или
input type=checkbox name=arrrrrr[4345]
input type=checkbox name=arrrrrr[34534]
...

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Цитировать
варианты давать разные имена (типа 63_1,63_2) не предлагать

Какие мы грозные. А если предложим? Обидишься и уйдешь?
Ааааа! Я знаю. Ламерами обзовешь.
Ну, нам не привыкать.
Тут таких, как ты, толпы ходят.

Итак, переходим к твоей задаче.
Зачем усложнять?
возьми, напиши в своем скрипте
$id1=1;
$id1=2;
$id1=3;

И давай - бодайся с системой, в форум напиши - а почему это у тебя одна и та же переменная не хочет содержать десяток значений???

Если ты напишешь не в форме улдьтиматума - "не предлагать", а попытаешься собрать весь свой словарный запас в кулак, и описать - зачем тебе это понадобилось, то мы тебе с удовольствием расскажем, как сделать по-человечески ;-)

Оффлайн tserbis

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 496
  • +0/-0
  • 0
    • Просмотр профиля
RomikChef, прости, я уже проговорился :-)
vol, ну действительно - как ты хотел под одним именем держать несколько сущностей? Как к ним отдельно обращаться?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Я к чему?
Если смотреть с точки зрения массива $_POST, то принципиальной разницы между переменными
$_POST[\'var\'][$i] и $_POST[\'var\'.$i] - нету.
И поэтому я полагаю, что твое решение попадает под поставленные ограничения.

Оффлайн vol

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
спасибо за совет

если кому будет интересно, то решил следующим образом

передача

Серый
Титановый
Черный


приём
while ($tmp=each($HTTP_POST_VARS))
{
print "$tmp[0]=";
foreach($tmp[1] as $tmp2)
{
print "$tmp2,";
}
print "
";
}


RomikChef
вообще-то меня смутила фраза в мануале по методу POST, что в случае одинаковых имён полей форма (автоматически) будет передавать их в виде "ID=значение1,значение2,значение3"
вот собственно такую строку я и хотел принять.
может мануал кривой...

Цитировать
tserbis:
как ты хотел под одним именем держать несколько сущностей? Как к ним отдельно обращаться?

а обращаться к ним не проблема.
например так (на клиенте)


var controlIndex;
var element;
var numberOfControls=document.forms[0].length;
for (controlIndex=0;controlIndex{
element=document.forms[0][controlIndex];
if (element.type=="checkbox") {element.checked=true;}
}

но это не важно

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
а можно ссылочку на тот мануал? На место, где говорится, что значения передаются именно так?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
по поводу же разницы между формой и скриптом, я тебе поясню.

На клиенте есть форма. с элементами.
которые, дествительно, можно перебрать.
Но в скрипт передается не форма. А строка.
вида pole1=a&pole2=b...
Сделай своей форме метод GET и убедись.

И если имена полей сделать одинаковыми, то это будет равнозначно присвоению одной переменной нескольких значений.

Оффлайн vol

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
RomikChef
у меня книга (hardcopy) "справочник вебмастера" Стивен Спэйнауэр, Роберт Экштейн
часть 1. HTML
глава 6. Формы
тег INPUT
Флажки (стр. 110)
дословно
При установке для нескольких флажков одинакового значения атрибута name создаётся группа флажков. Броузер автоматически считывает значения группы флажков и передаёт серверу список значений установленных флажков, разделённых запятыми, что значительно облегчает обработку формы на стороне сервера.

Оффлайн vol

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 4
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
по поводу
Цитировать
RomikChef:
Но в скрипт передается не форма. А строка.
вида pole1=a&pole2=b...
Сделай своей форме метод GET и убедись.


знаешь, тоже никаких проблем
ID1=значение1&ID1=значение2&ID1=значение3
потом
через

$tmparr=explode("&",$QUERY_STRING);

и через foreach я их принимаю и обрабатываю

....
но хотелось именно принять как в мануале написано

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
понятно.
больше не называй это мануалом.

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
vol
я тебе не для того метод ГЕТ привел, чтобы ты мне про квери стринг рассказывал.
А ДЛЯ НАГЛЯДНОСТИ!
Речь идет не о тебе. Не о том, как ТЫ квери стринг парсишь.
а о том, как ПХП их парсить. Ну неужели так трудно сообразить?

если говоришь пхпе заранее - МАССИВ ЭТО, то он и положит в массив.
Если несказать - то он тупо сложит в одну переменную.


Все просто, как 2х2=4.

Ты вообще хотя бы микроскопическим абстрактным мышлением владеешь? можешь представить, как ПХП твою строчку обработает?
Или так и будешь, как деревенщина, глаза лупить - "через foreach я их принимаю. А шо такого?".

В книжке у тебя написан бред. Выкини ее на помойку.
Возможно, это разделение запятыми делается на клиенте, яваскриптом. но к РНР-то это не имеет никакого отношения. Как хочешь свои данные на клиенте обрабатывай - хоть через запятую, хоть буквой зю. Но переменные пхп-то тут при чем?

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28