Форум: "Прочее";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
ВнизОчередной вопрос по PHP Найти похожие ветки
← →
LexxX © (2006-05-31 20:08) [0]Мне необходимо организовать в ПХП обработку множественного выбора на веб-форме.
Выбор организую при помощи тега<select multiply>
.
Поиск в яндексе дал несколько битых ссылок. :((
Не подскажите как можно реализовать обработку множественного выбора на ПХП?
← →
fedotawa (2006-05-31 20:22) [1]Цитата из учебника Котерова
Трансляция списков
Механизм трансляции полей формы в PHP работает приемлемо, когда среди них нет
полей с одинаковыми именами. Если же таковые встречаются, то в переменную, яс-
ное дело, записываются только данные последнего встретившегося поля. Это доволь-
но-таки неудобно при работе, например, со списком множественного выбора
<select multiple>:
<select name=Sel multiple>
<option>First
<option>Second
<option>Third
</select>
В таком списке вы можете выбрать (подсветить) не одну, а сразу несколько строчек,
используя клавишу <Ctrl> и щелкая по ним кнопкой мыши. Пусть мы выбрали First
и Third. Тогда после отправки формы сценарию придет строка параметров
Sel=First&Sel=Third, и в переменной $Sel окажется, конечно, только Third.
Значит ли это, что первый пункт потерялся и механизм трансляции в PHP работает
некорректно? Оказывается, нет, и для решения подобных проблем в PHP предусмот-
рена возможность давать имена полям формы в виде имени массива с индексами:
<select name="Sel[]" multiple>
<option>First
<option>Second
<option>Third
</select>
Теперь сценарию придет строка Sel[]=First&Sel[]=Third, интерпретатор обна-
ружит, что мы хотим создать "автомассив" (то есть массив, который не содержит
пропусков, и у которого индексация начинается с нуля), и, действительно, создаст
переменную $Sel типа массив, содержимое которого следующее:
array(0=>"First", 1=>"Third").
<offtop>
А как листинги оформлять? ^_^
</offtop>
← →
palva © (2006-05-31 20:23) [2]Может быть не multiply а multiple?
← →
LexxX © (2006-05-31 20:30) [3]Всё, нашел ответ на сайте http://www.onlinetools.org/tricks/using_multiple_select.php
HTML
<form action="<?=$_SERVER["PHP_SELF"]?>" method="post">
<select name="test[]" multiple="multiple">
<option value="one">one</option>
<option value="two">two</option>
<option value="three">three</option>
<option value="four">four</option>
<option value="five">five</option>
</select>
<input type="submit" value="Send" />
</form>
PHP
<?php
$test=$_POST["test"];
if ($test){
foreach ($test as $t){echo "You selected ",$t,"<br />";}
}
?>
← →
LexxX © (2006-05-31 20:31) [4]fedotawa (31.05.06 20:22) [1]
Спасибо!
← →
palva © (2006-05-31 20:38) [5]fedotawa (31.05.06 20:22) [1]
Фигасе люди пишут! Неужели такое может работать?
← →
fedotawa (2006-05-31 21:05) [6]palva © (31.05.06 20:38) [5]
А что не так? )
← →
palva © (2006-05-31 21:58) [7]> А что не так? )
...и в переменной $Sel окажется, конечно, только Third.
Вот ЭТО вызвало у меня недоверие. Я полагал, что в переменной $Sel окажется массив из двух элементов. У меня нет возможности сейчас это проверить, но ответ найденный LexxX © (31.05.06 20:30) [3] основан именно на этой гипотезе. Но больше всего меня удивила возможность заполнение автомассива прямо из переменных формы. Сейчас я нашел это место у Котерова "и не могу, читаю до конца" (c) Высоцкий.
Век живи, век учись. (Дураком помрешь.)
← →
McSimm © (2006-05-31 23:25) [8]
> Вот ЭТО вызвало у меня недоверие.
напрасно. Максимум к чему можно придраться - из спецификации не совсем ясно какое именно из значений окажется в переменной.
> ответ найденный LexxX © основан именно на этой гипотезе.
внимательнее если посмотреть:
> name="test[]"
← →
vidiv © (2006-06-01 01:43) [9]
> Максимум к чему можно придраться - из спецификации не совсем
> ясно какое именно из значений окажется в переменной.
в смысле?
← →
palva © (2006-06-01 09:01) [10]>внимательнее если посмотреть:
>> name="test[]"
И в самом деле.
← →
McSimm_ (2006-06-01 10:42) [11]
> в смысле?
Да, неважно. И смысла особого нет, это просто если уж вдруг захочется придраться. :)
Очередность обработки внешних данных и заполнения аутсайд-переменных в документации обойдена, полагаться на "очевидность" или контрольную проверку - привычка весьма чреватая, об эту привычку совсем недолго и обжечься, поэтому фразу
> ...и в переменной $Sel окажется, конечно, только Third.
строго говоря правильнее было бы заменить на
> ...и в переменной $Sel окажется, конечно, только одно из значений.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c