парсер checkbox, прошу помощи

irkmos

Создатель
Регистрация
7 Май 2007
Сообщения
48
Реакции
4
Добавляем в анкете интересы пользователя
Извлекаем массив
PHP:
$sql="SELECT * FROM interes"; 
$sel_an=mysql_query("$sql");
while($an=mysql_fetch_array($sel_an)) {
$int_id=$an["int_id"];
$int_name=$an["int_name"];
echo "<input type=checkbox name=\"int_interes[]\" value=\"$int_id\">$int_name<br>";
}
Таблица interes
int_id int_name
1 Рыбалка
2 Охота
. .
. .
. .
50 Футбол
PHP:
$qa="";
foreach ($_POST["ob_interes"] as $v) {
$qa.="$v||";
}
Запись в таблицу user
PHP:
$sql = "INSERT INTO user (ob_id, ob_interes) VALUES ('null', '$qa')";
ob_id ob_interes
1 1||2||...||50||
Редактируем интересы пользователя
PHP:
$qa="";
foreach ($_POST["ob_interes"] as $v) {
$qa.="$v||";
}
$sql="SELECT * FROM interes"; 
$sel_an=mysql_query("$sql");
while($an=mysql_fetch_array($sel_an)) {
$int_id=$an["int_id"];
$int_name=$an["int_name"];
echo "<input type=checkbox name=\"int_interes[]\" value=\"$int_id\">$int_name<br>";
}
$update=mysql_query("UPDATE user SET ob_interes='$qa'");
Как сделать, чтобы при редактировании анкеты пользователя, чекбоксы int_id которых имеются в базе были бы уже отмечены?
 
как-то так
PHP:
if($int_id!="") $checked = "checked";
echo "<input type=checkbox name=\"int_interes[]\" value=\"$int_id\" ".$checked.">$int_name<br>";
 
Прошу прощения вот здесь ошибся:
PHP:
echo "<input type=checkbox name=\"[COLOR="Red"]int_interes[][/COLOR]\" value=\"$int_id\">$int_name<br>";
должно быть :
PHP:
echo "<input type=checkbox name=\"[COLOR="DarkGreen"]ob_interes[][/COLOR]\" value=\"$int_id\">$int_name<br>";
В таком варианте отмечены все чекбоксы, даже если в записи нет ни одного ob_interes.
 
В таком варианте отмечены все чекбоксы, даже если в записи нет ни одного ob_interes.
а просто туплю с утра конечно будут все чекнутые тебе же надо их с юзером сравнивать попробуй так вытащить ob_interes юзера занести все в массив и потом $int_id искать в этом массиве если есть то чекать
ЗЫ. коды всетаки лучше в соответствующие теги заключать
 
Выводит вот,что даже если в строке нет записи, вообщем есть или нету - отмечены все чекбоксы.
PHP:
<input type=checkbox name="ob_interes[]" value="1" checked>Рыбалка<br><input type=checkbox name="ob_interes[]" value="2" checked>Охота<br>
...
<input type=checkbox name="ob_interes[]" value="50" checked>Футбол

Добавлено через 14 минут
Я тоже туплю в php, поэтому и спрашиваю как это реализовать.

Добавлено через 17 минут
Думаю вот этот код можно как то использовать.
PHP:
$obint="";
$interes=explode("||",$ob_interes); 
$i = 0; while ($i <= $totalinteres) {
$sql="SELECT * FROM interes where int_id='$interes[$i]'"; 
$sel_an=mysql_query("$sql");
while($an=mysql_fetch_array($sel_an)) {
$int_id=$an["int_id"];
$int_name=$an["int_name"];
$obint.=" $int_name ";
}
$i++; }
 
PHP:
$sql="SELECT ob_interes FROM user WHERE ob_id = 1"; //незнаю какой там ob_id редактируется :)
 $sel_an=mysql_query("$sql");
 $an=mysql_fetch_array($sel_an)
 $interes = $an['ob_interes'];
 $arr = explode('||',$interes);
и вывод чекбокса
PHP:
if(isset(array_search($int_id, $arr)))$checked = "checked";
 echo "<input type=checkbox name=\"ob_interes[]\" value=\"$int_id\" ".$checked.">$int_name<br>";
могу ошибаться таблиц не вижу и проверить никак :)
 
не работает, в этой строке что то
PHP:
if(isset(array_search($int_id, $arr)))$checked = "checked";
Таблица interes
int_id int_name
1 Рыбалка
2 Охота
. .
. .
. .
50 Футбол
Таблица user
ob_id ob_interes
1 1||2||...||50||
 
вот точно рабочий вариант это выше твоего кода
PHP:
$sql="SELECT ob_interes FROM user WHERE ob_id = 1"; //незнаю какой там ob_id редактируется :)
 $sel_an=mysql_query($sql);
 $an=mysql_fetch_array($sel_an);
 //print_r($an);
 $interes = $an['ob_interes'];
 $arr = explode('||',$interes);
 //print_r($arr);
а это при выводе чекбокса
PHP:
$check = array_search($int_id, $arr);
 //echo $check."<br>";
 if(trim($check)!='') {
 echo "<input type=checkbox name=\"ob_interes[]\" value=\"$int_id\" checked>$int_name<br>";
 }
 else{
 echo "<input type=checkbox name=\"ob_interes[]\" value=\"$int_id\">$int_name<br>";
 }
проверял работает :)
 
Назад
Сверху