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

Форум MySQL

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

 

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

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

тема: Выбор интервала значений из базы.
 
 автор: 7han   (22.12.2008 в 13:41)   письмо автору
 
 

Есть запрос

$query = "select * from `prod` where `ton` LIKE '%$ton%'
AND `bot` LIKE '%$bot%'
AND `price` >= '$price'
AND `price` <= '$price1'
ORDER BY `id` DESC";
проблема в следующем:
при поиске через форму все работает, а вот при первоначальной загрузке этой страницы не дает ни одной строки из базы, и именно из-за поиска интервала цен.
Цены хранятся в столбце с типом DECIMAL.
Подскажите по синтаксису, а то я с больше/меньше первый раз столкнулся.

  Ответить  
 
 автор: USED   (22.12.2008 в 13:59)   письмо автору
 
   для: 7han   (22.12.2008 в 13:41)
 

1) Используйте BETWEEN
2) Назначьте значение для интервала по умолчанию, видимо, у Вас его нет

  Ответить  
 
 автор: 7han   (22.12.2008 в 14:15)   письмо автору
 
   для: USED   (22.12.2008 в 13:59)
 

BETWEEN пробовал - не помогает, то же самое.
По умолчанию значения стоят.

  Ответить  
 
 автор: USED   (22.12.2008 в 14:21)   письмо автору
 
   для: 7han   (22.12.2008 в 14:15)
 

Напишите, какой запрос у вас получается по умолчанию (подставив значения вместо переменных)

  Ответить  
 
 автор: 7han   (22.12.2008 в 14:38)   письмо автору
 
   для: USED   (22.12.2008 в 14:21)
 

Без "лишнего" вот такой:

$query = "select * from `prod` where `price` >= 0 AND `price` <= 90000000 ORDER BY `id` DESC";

  Ответить  
 
 автор: USED   (22.12.2008 в 15:08)   письмо автору
 
   для: 7han   (22.12.2008 в 14:38)
 

Смею предположить, что наверное все же такой:

$query = "select * from `prod` where `price` >= '0' AND `price` <= '90000000' ORDER BY `id` DESC";

?
и много ли значений удовлетворяют этим условиям?

  Ответить  
 
 автор: 7han   (22.12.2008 в 15:14)   письмо автору
 
   для: USED   (22.12.2008 в 15:08)
 

Мне надо, чтобы все удовлетворяли. Подскажите как надо.

  Ответить  
 
 автор: USED   (22.12.2008 в 15:25)   письмо автору
 
   для: 7han   (22.12.2008 в 15:14)
 


select * from `prod` order by `id` desc

вас не устроит?

  Ответить  
 
 автор: 7han   (22.12.2008 в 15:29)   письмо автору
 
   для: USED   (22.12.2008 в 15:25)
 

а каким образом тогда осуществить выбор пользователем интервала цен?

  Ответить  
 
 автор: USED   (22.12.2008 в 15:48)   письмо автору
 
   для: 7han   (22.12.2008 в 15:29)
 

>> при поиске через форму все работает, а вот при первоначальной загрузке этой страницы не дает ни одной строки из базы

как я понял, проблема при первом открытии страницы; когда необходимо вывести все записи из базы

  Ответить  
 
 автор: 7han   (22.12.2008 в 16:04)   письмо автору
 
   для: USED   (22.12.2008 в 15:48)
 

Все правильно, но ведь форма и этот запрос находятся на одной (этой же) странице.

  Ответить  
 
 автор: USED   (22.12.2008 в 16:20)   письмо автору
 
   для: 7han   (22.12.2008 в 16:04)
 


if ( юзер нажал кнопку "поиск" )

 $query = "select * from `prod` where `ton` LIKE '%$ton%'
AND `bot` LIKE '%$bot%'
AND `price` >= '$price' 
AND `price` <= '$price1' 
ORDER BY `id` DESC";

else // юзер ничего не нажимал, он только что попал на страницу
 $query = "select * from `prod` order by `id` desc";



само действие "юзер нажал.." думаю сможете определить только Вы по известным условиям

  Ответить  
 
 автор: 7han   (22.12.2008 в 16:28)   письмо автору
 
   для: USED   (22.12.2008 в 16:20)
 

Благодарю!
Я просто думал, что есть возможность одним запросом реализовать.

  Ответить  
 
 автор: Loki   (23.12.2008 в 13:04)   письмо автору
 
   для: 7han   (22.12.2008 в 16:28)
 

конечно есть. просто он должен динамически формироваться

  Ответить  
 
 автор: 7han   (23.12.2008 в 16:10)   письмо автору
 
   для: Loki   (23.12.2008 в 13:04)
 

Может подскажете как?

  Ответить  
 
 автор: BinLaden   (23.12.2008 в 16:37)   письмо автору
 
   для: 7han   (23.12.2008 в 16:10)
 

<?php

$cond 
"";

if( ... )
{
    
$cond " WHERE `price` BETWEEN ... AND ... ";
}

$query "SELECT ... {$cond} ORDER BY `id` DESC;";
?>

  Ответить  
 
 автор: 7han   (23.12.2008 в 16:44)   письмо автору
 
   для: BinLaden   (23.12.2008 в 16:37)
 

О, спасибо, попробую.

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

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