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

Форум PHP

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

 

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

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

тема: Не правильно перебираются значения в checkbox!
 
 автор: Vados   (08.09.2007 в 13:16)   письмо автору
 
 

Всем привет!

Необходимо разобрать строку и потом в зависимости от того, что мы заносим в переменную сравнивать, если то, что хранится в переменной равно условию, тогда присваиваем, ну и потом выводим:


$i = 1;
$j = 0;
while ($i <= 10)
{
    $industry[$i] = substr($data[0][0]['industry'], $j, 1);
    
    switch ($industry[$i])
    {
        case "V":
            $industry[1] = $industry[$i];
            break;
        case "C":
            $industry[2] = $industry[$i];
            break;
        case "I":
            $industry[3] = $industry[$i];
            break;
        case "R":
            $industry[4] = $industry[$i];
            break;
        case "W":
            $industry[5] = $industry[$i];
            break;
        case "L":
            $industry[6] = $industry[$i];
            break;
        case "N":
            $industry[7] = $industry[$i];
            break;
        case "M":
            $industry[8] = $industry[$i];
            break;
        case "A":
            $industry[9] = $industry[$i];
            break;
        case "O":
            $industry[10] = $industry[$i];
            break;
    }
    
    $i++;
    $j = $j + 2;
}


Потом заполняем checkbox:


                                <input type='checkbox' name='industry[1]'   value='V' <?php if($industry[1] == "V") echo "checked"?> class='industry'> VoIP<br />
                <input type='checkbox' name='industry[2]'   value='C' <?php if($industry[2] == "C") echo "checked"?> class='industry'> CLEC<br />
                <input type='checkbox' name='industry[3]'   value='I' <?php if($industry[3] == "I") echo "checked"?> class='industry'> ILEC<br />
                <input type='checkbox' name='industry[4]'   value='R' <?php if($industry[4] == "R") echo "checked"?> class='industry'> RBOC<br />
                <input type='checkbox' name='industry[5]'   value='W' <?php if($industry[5] == "W") echo "checked"?> class='industry'> Wireless<br />
                <input type='checkbox' name='industry[6]'   value='L' <?php if($industry[6] == "L") echo "checked"?> class='industry'> Long-Haul<br />
                <input type='checkbox' name='industry[7]'   value='N' <?php if($industry[7] == "N") echo "checked"?> class='industry'> International<br />
                <input type='checkbox' name='industry[8]'   value='M' <?php if($industry[8] == "M") echo "checked"?> class='industry'> Minutes<br />
                <input type='checkbox' name='industry[9]'   value='A' <?php if($industry[9] == "A") echo "checked"?> class='industry'> Carrier Hotel<br />
                <input type='checkbox' name='industry[10]'  value='O' <?php if($industry[10] == "O") echo "checked"?> class='industry'> Other<br />



Но в БД, к примеру, если у меня хранится запись в виде: V|C|A|O, то при разборе строки, но почему в checkbox устанавливаются только первые две переменные? И то, только в том случае, если они идут по порядку, который установлен в value в checkbox.

Как с этим бороться?

   
 
 автор: Vados   (08.09.2007 в 15:32)   письмо автору
 
   для: Vados   (08.09.2007 в 13:16)
 

Кто-нибудь реально может помочь?!

   
 
 автор: sim5   (08.09.2007 в 15:36)   письмо автору
 
   для: Vados   (08.09.2007 в 15:32)
 

А можно встречный вопрос - зачем у вас switch?

   
 
 автор: bronenos   (08.09.2007 в 15:40)   письмо автору
 
   для: sim5   (08.09.2007 в 15:36)
 

+ еще один - вы не умеете пользоваться for или для понта сделали через while?

   
 
 автор: Trianon   (08.09.2007 в 16:10)   письмо автору
 
   для: sim5   (08.09.2007 в 15:36)
 

Я бы спросил - зачем цикл...

   
 
 автор: sim5   (08.09.2007 в 16:15)   письмо автору
 
   для: Trianon   (08.09.2007 в 16:10)
 

А если точнее - зачем все это до...

   
 
 автор: Trianon   (08.09.2007 в 16:28)   письмо автору
 
   для: sim5   (08.09.2007 в 16:15)
 

Ну зачем, пожалуй, понятно... непонятно зачем строка в БД вертикальной чертой разбита.

   
 
 автор: sim5   (08.09.2007 в 16:31)   письмо автору
 
   для: Trianon   (08.09.2007 в 16:28)
 

Не знаю, наверное еще explode забыто, а мне ничего не понятно, ну тогда вам и карты в руки :)

   
 
 автор: Trianon   (08.09.2007 в 16:37)   письмо автору
 
   для: sim5   (08.09.2007 в 16:31)
 

Символ разделителя (и explode соответственно) требуется тогда, когда элементы могут быть переменной длины:
sim5|Trianon|Vados
Vados|sim5

А для отдельных буковок
sTV
Vs

никакие палки не нужны.

   
 
 автор: sim5   (08.09.2007 в 16:40)   письмо автору
 
   для: Trianon   (08.09.2007 в 16:37)
 

Я не про палки - не пойму, нафига нужна первая часть кода вообще, для чего, если потом разложили то что есть в базе (с палками, без палок, это уже второй вопрос), ради сортировки? Вот чего хотел автор добиться, я так и не понял :) Наверное я тупой :))

   
 
 автор: Trianon   (08.09.2007 в 16:42)   письмо автору
 
   для: sim5   (08.09.2007 в 16:40)
 

Он хочет, чтоб форма с чекбоксами принимала вид, соответствующий множеству (набору флажков) хранимому в поле таблицы БД. А мы тут лясы точим.
А потом он наверное будет хотеть, чтоб поле с набором в строке таблицы БД принимало значение соответствующее множеству расставленных в форме флажков.

   
 
 автор: sim5   (08.09.2007 в 16:44)   письмо автору
 
   для: Trianon   (08.09.2007 в 16:42)
 

Ну хочет, тогда молчу...

   
 
 автор: Trianon   (08.09.2007 в 17:04)   письмо автору
 
   для: sim5   (08.09.2007 в 16:44)
 

<?php
$letters 
= array('V' => 'VoIP''C' =>'CLEC','I' => 'ILEC'
        
,'R' => 'RBOC','W' => 'Wireless','L' => 'Long-Haul'
        
,'N' => 'International' ,'M' => 'Minutes'
        
,'A' => 'Carrier Hotel','O' => 'Other');


$field mysql_result(mysql_query("SELECT lset FROM tbl WHERE id = $id"), 0)
$r str_split($field); 
$data = array();
foreach(
$r as $l$data[$l] = 1;
unset(
$data['|']);

foreach (
$letters as $key => $label)
   echo 
"<input type='checkbox' name='industry[]' value='$key' "
       
. (empty($data[$key])?'':'checked') . " class='industry'> $label<br />";



А обработку чекбоксов писать не буду из принципа.
Если (пока) человек не перепишет свой код из расчета, что режима регистр глобалс нету. И больше никогда не будет.

   
Rambler's Top100
вверх

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