Допустим, есть список клиентов, который вытаскивается из таблицы БД MySQL. Напротив каждого клиента - checkbox. Примерно вот таким вот образом: Код (PHP): <form method="POST"> <? $res = mysql_query("SELECT * FROM table",$dbcnx); while ($myrow = mysql_fetch_row($res)) { $uid = $myrow[0]; $name = $myrow[1]; echo '<div>'.$name.' <input type="checkbox" name="checkbox[]" value="<? echo $uid ?>" title="Выбрать клиента"></div>'; } ?> <input type="submit" name="sendInfo" value="ОК"> </form> Нужно: 1) получить массив выбранных значений UID и преобразовать его в "удобоваримый" вид 2) выбрать из этой же таблицы только тех клиентов, которые были отмечены в checkbox Примечание: uid состоят из букв и цифр Код (PHP): if ( isset( $_POST['sendInfo'] ) ) { //как здесь правильно получить массив значений из checkbox? $uids = implode(',',$_POST[checkbox]); // - если вот так, например? $res1 = mysql_query("SELECT * FROM table WHERE uid <как здесь правильно сформулировать условие?> ",$dbcnx); } Код (PHP): $res1=mysql_query("SELECT * FROM table WHERE uid IN(" . $uids . ")"); - так почему-то не получается, может потому что uid состоят не из одних цифр, а из цифр с буквами? Буду очень благодарна за помощь и подсказки!!!
Просто нажми зелёную кнопку RUN http://runnable.com/VTSNl5PkmAYuVsGs/ http://runnable.com/VTUxcxHr5sJO0Anz/
Не очень поняла, какую зелёную кнопку?... По ссылкам примеры, не похожие на мой... В общем-то, у меня массив UID достать получается, если я делаю echo $uids; - нужные UID вижу на экране через запятую. А вот потом вытащить из базы информацию по клиентам с теми UID, которые попали в массив - не получается... (((
на самом деле в таком виде никогда и не заработает... Код (Text): $_POST[checkbox] - не верно, Код (Text): $_POST['checkbox'] - верно
Ну да, в коде у меня именно так как нужно, это я здесь неправильно написала )) В общем, с массивом всё в порядке, при выборе 3х записей и выводе echo $uids получается, например такая строчка: cea8e9a3b8a5d534407f78185a50e136,22a03c35b992d50fa34adc128e5891ec,8dd1486c3a4a205656362deecab16cc6 А вот потом мне нужно выбрать потом из таблицы записи, у которых uid совпадает с каким-либо uid из этого массива, но этого не получается ((
потому что строка запроса должна выглядеть так Код (Text): "SELECT * FROM table WHERE `uid` IN ('cea8e9a3b8a5d534407f78185a50e136','22a03c35b992d50fa34adc128e5891ec','8dd1486c3a4a205656362deecab16cc6') "
Код (PHP): echo "IN('", implode("','", array(1,2,3)), "')"; https://php.net/manual/ru/function.implode.php
наверное так Код (Text): 'SELECT * FROM `table` WHERE `uid` IN(\'' . implode( '\',\'' , $_POST['checkbox'] ). '\')'
О! Вот так заработало: Код (Text): $uids = '\''; $uids .= implode("','",$_POST['checkbox']); $uids .= '\''; $res1=mysql_query("SELECT * FROM `table` WHERE `uid` IN(".$uids.")",$dbcnx); Другие варианты присоединения одинарных кавычек не воспринимает Добавлено спустя 1 минуту 15 секунд: Главное, что работает, ребята спасибо огромное за помощь!!!
всё прекрасно воспринимает, просто нужно использовать или двойные только, или одинарные... эт конешь не самый лучший вариант - Код (Text): $uids = '\''; $uids .= implode("','",$_POST['checkbox']); $uids .= '\''; $res1=mysql_query("SELECT * FROM `table` WHERE `uid` IN(".$uids.")",$dbcnx); попробуй мой последний вариант, там нет двойных
Заработает! Но прежде будет нотис о том, что константа не найдена, а потом будет смотреть ключ и тянуть значение. Профи! Ты разве об этом не знал? Как же так. Похоже про иньекции ты даже и не слышал. Avgustina, вы его поменьше слушайте, он вам насоветует. У вас тут сейчас дырка огромная, а вы даже об этом и не знаете и советчики выше, тоже, что даже не сообщили вам об этом. Ну да ладно, главное жеж, что работает! А то, что за 2 секунды убьют базу - это нормально!