проблема с выводом массива checkbox-ов в одном поле mysql

wathosar

Новичок
проблема с выводом массива checkbox-ов в одном поле mysql

Доброго времени суток, форумчане!

Помогите пожалуйста разобраться...

У меня хранятся номера активных чекбоксов в одном поля мускуля через запятую (1,6,7,8 и т.д.).
при выводе в разметку хтмл включенных и нет чекбоксов возникает такая ошибка: при натыкании на первый выключенный чекбокс остальные включенные не выводятся... вот код:

<!--
<form name="" action="" method="post"><?
$result = mysql_query("SELECT directory_section.name_ru, directory_section.id, directory_section.mark, search.id, search.pid, search.kitchen FROM `directory_section`,`search` WHERE directory_section.mark='1' AND search.pid='29'") or die(mysql_error());
$i=-1;
while($res = mysql_fetch_array($result)){
$i++;

$str = $res['5'];
$str_exp = explode(",", $str);
$i<(count($str_exp));

echo "<input name='kitchen[]' type='checkbox' value='".$res['1']."'";if($res['1'] == $str_exp[$i]) echo 'checked';echo ">".$res['0'].$res['1']."<br>";
}

?><br>
<input type="submit" value="Send">
</form>

-->

заранее спасибо всем откликнувшимся...
 

Фанат

oncle terrible
Команда форума
что должна означать загадочная фраза $i<(count($str_exp)); ?
 

wathosar

Новичок
спасибо за ответы... натолкнули на умную мысль...

теперь код работает, но все равно есть не большой недочет: если снять все галочки(соответственно не передается ни одно значение), то операция обновления не работает :((

может кто чем сможет помочь... ?

вот код:

<form name="" action="" method="post">
<?
$result = mysql_query("SELECT directory_section.name_ru, directory_section.id, directory_section.mark, search.id, search.pid, search.kitchen FROM `directory_section`,`search` WHERE directory_section.mark='1' AND search.pid='29'") or die(mysql_error());
while($res = mysql_fetch_array($result)){
$i=-1;
$str = explode(",", $res['5']);
while ($i++<(count($str))){
if($res['1'] == $str[$i]) {echo "<input name='kitchen[]' type='checkbox' value='".$res['1']."' checked>".$res['0']."<br>";break;}
if($res['1'] == !$str[$i]) {echo "<input name='kitchen[]' type='checkbox' value='".$res['1']."'>".$res['0']."<br>";}
}}
?>

-~{}~ 15.04.10 22:44:

понимаю что однозначна где-то туплю...
но даже не представляю как вопрос в поисковик сформулировать...
кстати может с кодом обновления , что-то вот он:

<?
$kitchen = $_POST['kitchen'];

if(!empty($kitchen)){
$query_kitchen = "" ;
foreach($kitchen as $val) $query_kitchen.= "$val,";
$query_kitchen = substr($query_kitchen, 0, strlen($query_kitchen) - 1 ). "" ;

mysql_query("UPDATE `search` SET `kitchen` = '".$query_kitchen."' WHERE `pid`='29'") or die(mysql_error());

}

?>


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

заранее большой сенкс всем неравнодушным профи...
 

akxxiv

Новичок
Просто определи сначала твой ктчен:

$kitchen = isset($_POST['kitchen']) ? $_POST['kitchen'] : array();

-~{}~ 15.04.10 22:57:

$query_kitchen = join(',', $kitchen);
 

wathosar

Новичок
да действительно так код короче, спасибо... :)

вот только лажа тут:
if($res['1'] == $str[$i]) {echo "<input name='kitchen[]' type='checkbox' value='".$res['1']."' checked>".$res['0']."<br>";break;}
if($res['1'] == !$str[$i]) {echo "<input name='kitchen[]' type='checkbox' value='".$res['1']."'>".$res['0']."<br>";}

а как короче и чтоб без дублежа до меня чего-то не доходит...

-~{}~ 16.04.10 00:28:

aaaaaaa народ, готово.. . конечно , это баг.. . но обошлось малой кровью, добавляю дополнительно вне цикла пункт с несуществующим id, и все работает... будут с инкрементом конечно пункты(при создании начинать на единицу больше), зато чексбоксы теперь админются и поиск упрощен... будем считать что пришлось идти на некоторую денормализацию бд, но исходя из результата - то подходит... :) :) :)

вот код:
<form name="" action="" method="post">
<?
$result = mysql_query("SELECT directory_section.name_ru, directory_section.id, directory_section.mark, search.id, search.pid, search.kitchen FROM `directory_section`,`search` WHERE directory_section.mark='1' AND search.pid='29'") or die(mysql_error());
while($res = mysql_fetch_array($result)){
$i=-1;
$str = explode(",", $res['5']);
while ($i++<(count($str))){
if($res['1'] == $str[$i]) {echo "<input name='kitchen[]' type='checkbox' value='".$res['1']."' checked>".$res['0']."<br>";break;}
if($res['1'] == !$str[$i]) {echo "<input name='kitchen[]' type='checkbox' value='".$res['1']."'>".$res['0']."<br>";}
} }
?><br>
<input name='kitchen[]' type='hidden' value='1'>
<br>
<input type="submit" value="Send">
</form>


<?
$kitchen = isset($_POST['kitchen']) ? $_POST['kitchen'] : array();
if(!empty($_POST['kitchen'])){
$query_kitchen = join(',', $kitchen);
mysql_query("UPDATE `search` SET `kitchen` = '".$query_kitchen."' WHERE `pid`='29'") or die(mysql_error());
>";
}

?>


спасибо всем за участие, если есть замечания и вопросы с радостью приму и отвечу...
 

crocodile2u

http://vbolshov.org.ru
Нет, ну не могу удержаться: вопрос таки фееричный, если его воспринимать достаточно буквально ;)
 
Сверху