Консультация № 55425
14.09.2006, 13:18
0.00 руб.
0 5 5
Извините, неточно сформулировал вопрос. Расскажите, как в пхп определить помеченные чекбоксы, при условии, что этих самых чекбоксов не фиксированное количество, которое может принимать довольно большие значения. Заранее спасибо за ответы.

Обсуждение

Неизвестный
14.09.2006, 13:35
общий
это ответ
Здравствуйте, Romooseek!

Тогда так: присваиваешь каждому checkbox‘у имя-массив, например name="checks[]" и задаешь значение value="123", где 123 - номер checkbox‘а. Тогда проверка того, что chekbox 123 помечен выглядит так:

Приложение:
if (isset($_REQUEST[‘checks‘][‘123‘])) {...//checkbox 123 помечен}
Неизвестный
14.09.2006, 13:41
общий
это ответ
Здравствуйте, Romooseek!
А можно так.
Где-то должно храниться количество этих чекбоксов (а то как программа определит их количество?), а после присваиваем чекбоксам имена "check1", "check2", "check3"...
После устраиваем цикл, примерно такой:

<?

// Допустим, что чекбоксов 4, количество надо
// вытаскивать или из базы данных или из текстового файла.
// Метод -- POST
// И пусть ещё, если чекбокс отбечен, то выводится какой-то текст из файла.

for ($q = 1; $q <= 4; $q++)
{if ($HTTP_POST_VARS[‘check‘ . $q] == true)
{require(‘file‘ . $q . ‘.txt‘);};};

?>
Неизвестный
14.09.2006, 13:51
общий
это ответ
Здравствуйте, Romooseek!
Дайте им всем имя name="cb_arr[]" и value , по которому вы сможете их идентифицировать (например уникальное поле из базы данных или на основании чего там они у вас формируются). Тогда в PHP Вы получите
$cb_arr=$_REQUEST["cb_arr"];
foreach($cb_arr as $cb_val){
echo $cb_val." отмечен";
};
Неизвестный
14.09.2006, 14:18
общий
это ответ
Здравствуйте, Romooseek!
Я бы предложил такой вариант

Приложение:
<form><input type=checkbox name="check[0]" value="0"> 0
<input type=checkbox name="check[1]" value="1"> 1
<input type=checkbox name="check[2]" value="2"> 2
<input type=checkbox name="check[3]" value="3"> 3
<input type=submit></form><?phpif (is_array($_REQUEST[‘check‘])) foreach($_REQUEST[‘check‘] as $key => $value) echo "Checkbox[".$key."] == ".$value."
";?>
Неизвестный
14.09.2006, 15:39
общий
это ответ
Здравствуйте, Romooseek!
Посмотрите приложение, там достаточно всё понятно.
Можно ещё все checkbox`ы собрать в отдельный массив, для этого надо имена checkbox`ов поменять на
NAME=‘array[1] ‘
NAME=‘array[2] ‘
NAME=‘array[3] ‘
...........
NAME=‘array[133] ‘

и соответственно просмотреть всё в цикле

foreach($_POST[‘array‘] as $key=>$value)
{
print "Вы отметили кнопку <b>"$key"</b>, её значение равно - <b>"$value"</b>
";
}


Приложение:
<?if($_POST){foreach($_POST as $key=>$value){print "Вы отметили кнопку <b>"$key"</b>, её значение равно - <b>"$value"</b>
";}}?><form method=post><INPUT TYPE=checkbox NAME=1 VALUE="один"> 1
<INPUT TYPE=checkbox NAME=2 VALUE="два"> 2
<INPUT TYPE=checkbox NAME=3 VALUE="три"> 3
<INPUT TYPE=checkbox NAME=4 VALUE="четыре"> 4
<INPUT TYPE=radio NAME=Question VALUE="Yes" CHECKED> Да<INPUT TYPE=radio NAME=Question VALUE="No"> Нет<INPUT TYPE=radio NAME=Question VALUE="Possible"> Возможно
<INPUT TYPE=radio NAME=5 VALUE="пять" > 5
<INPUT TYPE=radio NAME=6 VALUE="шесть"> 6
<INPUT TYPE=radio NAME=7 VALUE="семь"> 7
<input type=submit>
Форма ответа