Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.017 c
3-1146588999
olevacho_
2006-05-02 20:56
2006.06.25
Надежность Absolute Database Personal


1-1147685021
QuickFinder
2006-05-15 13:23
2006.06.25
Дерево данных


15-1148903748
stone
2006-05-29 15:55
2006.06.25
"Разводы" в маршрутках


6-1140017279
Evgenij_
2006-02-15 18:27
2006.06.25
Мак адрес


2-1149612650
qazwsx
2006-06-06 20:50
2006.06.25
Как получать параметры переданные через командную строку?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский