Выборка из результатов Select'а

Jonny_TK

Новичок
Выборка из результатов Select'а

Приветствую всех участников.

Просьба помочь словами, ссылкой, статьей или иходником... со временем совсем жесть, приходится идти этим путем.

Ситуация:

Делаем запрос к БД, получаем результат в таблице. Далее из этой (результирующей) таблицы нужно сделать выборку по выбранным (checkbox) строкам.

Что уже сделано (попытка):

Забил в таблицы столбец cb, в котором находятся checkbox'ы (<input name="1" type="checkbox" value="Х">"), где name одинаковое у всех боксов, X равен ID строки...(по которым, собственно выборка и делается)

....а вот что дальше - не знаю......

Как реализовать выборку по этому ID (отметили несколько боксов, нажали кнопочку, остались только те строки, в которых активирован checkbox)? Может это решается по другому?

Согласен, что вопрос глупый (недавно первую книгу php/mysql читать закончил)... И путанно как то, но я очень надеюсь, что смысл понятен....

Заранее спасибо...
 

alpine

Новичок
Jonny_TK
Делаем запрос к БД, получаем результат в таблице. Далее из этой (результирующей) таблицы нужно сделать выборку по выбранным (checkbox) строкам.
Свои выбраные ID ты в коде получил?
 

Jonny_TK

Новичок
нет.... я думаю - знал бы как, и вопроса не возникло бы.... ведь далее select ..... where id= ......

Хотя наверное все равно бы возникли вопросы..... при множественном выборе, пойдет что то типа array (вроде это так называется)......

.....Alpine, правда..... все что смог, это занести чеки в базу....
PS Спасибо за то, что откликнулся....
 

Romashov

экспериментатор
В форме делай чекбокс следующего вида для каждой строчки:
<input name="ids[{$res_fetched['ID']}]" type="checkbox" value="1">
Примерно следующее.
PHP:
$in="";
foreach($_POST['ids'] as $id=>$value) if($value==1)$in.=" '".intval($id)."',";
substr($in,0,-1);
Проверку if($value==1) можно опустить - и так передадутся только те элементы массива, которые выбраны.
Потом запрос SELECT *FROM `table` WHERE `id` IN ($in);
 

Jonny_TK

Новичок
Romashov
Можно краткий коммент?.....
<input name="ids[{$res_fetched['ID']}]" type="checkbox" value="1"> - на это меняем имеющийся чек в таблице, где ID = id строки....

остальное в кнопку..... что делает SELECT , примерно понятно.... а что делает код? Если не сложно, конечно.....
PS Спасибо за ответ
 

Romashov

экспериментатор
<input name="ids[{$res_fetched['ID']}]" type="checkbox" value="1"> - на это меняем имеющийся чек в таблице, где ID = id строки....
у тебя должно получится
<input name=ids[1] value=1> Строка 1
<input name=ids[2] value=1> Строка 2
<input name=ids[3] value=1> Строка 3

Код всего и делает, что поэлементно обходя полученный массив ids собирает отмеченные галочкой id-шки и пишет их в строку через запятую (intval - чтобы не было гадости, принудительно приводим к числу). Вторая строчка кода просто отрезает последнюю, лишнюю запятую.
Т.е. в итоге, в $in мы имеем '1', '2', '3', '5' , что и направляется в условие WHERE id IN ()
 

Jonny_TK

Новичок
Спасибо...
Вечером попробую, завтра расскажу о результатах.....

-~{}~ 07.12.05 11:02:

Romashov, день добрый.... Приветствую и всех остальных...
Собрал я это чудо, только оно работать не хочет... Значит так собрал....
Подправьте, пожалуйста....

Симптом: при нажатии на кнопку ничего не происходит

Код:
---------------------------------------------------
<?
бла, бла, бла
$conn = mysql_connect("mysql.*.ru","dbu","");
$select = mysql_select_db("db",$conn);
$sql = "SELECT * FROM `apartments` WHERE бла, бла, бла FROM бла, бла, бла;"

print "<table>
тоже немного бла, бла...
print "</table>

if(isset($show))
{$in="";
foreach($_POST['ids'] as $id=>$value) if($value==1)$in.=" '".intval($id)."',";
substr($in,0,-1);}
$conn = mysql_connect("mysql.*.ru","dbu","");
$select = mysql_select_db("db",$conn);
$sql = "SELECT * FROM `apartments` WHERE `id` IN ($in);"
?>
<br><br>
<input name="show" type="button" id="show" value="Показать отмеченное">

--------------------------------------------------------------------
Чеки в базе:
<input name="ids[{$res_fetched['ID']}]" type="checkbox" value="1">, где ID - id строки
-------------------------------------------------------------------

Выручайте, добры мОлодцы.....
Заранее спасибо...
 

Romashov

экспериментатор
<input name="show" type="button" id="show" value="Показать отмеченное">
type=submit
$conn = mysql_connect("mysql.*.ru","dbu","");
$select = mysql_select_db("db",$conn);
зачем ты коннектишься к одной базе дважды?
$sql = "SELECT * FROM `apartments` WHERE `id` IN ($in);"
вот после этого и надо делать вывод.
Размести этот кусок сразу после первоначального
PHP:
$sql = "SELECT * FROM `apartments` WHERE бла, бла, бла FROM бла, бла, бла;"
А потом не забудь mysql_query - я ни одного не нашёл в твоём скрипте
используй тег [ php][/php], разбираться в коде не очень удобно!
 

