Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вывод нескольких id из БД с помощью PHP
 
 автор: АлексейК   (30.12.2010 в 13:26)   письмо автору
 
 

Здравствуйте!
Подскажите, пожалуйста, возможна ли такая ситуация?
Имеется форма в виде чекбоксов:

<form action="obrabot.php" method="post" name="dano">
<input name="id" type="checkbox" value="1">
<input name="id" type="checkbox" value="2">
<input name="id" type="checkbox" value="3">

<input name="id" type="checkbox" value="500">
<input name="sub" type="submit" value="Отправить">
</form>

Также имеется таблица (tabl) в БД MySQl с полями:

id text
1 Текст описания пункта 1
2 Текст описания пункта 2
3 Текст описания пункта 3

500 Текст описания пункта 500

Необходимо, что бы при выборе нескольких чекбоксов в форме, из БД выводились описания для выбранных пунктов.

Например, выбраны чекбоксы с номерами 1, 5, 156, 487, 500 и из БД должна выводится информация по описаниям выбранных пунктов.
В файле-обработчике (obrabot.php) я прописал код:

$result=mysql_query("SELECT * FROM tabl WHERE id='$id'",$db);
if (!$result) {echo "<p> Запрос не прошел. <br> Код ошибки:</p>"; exit(mysql_error());}
if (mysql_num_rows($result) > 0) {$myrow= mysql_fetch_array ($result);

do {printf ("<table>
<tr>
<td>
<p> %s </p>
</td>
</tr>
<tr>
<td Описание пункта: %s </td>
</tr>
</table><br>",$myrow["id"],$myrow["text"]);}
while ($myrow= mysql_fetch_array($result)); }

В итоге у меня выводится только последнее значение id =500, а остальные (1,5,156,487) к сожалению нет. Подскажите пожалуйста, можно ли вывести сразу все выбранные значения.
Заранее большое спасибо!

  Ответить  
 
 автор: cheops   (30.12.2010 в 14:38)   письмо автору
 
   для: АлексейК   (30.12.2010 в 13:26)
 

Переработайте форму следующим образом (т.е. добейтесь, чтобы у вас был массив данных)
<form action="obrabot.php" method="post" name="dano">
<input name="id[]" type="checkbox" value="1">
<input name="id[]" type="checkbox" value="2">
<input name="id[]" type="checkbox" value="3">

<input name="id[]" type="checkbox" value="500">
<input name="sub" type="submit" value="Отправить">
</form>

А в запрос (после предварительной проверки на SQL-инъекции и на то, что выбрано хотя бы одно значение) сформируйте следующим образом
<?php
  $query 
"SELECT * FROM tabl ".
                   
"WHERE id IN (".implode(", "$_POST['id']).")";
  
$result=mysql_query($query,$db);
?>

  Ответить  
 
 автор: lightning.say   (30.12.2010 в 15:11)   письмо автору
 
   для: cheops   (30.12.2010 в 14:38)
 

а можно поинтересоваться зачем нужна точка после "SELECT * FROM tabl " ? это всмысле конкатинация строк? чтоб понятнее было?

  Ответить  
 
 автор: cheops   (30.12.2010 в 16:08)   письмо автору
 
   для: lightning.say   (30.12.2010 в 15:11)
 

По привычке набрал... Это чтобы строка была короткая (в пределах 80 символов). Так то, конечно этот разрыв не обязателен.

  Ответить  
 
 автор: АлексейК   (30.12.2010 в 16:19)   письмо автору
 
   для: cheops   (30.12.2010 в 16:08)
 

Спасибо cheops!

Идея о массиве, действительно верная я даже похожую форму сделал, но вот с выводом полей из БД, пока что- то не выходит. Вставил Ваш РНР-код, выводит пустую строку, пытаюсь разобраться в чем дело, но всё равно большое спасибо!

  Ответить  
 
 автор: sim5   (30.12.2010 в 18:30)   письмо автору
 
   для: АлексейК   (30.12.2010 в 16:19)
 

<?
$query 
"SELECT * FROM tabl WHERE id IN (".implode(","array_map('intval',$_POST['id'])).")";

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования