Forum Webscript.Ru

Программирование => PHP => Тема начата: vol от 10 Декабря 2003, 11:13:21

Название: приём полей формы (метод POST) с одинаковым именем через $HTTP_POST_VARS
Отправлено: vol от 10 Декабря 2003, 11:13:21
почему-то вместо множества
ID1=значение1
ID1=значение2
ID1=значение3
удаётся принять только первое из значений


передача

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


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


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

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

варианты давать разные имена (типа 63_1,63_2) не предлагать
Название: приём полей формы (метод POST) с одинаковым именем через $HTTP_POST_VARS
Отправлено: tserbis от 10 Декабря 2003, 11:28:54
input type=checkbox name=arrrrrr[]
input type=checkbox name=arrrrrr[]
...
или
input type=checkbox name=arrrrrr[4345]
input type=checkbox name=arrrrrr[34534]
...
Название: приём полей формы (метод POST) с одинаковым именем через $HTTP_POST_VARS
Отправлено: Меняздесьдавнонет от 10 Декабря 2003, 11:31:02
Цитировать
варианты давать разные имена (типа 63_1,63_2) не предлагать

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

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

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

Если ты напишешь не в форме улдьтиматума - "не предлагать", а попытаешься собрать весь свой словарный запас в кулак, и описать - зачем тебе это понадобилось, то мы тебе с удовольствием расскажем, как сделать по-человечески ;-)
Название: приём полей формы (метод POST) с одинаковым именем через $HTTP_POST_VARS
Отправлено: tserbis от 10 Декабря 2003, 11:37:31
RomikChef, прости, я уже проговорился :-)
vol, ну действительно - как ты хотел под одним именем держать несколько сущностей? Как к ним отдельно обращаться?
Название: приём полей формы (метод POST) с одинаковым именем через $HTTP_POST_VARS
Отправлено: Меняздесьдавнонет от 10 Декабря 2003, 11:50:11
Я к чему?
Если смотреть с точки зрения массива $_POST, то принципиальной разницы между переменными
$_POST[\'var\'][$i] и $_POST[\'var\'.$i] - нету.
И поэтому я полагаю, что твое решение попадает под поставленные ограничения.
Название: приём полей формы (метод POST) с одинаковым именем через $HTTP_POST_VARS
Отправлено: vol от 10 Декабря 2003, 11:52:49
спасибо за совет

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

передача

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


приём
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;}
}

но это не важно
Название: приём полей формы (метод POST) с одинаковым именем через $HTTP_POST_VARS
Отправлено: Меняздесьдавнонет от 10 Декабря 2003, 11:55:51
а можно ссылочку на тот мануал? На место, где говорится, что значения передаются именно так?
Название: приём полей формы (метод POST) с одинаковым именем через $HTTP_POST_VARS
Отправлено: Меняздесьдавнонет от 10 Декабря 2003, 11:58:54
по поводу же разницы между формой и скриптом, я тебе поясню.

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

И если имена полей сделать одинаковыми, то это будет равнозначно присвоению одной переменной нескольких значений.
Название: приём полей формы (метод POST) с одинаковым именем через $HTTP_POST_VARS
Отправлено: vol от 10 Декабря 2003, 12:07:48
RomikChef
у меня книга (hardcopy) "справочник вебмастера" Стивен Спэйнауэр, Роберт Экштейн
часть 1. HTML
глава 6. Формы
тег INPUT
Флажки (стр. 110)
дословно
При установке для нескольких флажков одинакового значения атрибута name создаётся группа флажков. Броузер автоматически считывает значения группы флажков и передаёт серверу список значений установленных флажков, разделённых запятыми, что значительно облегчает обработку формы на стороне сервера.
Название: приём полей формы (метод POST) с одинаковым именем через $HTTP_POST_VARS
Отправлено: vol от 10 Декабря 2003, 12:14:24
по поводу
Цитировать
RomikChef:
Но в скрипт передается не форма. А строка.
вида pole1=a&pole2=b...
Сделай своей форме метод GET и убедись.


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

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

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

....
но хотелось именно принять как в мануале написано
Название: приём полей формы (метод POST) с одинаковым именем через $HTTP_POST_VARS
Отправлено: Меняздесьдавнонет от 10 Декабря 2003, 12:14:34
понятно.
больше не называй это мануалом.
Название: приём полей формы (метод POST) с одинаковым именем через $HTTP_POST_VARS
Отправлено: Меняздесьдавнонет от 10 Декабря 2003, 17:39:22
vol
я тебе не для того метод ГЕТ привел, чтобы ты мне про квери стринг рассказывал.
А ДЛЯ НАГЛЯДНОСТИ!
Речь идет не о тебе. Не о том, как ТЫ квери стринг парсишь.
а о том, как ПХП их парсить. Ну неужели так трудно сообразить?

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


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

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

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