За последние 24 часа нас посетил 62191 программист и 1800 роботов. Сейчас ищут 822 программиста ...

checkbox и обновление базы данных

Тема в разделе "PHP для новичков", создана пользователем viphost, 5 мар 2012.

  1. viphost

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

    С нами с:
    23 мар 2009
    Сообщения:
    307
    Симпатии:
    0
    Прошу помощи, сильно не пинайте, первый раз сталкиваюсь с этим.
    Вобщем на сайте нужно сделать одобрение комментариев, так как их много, нужно сделать чтобы на одной странице выбрать массив айди одной кнопочкой одобрить их.
    У каждого комментария стоит checkbox с уникальным айди, что то вроде:
    Код (Text):
    1. <input type="checkbox" name="comm" value="yes">
    yes - значение на которое нужно изменить в таблице поля выбранных комментов
    Проблема в том что я никогда не делал обновление полей у таблицы массивом по нескольким айди, делал лишь по одному айди и не знаю как их принять, перечислить в файле.
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    название чекбокса делаете с [] - это даст массив в массиве _GET, далее в запросе к базе эти данные делаете implode

    Добавлено спустя 5 минут 54 секунды:
    в форме одобрения:
    <input type="checkbox" name="id[]" value="COMMENT_ID_HERE">

    в обработчике лепим все айдишники в строку через запятую
    $ids = implode(',',$_GET['id']);

    в запросе
    WHERE id IN ($ids)

    примерно так ;)
     
  3. viphost

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

    С нами с:
    23 мар 2009
    Сообщения:
    307
    Симпатии:
    0
    А есть какой нибудь пример, а то я не пойму
    Как то так?
    Код (Text):
    1. <input type="checkbox" name="comm[1]" value="yes">
    2. <input type="checkbox" name="comm[2]" value="yes">
    3. <input type="checkbox" name="comm[3]" value="yes">
    4. Цифры это айди
    правильно?
    А как принять в файле это все дело?
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    нет, смотрите добавку к моему первому комменту. имя чекбокса должно тупо содержать [] а айдишник - в значении
     
  5. viphost

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

    С нами с:
    23 мар 2009
    Сообщения:
    307
    Симпатии:
    0
    Ясно, спасибо большое, попробую если что отпишу =)

    Добавлено спустя 49 минут 27 секунд:
    Обновляет но по одному =(
    Делаю так:
    Форма на сайте
    Код (Text):
    1. <form method='GET' action='/admin/system/index.php?comm=[]' name="input">
    2. <div class="comments">текст комментария</div> Одобрить:<input type="checkbox" name="comm[]" value="'.$r['id'].'">
    3. <div class="comments">текст комментария 2</div> Одобрить:<input type="checkbox" name="comm[]" value="'.$r['id'].'">
    4. <input title="Ctrl+Enter" name="input" class="bold" value="ok" type="submit">
    5. </form>
    Файл index.php
    Код (Text):
    1. <?php
    2.         header("Content-Type: text/plain; charset=UTF-8");
    3.         // обновление коммента
    4.         $comm = implode(',',$_GET['comm']);
    5.        
    6.         // статус
    7.         $status = "";
    8.  
    9.         /* здесь подключение к базе данный */
    10.        
    11.         $query = "UPDATE  `comments`  set `index`='yes'  WHERE `id`='$comm'";
    12.         if($result = mysql_query($query)) {
    13.             $status = "Обновлено!";
    14.         } else {
    15.             $status = "Произошла ошибка";
    16.  
    17.         }
    18.         mysql_close($link);
    19.        
    20.         echo ''.$status. ''; /* статус */
    21.  
    22. ?>
    Ссылка в браузере формируется:
    Код (Text):
    1. http://site.ru/admin/system/index.php?comm%5B%5D=11&comm%5B%5D=10&comm%5B%5D=9&input=ok
    Думаю что то с моей формой не так, а именно в ссылке
    Код (Text):
    1. /admin/system/index.php?comm=[]
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ВХЕРЕ ид {равно} ид - обновит только одну запись
    ВХЕРЕ ид ИН (список_ид) - обновит все найденные записи с выбранными ид. читайте внимательнее мой пост
     
  7. viphost

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

    С нами с:
    23 мар 2009
    Сообщения:
    307
    Симпатии:
    0
    Да все правильно, поправил, все работает =) Спасибо большое