X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> поиск в БД от и до
Ольга_hb
Ольга_hb
Topic Starter сообщение 19.6.2009, 12:22; Ответить: Ольга_hb
Сообщение #1


Проблема такая, есть поиск по БД, Нужно чтобы в одной из колонок пользователь мог поставить например от 500 до 700, и все что соответствует этим параметрам вывелось бы.
Сам скрипт поиска описан тут http://www.html.by/showthread.php?t=6173

А изменения касаются цены и года выпуска.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Ольга_hb
Ольга_hb
Topic Starter сообщение 22.6.2009, 19:17; Ответить: Ольга_hb
Сообщение #2


Я наверно непонятно описала задачу

Мне нужно внести изменения подобные http://auto.gorod55.ru/find.asp
в поиске цены.
А у меня пока так написано:
[php]<td>&nbsp;&nbsp;Цена тыс.руб.</td><td><input type="text" name='cena' value="<?=$cena?>"></td></tr>
[/php]

т.е. поле для ввода с и до я создать могу, а как сделать, чтобы поиск искал "с" и "до"?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Galen
Galen
сообщение 22.6.2009, 20:58; Ответить: Galen
Сообщение #3


В SQL есть BETWEEN для таких целей.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Ольга_hb
Ольга_hb
Topic Starter сообщение 23.6.2009, 10:21; Ответить: Ольга_hb
Сообщение #4


А на русском языке есть подобная информация?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Ворон
Ворон
сообщение 23.6.2009, 12:32; Ответить: Ворон
Сообщение #5


citforum
mysql.ru
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Ольга_hb
Ольга_hb
Topic Starter сообщение 23.6.2009, 15:31; Ответить: Ольга_hb
Сообщение #6


Ух, ты, здорово, попробую!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Ольга_hb
Ольга_hb
Topic Starter сообщение 23.6.2009, 16:10; Ответить: Ольга_hb
Сообщение #7


У меня с первого раза опять не получается :wacko:
[PHP]
$additional="";


if (isset($_GET["cena"]) && !empty($_GET["cena"])) $additional .= " AND `cena` = '{$_GET["cena"]}'";
[/PHP]
Вот как я изменила запрос:
[PHP]$query = "SELECT * FROM `avto` WHERE 1 ".$additional." where cena BETWEEN ".$ot." AND ".$do;
[/PHP]

и соответственно форму поиска
[PHP]
<td>&nbsp;&nbsp;Цена тыс.руб. </td><td> от<input type="text" name='cena' value="<?=$ot?>">до <input type="text" name='cena' value="<?=$do?>"> </td></tr>
[/PHP]

PHP меня снова непонял (точнее я его) и ругается на переменные ot и do

Где я напутала?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Ворон
Ворон
сообщение 23.6.2009, 17:44; Ответить: Ворон
Сообщение #8


1. в запросе не то написано.

у вас две секции WHERE в запросе чего быть не может. сделайте одну.
если у вас несколько условий, то они могут соединяться друг с друг другом при помощи операндов OR, AND (в зависимости от того, что вам нужно).
к примеру:

SELECT * FROM AVTO
WHERE
CENA BETWEEN $OT AND $DO

т.е. должна быть конструкция типа ПОЛЕ = ЗНАЧЕНИЕ.

если же у вас в $additional хранится куча всякий условий, хотя вроде это не так (на марку, пробег, объем движка), тогда

SELECT * FROM AVTO
WHERE
(CENA BETWEEN $OT AND $DO)
AND ($ADDITIONAL)

но не забывайте, что $additional должен состоять из конструкций: ПОЛЕ1 = ЗНАЧЕНИЕ1 AND|OR ПОЛЕ2 = ЗНАЧЕНИЕ2

2. поменяйте логику в формировании $additional
или там собирайте все условия, не добавляйте ничего в запросе.
или собирайте только часть, а ограничение по цене вынесите в запрос

даешь единообразие
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Ольга_hb
Ольга_hb
Topic Starter сообщение 24.6.2009, 17:15; Ответить: Ольга_hb
Сообщение #9


(Ворон @ 23.6.2009, 20:44) *
2. поменяйте логику в формировании $additional
или там собирайте все условия, не добавляйте ничего в запросе.
или собирайте только часть, а ограничение по цене вынесите в запрос

Скрипт поиска писала не я, как и что поменять в логике просто не знаю, пока сделала следующее:
строку
$query = "SELECT * FROM `avto` WHERE 1 ".$additional." where cena BETWEEN ".$ot." AND ".$do;
заменила на
$query = "SELECT * FROM `avto` WHERE 1 (CENA BETWEEN $OT AND $DO) AND ($ADDITIONAL)";

Теперь надо внести изменение в:

(Ворон @ 23.6.2009, 20:44) *
$additional должен состоять из конструкций: ПОЛЕ1 = ЗНАЧЕНИЕ1 AND|OR ПОЛЕ2 = ЗНАЧЕНИЕ2


$additional и правда много разных условий содержит
[php]if (isset($_GET["marka"]) && !empty($_GET["marka"])) $additional .= " AND `marka` LIKE '%{$_GET["marka"]}%'";
if (isset($_GET["model"]) && !empty($_GET["model"])) $additional .= " AND `marka` LIKE '%{$_GET["model"]}%'";
if (isset($_GET["gv"]) && !empty($_GET["gv"])) $additional .= " AND `gv` = '{$_GET["gv"]}'";
if (isset($_GET["obem"]) && !empty($_GET["obem"])) $additional .= " AND `obem` = '{$_GET["obem"]}'";
if (isset($_GET["kpp"]) && !empty($_GET["kpp"])) $additional .= " AND `kpp` = '{$_GET["kpp"]}'";
if (isset($_GET["privod"]) && !empty($_GET["privod"])) $additional .= " AND `privod` = '{$_GET["privod"]}'";
if (isset($_GET["cena"]) && !empty($_GET["cena"])) $additional .= " AND `cena` = '{$_GET["cena"]}'";
if (isset($_GET["sost"]) && !empty($_GET["sost"])) $additional .= " AND `sost` = '{$_GET["sost"]}'";
[/php]

Пробовала сделать предложенное, но меняю что-то не то или не так
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Ворон
Ворон
сообщение 24.6.2009, 22:06; Ответить: Ворон
Сообщение #10


и вот в эту кучу проверок вам нужно добавить еще одну, которая создаст условие

cena between $ot and $do

а сам запрос будет:

$query = "select * from avto" . ($additional ?
" where $additional" : "");

пробел не потеряйте
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Smmsearch.net - поиск самой дешевой накрутки в социальных сетях.
0 Professor7717 3294 13.8.2021, 19:53
автор: Professor7717
Открытая тема (нет новых ответов) Поиск кодера в команду. PHP, Pyton. На постоянку.
7 getsend_mw 2867 3.2.2021, 21:15
автор: getsend_mw
Открытая тема (нет новых ответов) Поиск копирайтера на игровую тематику
Поиск копирайтера на игровую тематику
4 a1ex777 1653 2.10.2020, 16:01
автор: AndreyBozhenko
Открытая тема (нет новых ответов) SmmBox - поиск, аналитика и отложенная публикация в соцсетях. Официально!
23 smmbox 11940 13.5.2020, 11:12
автор: smmbox
Открытая тема (нет новых ответов) Поиск, сбор информации, парсинг (недорого)
Предлагаю услуги по поиску, сбору информации, парсингу и т.д.
0 Kabardin 1351 11.3.2020, 14:59
автор: Kabardin


 



RSS Текстовая версия Сейчас: 24.4.2024, 19:30
Дизайн