PHP не преобразует автоматически информацию о нескольких флажках с одним и тем же именем в массив, как это делает ASP, что доставляет некоторые неудобства в использовании. Но решение все же есть: использовать JavaScript для предварительной обработки. Несколько флажков с одинаковыми именами по-прежнему существуют в виде массивов в JavaScript, поэтому перед отправкой формы вы можете использовать JavaScript, чтобы объединить информацию в флажках в массив символов и назначить ее скрытым элементам в форме, а затем используйте PHP. Функция разнесения анализирует этот массив, чтобы можно было передать информацию о флажке. Ниже приведены примеры.
Предположим, есть такая форма:
<form name="form1" id="form1" Method="post" action="myphp.php" onSubmit="return Checker()">
<тип ввода="флажок" имя="элемент" значение="1">1<br>
<тип ввода="флажок" имя="элемент" значение="2">2<br>
<тип ввода="флажок" имя="элемент" значение="3">3<br>
<тип ввода="флажок" имя="элемент" значение="4">4<br>
<тип ввода="скрытое" имя="элементы" значение="">
<тип ввода="отправить" значение="Отправить">
</form>
Эта форма имеет четыре флажка, имена которых являются элементами. Когда пользователь нажимает кнопку «Отправить», вызывается функция Checker, и если Checker возвращает true, форма будет отправлена. форма не будет отправлена. Функция Checker — это функция предварительной обработки, которую мы хотим написать. Добавьте следующий код JavaScript в раздел заголовка HTML:
<script Language="javascript">
<!--
функция Проверка()
{
form1.items.value = "";
if ( !form1.item.length ) // Существует только один флажок, form1.item.length = не определено
{
если (form1.items.checked)
форма1.элементы.значение = форма1.элемент.значение;
}
еще
{
для (я = 0; я <form1.item.length; я++)
{
if (form1.item(i).checked) // В флажке установлен флажок {
форма1.элементы.значение = форма1.элемент(i).значение;
for ( j = я + 1 ; j < form1.item.length ; j++ )
{
если (form1.item(j).проверено)
{
form1.items.value += " "; //Используйте пробелы в качестве разделителей form1.items.value += form1.item(j).value;
}
}
перерыв;
}
}
}
вернуть истину;
}
-->
</script>
Используйте
этот оператор в myphp.php:
$items = взрыв(" ", $HTTP_POST_VARS["items"]);
Эти параметры можно разделить на массивы. Следует отметить, что значение в опции не может содержать разделителей (в данном случае пробелов).