За последние 24 часа нас посетили 59734 программиста и 1852 робота. Сейчас ищут 1056 программистов ...

Помогите с алгоритмом

Тема в разделе "PHP для новичков", создана пользователем websqlneeder, 11 июл 2008.

  1. websqlneeder

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

    С нами с:
    17 май 2007
    Сообщения:
    39
    Симпатии:
    0
    На странице есть какое то количество новостей и возле новости есть чекбоксы где пользователь может выбрать определенные новости и добавить их.

    Вопрос: как это програмно реализуемо? То есть сервер должен понять какие из новостей необходимо добавлять (те что были выбраны чекбоксами).
     
  2. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    HTML:
    1. <input type="checkbox" name="add[]" value="2" />
    2. <input type="checkbox" name="add[]" value="5" />
    или по ключам:

    HTML:
    1. <input type="checkbox" name="add[2]" value="Yes" />
    2. <input type="checkbox" name="add[5]" value="Yes" />
    на сервер прийдут только выбранные, примерно в таком формате:
    PHP:
    1. <?
    2. $_GET['add'] = array('add'=>array('2','5'));
    3. $_GET['add'] = array('add'=>array('2'=>'Yes','5'=>'Yes"));
     
  3. websqlneeder

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

    С нами с:
    17 май 2007
    Сообщения:
    39
    Симпатии:
    0
    То есть на сервере сделать что то типа такого

    for($i=0;$i<count($add);$i++)
    {
    if(!empty($arr[$i]))
    {
    добавляем в БД
    }
    }

    Да?
     
  4. Ti

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

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    PHP:
    1. <?
    2. foreach($_GET['add'] as $id) {
    3.    // добавляем в ДБ
    4. }
    5.  
    6. // во втором случае:
    7. foreach($_GET['add'] as $id=>$value) {
    8.   // добавляем в ДБ
    9. }
     
  5. websqlneeder

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

    С нами с:
    17 май 2007
    Сообщения:
    39
    Симпатии:
    0
    А теперь не могу понять как сопоставить отмеченные чекбоксы с соответсвующей новостью. То есть тогда нужно сделать столько же input type=hidden и туда внести заголовок новости? И тогда инпуты по индексу будут совпадать с чекбоксами по индексу?

    Так?
     
  6. Professor

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

    С нами с:
    2 янв 2008
    Сообщения:
    121
    Симпатии:
    0
    Адрес:
    г. Одесса, Украина
    Храни новости в базе, при выводе новости для value каждого чекбокса прописывай значение айди соответствующей новости из базы. А потом по айди из базы выбирай заголовки.
    что то вроде

    PHP:
    1. foreach ($add as $id)
    2.   $cond .= " OR `id` = '" . $id . "'";
    3. $query = "SELECT `title` FROM `news` WHERE `id` = '" . $add[0] . "'" . $cond;
    Пример немного кривоватый, но чего то сейчас в голову ничего красивше не лезет... главное - идея, и что работает...
     
  7. websqlneeder

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

    С нами с:
    17 май 2007
    Сообщения:
    39
    Симпатии:
    0
    Я вот на странице формы делаю так:

    HTML:
    1. <input type="checkbox" name="ch[]" value=1>
    На сервере:

    PHP:
    1. $ch1=$_GET['ch'];print $ch1[1];
    2.  foreach($_GET['ch'] as $id) {
    3.     print "Множество новостей $id";
    4.  }
    Он мне в $ch1[1] и $id выдает не 1 а on

    Как быть?
     
  8. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    может
    HTML:
    1. <input type="checkbox" name="ch[]" value="1">
    ?
     
  9. websqlneeder

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

    С нами с:
    17 май 2007
    Сообщения:
    39
    Симпатии:
    0
    PHP:
    1. print "<input type=\"checkbox\" name=\"ch[]\" value=\"1\">";
     
  10. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    PHP:
    1. <form>
    2. <?php
    3. print_r($_GET);
    4. echo '<br />';
    5. for($i=0;$i<10;$i++)
    6.     echo '<input type="checkbox" name="ch[]" value="'.$i.'" /> '.$i.'<br />';
    7. ?>
    8. <input type="submit" value="send" />
    9. </form>
    понятия не имею, какие проблемы:
    Array
    (
    [ch] => Array
    (
    [0] => 1
    [1] => 6
    [2] => 9
    )

    )
     
  11. Cron

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

    С нами с:
    10 июл 2008
    Сообщения:
    289
    Симпатии:
    0
    Адрес:
    Украина, Сумы
    Не знаю, Кос, скопировал твой код, вставил у себя - работает нормально! Может попробуй явно указать method='get' action=$PHP_SELF, но не уверен, что это что-то изменит...
     
  12. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    лень. Пусть автор темы упражняется.
     
  13. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Товарищ, переходите на РНР 5, пора уже, а то скоро РНР 6 выйдет.