Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Многострочное поле выбора multiple


Автор: bahtiyar 26.11.2008, 08:24
Мне нужно использовать такое поле
Код
<form action="new_res.php" method="post">
<select name="sel" size="3" multiple>
  <option value="value1">Item1</option>
  <option value="value2">Item2</option>
  <option value="value3">Item3</option>
</select>
<input type="submit" value="Send">


в скрипте обработчике пытаюсь вывести выбранные пункты

Код
<?
echo $_POST['sel']."<br>";
?>


не получается, выводит только последний выбранный пункт

если передаю форму через GET в строке браузера можно прочитать
Код
http://test.kz/new_res.php?sel=value2&sel=value3
 

а мне нужно передовать через POST. Что делать?

Автор: Satana 26.11.2008, 09:12
bahtiyar, попробуйте вывести у себя не как
Код

<?
echo $_POST['sel']."<br>";
?>

а вот так:
Код

<?
var_dump($_POST['sel']);
?>

такой код должен вывести массив который в переменной sel.

Автор: skyboy 26.11.2008, 13:13
Satana, и чего? у него в $_POST['sel'] не массив, а один-единственный элемент. иначе echo вывело бы не один элемент массива(какое своеволие!), а просто слово "Array".
Проблема в том, что по строке: 
Цитата(bahtiyar @  26.11.2008,  07:24 Найти цитируемый пост)
sel=value2&sel=value3
 сначала будет создана переменна $_GET['sel'] со значением value2. А потом переменная $_GET['sel'] будет "перетерта" значением value3.
Чтоб работало, как ты хочешь, bahtiyar, надо объявить имя для контрола вида "имя[]" - тогда каждый новый элемент будет становиться новым элементом массива.
т.е. в твоем случае не 
Цитата(bahtiyar @  26.11.2008,  07:24 Найти цитируемый пост)
<select name="sel" size="3" multiple>
, а 
Код

<select name="sel[]" size="3" multiple>

тогда значения станут передаваться в виде "sel=value2&sel=value3", что эквивалентно РНР-коду:
Код

$_GET['sel']= array();
$_GET['sel'][]= 'value2';
$_GET['sel'][]= 'value3';

и у тебя в $_GET['sel'] станет массив из двух элементов.

Добавлено через 1 минуту и 27 секунд
Цитата(skyboy @  26.11.2008,  12:13 Найти цитируемый пост)
тогда значения станут передаваться в виде "sel=value2&sel=value3", что эквивалентно РНР-коду

должно быть написано "sel[]=value2&sel[]=value3"

Автор: bahtiyar 27.11.2008, 07:15
пробовал как написал Satana 
при выборе пунктов 2 и 3 выводилось только
Код

string(6) "value3"


Большое спасибо skyboy, все сделал как вы написали - все работает!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)