За последние 24 часа нас посетили 203006 программистов и 2212 роботов. Сейчас ищут 1670 программистов ...

работа с массивами

Тема в разделе "PHP для новичков", создана пользователем serj011, 8 сен 2010.

  1. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    есть к примеру такая форма

    <form method="post" action="edit.php">
    <input name="rut[]" value="1" type="checkbox" /> 1<br>
    <input name="rut[]" value="2" type="checkbox" /> 2<br>
    <input name="rut[]" value="3" type="checkbox" /> 3<br>
    <input name="rut[]" value="4" type="checkbox" /> 4<br>
    </form>

    Подскажите как в edit.php занести эти чейбоксы в переменную?
    если делаешь как обычную переменную

    if (isset($_POST['rut'])) { $rut = $_POST['rut'];}
    echo "$rut"; - то выдает Array
    я читал что нужно использовать serialize и unserialize, объясните пожалуйста как работать с этими массивами?
     
  2. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Почитать о многомерных массивах и рекурсии. Почитать!
     
  3. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    var_dump($rut);
     
  4. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    сделал как мог... понимаю что тупо и не правильно, но :)

    форма
    <form method="post" action="edit.php">
    <input name="rut[]" value="Один" type="checkbox" /> 1<br>
    <input name="rut[]" value="Два" type="checkbox" /> 2<br>
    <input name="rut[]" value="Три" type="checkbox" /> 3<br>
    <input name="rut[]" value="Четыре" type="checkbox" /> 4<br>
    </form>

    обработчик
    if (isset($_POST['rut'])) { $rut = $_POST['rut'];}
    $string = serialize( $rut );

    выводит такоую строку a:4:{i:0;s:4:"Один";i:1;s:3:"Два";i:2;s:3:"Три";i:3;s:6:"Четыре";}
    черти ШО и збоку бантик :):):)

    но ... главное результат:)
    а теперь вообще круто, там где нужно вытащить или проверить какое есть значение

    $result_rut = mysql_query("SELECT * FROM anketa WHERE rut LIKE '%Один%'",$db);
    $myrow_rut=mysql_fetch_array($result_rut);

    $result_rut = mysql_query("SELECT * FROM anketa WHERE rut LIKE '%Два%'",$db);
    $myrow_rut=mysql_fetch_array($result_rut); и т.д.

    помоему полный бред!? подскажите что можно в этом всем исправить
     
  5. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    $rut = $_POST['rut'];

    тут ты получаешь массив с выделенными чекбоксами.
    получить-то ты его получил, а делать что с ним надо?
     
  6. serj011

    serj011 Активный пользователь

    С нами с:
    18 апр 2010
    Сообщения:
    279
    Симпатии:
    0
    Gromo, извените за глупый вопрос, но куда нужно прописывать $rut = $_POST['rut'];

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

    $result_rut = mysql_query("SELECT rut FROM anketa WHERE rut LIKE '%Один%'",$db);
    $myrow_rut=mysql_fetch_array($result_rut);
    if ($myrow_rut[rut] == 'Один') {$rut_checked = 'CHECKED';}

    <input name="rut[]" value="Один" type="checkbox" <? echo $rut_checked; ?>/> 1<br> и т.д.
     
  7. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    есть таблица в БД - языки.
    и есть страница админки, где галочками можно выбрать поддерживаемые языки.

    вот код формирования страницы
    PHP:
    1.  
    2. <?php
    3. ...
    4.  
    5.   $locales = $db->select("SELECT * FROM dsc_locales ORDER BY description");
    6.  
    7.   $content = '<form action="save.php" method="post"><table id="locales">';
    8.   $content .= '<tr>';
    9.     $content .= '<th style="width: 80px;">Code</th>';
    10.     $content .= '<th style="width: 180px;">Language</th>';
    11.     $content .= '<th>Enabled</th>';
    12.   $content .= '</tr>';
    13.   foreach($locales as $locale){
    14.     $content .= '<tr><td style="padding-left: 20px;">'.$locale['lang_id'].'</td>';
    15.     $content .= '<td style="padding-left: 40px;"><label>'.$locale['description'].'</label></td>';
    16.     $content .= '<td style="text-align: center;"><input type="checkbox" name="locales['.$locale['lang_id'].']"';
    17.     // если данный язык в базе выбран, ставим галочку
    18.     if($locale['enabled']) $content .= ' checked="checked"';
    19.     $content .= '></td></tr>';
    20.   }
    21.   $content .= '</table></form>';
    22. ...
    23. ?>
    24.  

    вот код сохранения выбраных языков из формы
    PHP:
    1.  
    2. <?php
    3. ...
    4.   // обнуляем все по умолчанию
    5.     $db->query('UPDATE dsc_locales SET `enabled`=FALSE');
    6.   $query = "UPDATE dsc_locales SET `enabled`=TRUE WHERE `lang_id` IN (''";
    7.  
    8.   // создаём список выделенных языков, которые нужно оставить включёнными
    9.     foreach($_POST['locales'] as $lang_id=>$enabled){ $query .= ", '{$lang_id}'"; } $query .= ")";
    10.   $db->query($query);
    11. ...
    12. ?>
    13.  
    в итоге - таблица языков с галочками для выбора.
    выбранные языки заносятся в базу (меняют поле enabled => True)
    при отображении таблицы языки с enabled=True будут выбраны