Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Перебор значений checkbox
 
 автор: $mival   (12.03.2006 в 19:32)   письмо автору
 
 

в пхп пришли POSTом значения чекбоксов (либо "on" либо ничего). надо в цикле проверить те боксы , которые включены. названия соответствующих переменных ch1, ch2 и т.д. как быть в этом случае!?

   
 
 автор: cheops   (12.03.2006 в 19:57)   письмо автору
 
   для: $mival   (12.03.2006 в 19:32)
 

Просто нужно пройтись тем же циклом, которым формируется HTML-форма, например, так как это описывается в теме по ссылке (в середине) http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=427.

   
 
 автор: cyxapuk   (12.03.2006 в 21:08)   письмо автору
 
   для: $mival   (12.03.2006 в 19:32)
 

в чем проблема ?

например
<input name="ch1" type="checkbox" value="" />
<input name="ch2" type="checkbox" value="" />
<input name="ch3" type="checkbox" value="" />

______________________________---

explode($_POST);

if($ch1) {

}
и тп ....

можно и через isset .... это без разницы ...

если уж очень хочется можно и так ;)

$value = ($ch1 == 'true') ? $ch : false;

   
 
 автор: $mival   (13.03.2006 в 15:20)   письмо автору
 
   для: cyxapuk   (12.03.2006 в 21:08)
 

прикол в том, что чекБоксов может быть много, вплоть до нескольких сотен!

   
 
 автор: XPraptor   (13.03.2006 в 15:32)   письмо автору
 
   для: $mival   (13.03.2006 в 15:20)
 

Лучше всегда чекбоксы и радиобатоны группировать в массивы с одним именем, тогда и проверять можно циклом.
А когда имена разные, то код немного медленный будет из-за необходимости парсить строку с именем чека.

Если имена разные, но префикс один (ch1 ch2 ch3...)
foreach($_POST as $key=>$val){
if(substr($key, 0, 2) == "ch"){
//это чек делаем с его $val что хотим
}
}

Если имя одно, организовано в массив (ch[1] ch[2] ch[3]...)
foreach($_POST["ch"] as $val){
//это всегда чек делаем с его $val что хотим
}

   
 
 автор: Shorr Kan   (13.03.2006 в 15:34)   письмо автору
 
   для: $mival   (12.03.2006 в 19:32)
 


<?
if(isset($_POST['vals'])){
for(
$i=0;$i<500;$i++){

 
$val='ch'.$i;
 
$box=$_POST[$val];
 if(isset(
$box)){ print "выполняем работу с чекбоксом ".$val.". значение - ".$box; }

 }
//for $i
}//if isset vals
?>

   
 
 автор: Trianon   (13.03.2006 в 15:46)   письмо автору
 
   для: $mival   (12.03.2006 в 19:32)
 

<?php
    
foreach($_POST[] as $key => $val)
    {
        if(
preg_match("/^ch([\d]+)$/"$key$num))
        {
            
$key intval($num[1]);
            echo 
"checkbox $key is $val<br>";
        }
    }
?>

Я понимаю, конечно, это преступление preg_match'ем имена полей фильтровать.
Но зато пишется дешево и сердито.

   
 
 автор: $mival   (13.03.2006 в 18:05)   письмо автору
 
   для: Trianon   (13.03.2006 в 15:46)
 

сразу как написал предпоследнюю месагу догадался сделать косвенный перебор массива foreach и использовал в нём ereg_replace!!
всем спасибо за идеи))

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования