Главная страница
    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.48 MB
Время: 0.013 c
2-1149355680
Ford
2006-06-03 21:28
2006.06.25
Sin


15-1149065444
tesseract
2006-05-31 12:50
2006.06.25
работа системного администратора


2-1149091240
valent
2006-05-31 20:00
2006.06.25
Поиск файла в папке


15-1149096977
Nous Mellon_
2006-05-31 21:36
2006.06.25
Юр. вопрос


1-1147934077
Damager
2006-05-18 10:34
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский