За последние 24 часа нас посетили 59372 программиста и 1835 роботов. Сейчас ищут 950 программистов ...

Как передать массив UID из checkbox и выбрать их в базе?

Тема в разделе "Прочие вопросы по PHP", создана пользователем Avgustina, 13 май 2015.

  1. Avgustina

    Avgustina Новичок

    С нами с:
    1 май 2015
    Сообщения:
    11
    Симпатии:
    0
    Допустим, есть список клиентов, который вытаскивается из таблицы БД MySQL. Напротив каждого клиента - checkbox. Примерно вот таким вот образом:

    Код (PHP):
    1. <form method="POST">
    2. <?
    3. $res = mysql_query("SELECT * FROM table",$dbcnx);
    4. while ($myrow = mysql_fetch_row($res)) { 
    5. $uid = $myrow[0];
    6. $name = $myrow[1];
    7. echo '<div>'.$name.' <input type="checkbox" name="checkbox[]" value="<? echo $uid ?>" title="Выбрать клиента"></div>';
    8. }
    9. ?>
    10. <input type="submit" name="sendInfo" value="ОК">
    11. </form>
    Нужно:
    1) получить массив выбранных значений UID и преобразовать его в "удобоваримый" вид
    2) выбрать из этой же таблицы только тех клиентов, которые были отмечены в checkbox
    Примечание: uid состоят из букв и цифр

    Код (PHP):
    1. if ( isset( $_POST['sendInfo'] ) ) {
    2.  
    3. //как здесь правильно получить массив значений из checkbox?
    4. $uids = implode(',',$_POST[checkbox]); // - если вот так, например? 
    5.  
    6. $res1 = mysql_query("SELECT * FROM table WHERE uid <как здесь правильно сформулировать условие?> ",$dbcnx);
    7.  
    8. } 
    Код (PHP):
    1. $res1=mysql_query("SELECT * FROM table WHERE uid IN(" . $uids . ")"); 
    - так почему-то не получается, может потому что uid состоят не из одних цифр, а из цифр с буквами?

    Буду очень благодарна за помощь и подсказки!!!
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  3. Avgustina

    Avgustina Новичок

    С нами с:
    1 май 2015
    Сообщения:
    11
    Симпатии:
    0
    Не очень поняла, какую зелёную кнопку?...
    По ссылкам примеры, не похожие на мой...
    В общем-то, у меня массив UID достать получается, если я делаю echo $uids; - нужные UID вижу на экране через запятую.

    А вот потом вытащить из базы информацию по клиентам с теми UID, которые попали в массив - не получается... (((
     
  4. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    на самом деле в таком виде никогда и не заработает...
    Код (Text):
    1. $_POST[checkbox]
    - не верно,
    Код (Text):
    1. $_POST['checkbox']
    - верно ;)
     
  5. Avgustina

    Avgustina Новичок

    С нами с:
    1 май 2015
    Сообщения:
    11
    Симпатии:
    0
    Ну да, в коде у меня именно так как нужно, это я здесь неправильно написала ))

    В общем, с массивом всё в порядке, при выборе 3х записей и выводе echo $uids получается, например такая строчка:
    cea8e9a3b8a5d534407f78185a50e136,22a03c35b992d50fa34adc128e5891ec,8dd1486c3a4a205656362deecab16cc6

    А вот потом мне нужно выбрать потом из таблицы записи, у которых uid совпадает с каким-либо uid из этого массива, но этого не получается ((
     
  6. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    потому что строка запроса должна выглядеть так
    Код (Text):
    1.  
    2. "SELECT * FROM table WHERE `uid` IN ('cea8e9a3b8a5d534407f78185a50e136','22a03c35b992d50fa34adc128e5891ec','8dd1486c3a4a205656362deecab16cc6') "
    ;)
     
  7. Avgustina

    Avgustina Новичок

    С нами с:
    1 май 2015
    Сообщения:
    11
    Симпатии:
    0
    т.е. нужно, чтобы ещё каждый uid в массиве в одинарных кавычках был? а как это можно сделать?
     
  8. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  9. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    наверное так
    Код (Text):
    1. 'SELECT * FROM `table` WHERE `uid` IN(\'' . implode( '\',\'' , $_POST['checkbox'] ). '\')'
    ;)
     
  10. Avgustina

    Avgustina Новичок

    С нами с:
    1 май 2015
    Сообщения:
    11
    Симпатии:
    0
    О! Вот так заработало:

    Код (Text):
    1. $uids = '\'';
    2. $uids .= implode("','",$_POST['checkbox']);
    3. $uids .= '\'';
    4. $res1=mysql_query("SELECT * FROM `table` WHERE `uid` IN(".$uids.")",$dbcnx);
    Другие варианты присоединения одинарных кавычек не воспринимает

    Добавлено спустя 1 минуту 15 секунд:
    Главное, что работает, ребята спасибо огромное за помощь!!!
     
  11. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    всё прекрасно воспринимает, просто нужно использовать или двойные только, или одинарные...
    эт конешь не самый лучший вариант -
    Код (Text):
    1. $uids = '\'';
    2. $uids .= implode("','",$_POST['checkbox']);
    3. $uids .= '\'';
    4. $res1=mysql_query("SELECT * FROM `table` WHERE `uid` IN(".$uids.")",$dbcnx);
    попробуй мой последний вариант, там нет двойных :)
     
  12. Avgustina

    Avgustina Новичок

    С нами с:
    1 май 2015
    Сообщения:
    11
    Симпатии:
    0
    Да, так тоже работает. Спасибо!!!
     
  13. rodent90

    rodent90 Новичок

    С нами с:
    26 мар 2015
    Сообщения:
    533
    Симпатии:
    37
    Заработает! Но прежде будет нотис о том, что константа не найдена, а потом будет смотреть ключ и тянуть значение.
    Профи! Ты разве об этом не знал? Как же так.

    Похоже про иньекции ты даже и не слышал.

    Avgustina, вы его поменьше слушайте, он вам насоветует.
    У вас тут сейчас дырка огромная, а вы даже об этом и не знаете и советчики выше, тоже, что даже не сообщили вам об этом. Ну да ладно, главное жеж, что работает! :D А то, что за 2 секунды убьют базу - это нормально!