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

Форум MySQL

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

 

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

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

тема: select multiple, POST и SELECT * FROM tbl where...
 
 автор: Gandzas   (28.11.2006 в 23:58)   письмо автору
 
 

Доброй ночи!
Снова нужна Ваша помощь!

форма для выбора:

Район: </b><select name='region[]' size='3' multiple>  
<option value="%">ВСЕ</option> 
<?
$res
=mysql_query("SELECT DISTINCT region FROM bazarent ORDER BY BINARY region");
  if(
$res)
{
  while(
$baza mysql_fetch_array($res))
    {
     echo (
"<option value='".$baza['region']."'>".$baza['region']."<br></option>");
    }
}
else
{
  echo 
"<p><b>Error: ".mysql_error()."<br>";
  exit();
}
?>
   </select>  


данные передаем методом POST.

При:

<?
print_r
($_POST['region']);
?>

и выбранных позициях, выводит:
Array ( [0] => Бориспольский [1] => Броварской )

Как ЭТО :) теперь прикрутить сюда:

$res=mysql_query("SELECT * FROM bazarent where 
tip LIKE '".$_POST["tip"]."'  
AND region LIKE '".$_POST["region"]."' 
AND ........"); 


P.S. Честно пыталась найти ответ в уже существующих темах. Не нашла... :((

   
 
 автор: cheops   (29.11.2006 в 00:15)   письмо автору
 
   для: Gandzas   (28.11.2006 в 23:58)
 

Для того, чтобы получить доступ к элементу "Борисопольский" следует использовать элемент $_POST['region'][0], для "Броварской" - $_POST['region'][1].

   
 
 автор: Gandzas   (29.11.2006 в 00:21)   письмо автору
 
   для: cheops   (29.11.2006 в 00:15)
 

спасибо, надеюсь, что поняла, а как запретить выбор более, чем 5-ти элементов?

   
 
 автор: cheops   (29.11.2006 в 00:24)   письмо автору
 
   для: Gandzas   (29.11.2006 в 00:21)
 

Для этого используется ключевое слово LIMIT
SELECT DISTINCT region FROM bazarent ORDER BY BINARY region LIMIT 5

   
 
 автор: Gandzas   (29.11.2006 в 00:29)   письмо автору
 
   для: cheops   (29.11.2006 в 00:24)
 

Насколько я понимаю, LIMIT выведет 5 значений, а мне нужно запретить одновременный выбор юзером более, чем 5-ти значений, а из базы как раз вывести все елементы.
Извините за некорректно поставленный вопрос. :)

   
 
 автор: cheops   (29.11.2006 в 12:33)   письмо автору
 
   для: Gandzas   (29.11.2006 в 00:29)
 

Вы можете проверить количество элементов в массиве $_POST['region'], если их больше 5 - выводите сообщение об ошибке
<?php
  
if(count($_POST['region'])) exit("Выбрано более пяти элементов");
?>

   
 
 автор: Gandzas   (29.11.2006 в 00:28)   письмо автору
 
   для: Gandzas   (29.11.2006 в 00:21)
 


$res=mysql_query("SELECT * FROM bazarent where 
tip LIKE '".$_POST["tip"]."' 
AND (region LIKE '".$_POST['region'][0]."' OR region LIKE '".$_POST['region'][1]."') 
AND......


Что неправильно? :(((( Не работает.

   
 
 автор: cheops   (29.11.2006 в 12:32)   письмо автору
 
   для: Gandzas   (29.11.2006 в 00:28)
 

Что mysql_error() возвращает?

   
 
 автор: Gandzas   (29.11.2006 в 13:25)   письмо автору
 
   для: cheops   (29.11.2006 в 12:32)
 

Ничего не возвращает. Складывается ощущение, что таких вариантов базе нет :( Но они есть.

   
 
 автор: Trianon   (29.11.2006 в 14:03)   письмо автору
 
   для: Gandzas   (29.11.2006 в 00:28)
 

В такой ситуации нужно напечатать итоговый текст запроса, и посмотреть, правильно ли он сформирован.
$sql = "SELECT * FROM bazarent where  
tip LIKE '".$_POST["tip"]."'  
AND (region LIKE '".$_POST['region'][0]."' OR region LIKE '".$_POST['region'][1]."')  
AND...... ";
echo $sql;
$res=mysql_query($sql);

   
Rambler's Top100
вверх

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