Jonny_TK

Новичок
Romashov
Доброго утра еще раз......
ничего не понимваю....


привожу свои мысли относительно того, как это должно выглядеть (прошу подправить)

Структура:
1. делаем Select по исходной таблице (назовем ее - "почти все данные")
2. выводим таблицу "почти все данные"
3. ставим кнопку для выбора из этой таблицы
4. если нажали кнопку:
а. делаем выборку из таблицы
б. выводим таблицу "выборка"

-------------------------------------

получается:

PHP:
<?
бла, бла, бла
$conn = mysql_connect("mysql.*.ru","dbu","");
$select = mysql_select_db("db",$conn);
$sql = "SELECT * FROM `apartments` WHERE бла, бла, бла FROM бла, бла, бла;"

print "<table>
тоже немного бла, бла...
print "</table>

?>

<input name="show" type="submit"  id="show" value="Показать отмеченное">

<?
if(isset($show))
{$in=""; 
foreach($_POST['ids'] as $id=>$value) if($value==1)$in.=" '".intval($id)."',"; 
substr($in,0,-1);
$sql = "SELECT * FROM `apartments` WHERE `id` IN ($in)";
}

print "<table>
таблица выбранного...
print "</table>

?>
---------------

Интересно, кто больше запарился? Я или Г-н Romashov?:confused:

Прошу прощения, если второй вариант, но я уже чуствую блондинкой за рулем троллейбуса на острове Карельского перешейка :(

И опять СПАСИБО!
 

Romashov

экспериментатор
Структура:
1. делаем Select по исходной таблице (назовем ее - "почти все данные")
2. выводим таблицу "почти все данные"
3. ставим кнопку для выбора из этой таблицы
4. если нажали кнопку:
а. делаем выборку из таблицы
б. выводим таблицу "выборка"
1. Сразу формируем SQL запрос.
а) по дефолту - Выбрать всё.
б) а если нажата кнопка - то сформировать запрос для показа выбранных строк (мои три строчки)
2. Обращаемся к базе получившимся запросом.
3. Выводим строки, приписывая к каждой из них checkbox

-~{}~ 07.12.05 13:07:

Интересно, кто больше запарился? Я или Г-н Romashov?
садист ты ;)
 

Jonny_TK

Новичок
Уважаемый г-н Romashov
1а А если нужно, что бы by default не выбрано ничего....

Не могли бы мы на некоторое время перенестись в ICQ... Буду Вам очень благодарен....

-~{}~ 07.12.05 14:21:

Уважаемый г-н Romashov

Вопрос 1.
<input name="ids[{$res_fetched['ID']}]" type="checkbox" value="1">...
{$res_fetched['ID']} - это переменная, которая автоматически задает переменной ids значение ID (Id строки), или ID нужно на каждой строке вводить самому?

Вопроc 2.
ICQ?

Пожалуйста....
 

alpine

Новичок
Jonny_TK
У меня к тебе такое предложение. Давай ты Romashov кинешь на вебманю определенную сумму он тебе напишет скриптик а потом объяснит как работает. Быстро и все довольны.
 

Jonny_TK

Новичок
alpine
Я в таком положении, что и на это, видимо, готов пойти.....
 

alpine

Новичок
Jonny_TK
Напиши в личку Ромашову, я думаю это будет совсем недорого стоить.
 

Jonny_TK

Новичок
alpine
написал..... посмотрим.....

-~{}~ 07.12.05 16:13:

alpine
не отвечает

-~{}~ 08.12.05 11:33:

Народ.... не могу понять, что тут не так.....
Ругается на $_POST......

PHP:
<?
$ids=="";
?>
<form name=form1 method="get">
<input type="checkbox" name= ids[1] value=1> Строка 1 <br>
<input type="checkbox" name= ids[2] value=2> Строка 2<br>
<input type="checkbox" name= ids[3] value=3> Строка 3<br>
<input type="checkbox" name= ids[4] value=4>  Строка 4<br>
<input type="checkbox" name= ids[5] value=5> Строка 5<br>
<input type="checkbox" name= ids[6] value=6> Строка 6<br>
<br><br>
<input name="show" type="submit" id="show" value="GO">
</form>
<?
$in="";
$id="6"; 
foreach($_POST['ids'] as $id=>$value) if($value==1)$in.=" '".intval($id)."',"; 
substr($in,0,-1);
print "IN: $in";
?>
 

Jonny_TK

Новичок
Romashov
мля.....
согласен..... наэксперементировал вчера...... я с этим сижу часов до 5ти утра ежедевно...... с недосыпу можно форму и так пересылать

<form name="пошла, зараза..." method="ща лопату возьму"....>

-~{}~ 08.12.05 14:37:

Изменил на post

Invalid argument supplied for foreach() in /home/mihail1/www/site1/public_html/1.php on line 22.

22
PHP:
 foreach($_POST['ids'] as $id=>$value) if($value==1)$in.=" '".intval($id)."',";
 

Romashov

экспериментатор
name= ids[1]

убери пробел после равно, или возьми ids[1] в кавычки
поэтому и ругается
 

Jonny_TK

Новичок
PHP:
<form name=form1 method="post">
<input type="checkbox" name="ids[1]" value=1>
к сожалению ничего не изменилось :(
 
Сверху