Мультиселект в PHP. Массив select-ов

Мультиселект в PHP. Массив select-ов

Селект (select) - это выпадающий список в html форме, который способен предоставить один или несколько вариантов для выбора пользователю. Чаще всего используется обычный select, где можно выбрать только 1 вариант из списка. Но бывает необходимо предоставить множественный выбор. Разберем, как это сделать.

Теория select-ов

  • Обычный select задается так: <select name="new"><option value="Первый">Первый</option><option value="Второй">Второй</option></select>
  • Чтобы какой-то пункт был выбран по умолчанию, в его option надо поставить атрибут selected="selected". Если это мультиселект и нужно выбрать несколько пунктов, то на каждый ставить этот атрибут.
  • Чтобы селект обладал множественным выбором добавьте в select атрибут multiple. Сам же выбор пунктов будет осуществляться при зажатой клавиши Ctrl.

Теперь рассмотрим пример. Пускай у нас будет мультиселект в форме. Мы должны не только определить, какие из пунктов были выбраны пользователем при POST отправке, но и выделить их после отправки. Для этого нам придется на каждый option использовать цикл for, в котором мы будем сравнивать каждое значение с отправленным.

<form action="" method="post">
<select multiple name="newsel[]" >';
<option value="Первый" <?php $pizza = $_POST["newsel"]; for($a = 0; $a<count($pizza); $a++) {if($pizza[$a] == 'Первый') echo ' selected="selected" ';}?> >Первый</option>';
<option value="Второй" <?php $pizza = $_POST["newsel"]; for($a = 0; $a<count($pizza); $a++) {if($pizza[$a] == 'Второй') echo ' selected="selected" ';}?> >Второй</option>';
<option value="Третий" <?php $pizza = $_POST["newsel"]; for($a = 0; $a<count($pizza); $a++) {if($pizza[$a] == 'Третий') echo ' selected="selected" ';}?> >Третий</option>';
</select><br />
<input type="submit" value="Подтвердить" name="butnewsel">
</form>

Здесь мы задали name мультиселекта в виде массива. Останется только создать принимающий php скрипт, который сможет через цикл понять, какой из option-ов был отправлен.

<?php
if (isset($_POST['butnewsel'])) {
$newsel = $_POST["newsel"];
$newselthis = '';
for($a = 0; $a<count($newsel); $a++) {
$newselthis .= $newsel[$a].'##';
}
echo 'Выбраны: '.$newselthis; }
?>

В for цикле, в переменную $newselthis записываем все выбранные value option-ов в строку, через ## Например: Первый##Третий##.

Вот таким образом, можно работать с мультиселектами в php. Неудобным остается использование циклов for в каждом option-не. Но если вам не нужно отмечать после отправки формы, какие пункты были выбраны, то данный код можно убрать. Если вы работаете с БД, то весь процесс можно проверок и циклов можно упростить.

| | Мультиселект в PHP. Массив select-ов | Селект (select) - это выпадающий список в html форме, который способен предоставить один или несколько вариантов для выбора пользователю. Чаще всего и | http://blogprogram.ru/wp-content/uploads/2018/01/873-131x131.jpg