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

Тема в разделе "PHP", создана пользователем irkmos, 5 июн 2011.

Модераторы: latteo
  1. irkmos

    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 которых имеются в базе были бы уже отмечены?
     
  2. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.036
    Симпатии:
    699
    как-то так
    PHP:
    if($int_id!=""$checked "checked";
    echo 
    "<input type=checkbox name=\"int_interes[]\" value=\"$int_id\" ".$checked.">$int_name<br>";
     
  3. irkmos

    irkmos Создатель

    Регистр.:
    7 май 2007
    Сообщения:
    48
    Симпатии:
    4
    Прошу прощения вот здесь ошибся:
    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.
     
  4. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.036
    Симпатии:
    699
    а просто туплю с утра конечно будут все чекнутые тебе же надо их с юзером сравнивать попробуй так вытащить ob_interes юзера занести все в массив и потом $int_id искать в этом массиве если есть то чекать
    ЗЫ. коды всетаки лучше в соответствующие теги заключать
     
  5. irkmos

    irkmos Создатель

    Регистр.:
    7 май 2007
    Сообщения:
    48
    Симпатии:
    4
    Выводит вот,что даже если в строке нет записи, вообщем есть или нету - отмечены все чекбоксы.
    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++; }
     
  6. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.036
    Симпатии:
    699
    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>"
    могу ошибаться таблиц не вижу и проверить никак :)
     
  7. irkmos

    irkmos Создатель

    Регистр.:
    7 май 2007
    Сообщения:
    48
    Симпатии:
    4
    не работает, в этой строке что то
    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||
     
  8. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.036
    Симпатии:
    699
    вот точно рабочий вариант это выше твоего кода
    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>";
     }
    проверял работает :)
     
    irkmos нравится это.