Поиск и условия с логикой помогите

Статус
В этой теме нельзя размещать новые ответы.

pronax

Постоялец
Регистрация
20 Сен 2008
Сообщения
147
Реакции
10
Привет всем!
Пишу поиск по сайту, всё передаётся get запросами, вот хочу посоветоваться, так как условий очень много, хотел бы узнать как это реализовать попроще, потому как описывать все "условия поиска", мне кажется не правильным.
Пример, как я знаю сделать можно:
PHP:
query1 = 'SELECT * WHERE title = $title';
query2 = 'SELECT * WHERE title = $title and cost = $cost';
query3 = 'SELECT * WHERE title = $title and cost = $cost and brand = $brand';
query4 = 'SELECT * WHERE title = $title and brand = $brand';
и т.п. но там слишком много будет и каждый случай не проверить, как это сделать более правильным путём?
 
Я составлял строку запроса динамически, то есть, если пользователь тыкнул по чекбоксу brand то дописываем к исходному запросу and brand=$brand. Но получилось тоже не очень удобно, но проще чем искать все возможные комбинации
 
Я составлял строку запроса динамически, то есть, если пользователь тыкнул по чекбоксу brand то дописываем к исходному запросу and brand=$brand. Но получилось тоже не очень удобно, но проще чем искать все возможные комбинации
можно пример?
 
ПРимер в общем виде:
PHP:
$query='SELECT * FROM tablename WHERE 1=1'
if($title)
  $query.=" AND `title='$title' ";
if($cost)
  $query.=" AND `cost`='$cost' "; 
  . . . . . . . . . . . . . 
if(чекбокс какой-то отмеченный, либо текстовое поле не пустое)
  $query.=" AND `поле`='значение' "; 
$res=mysql_query($query);
PS. И не забываем конечно про SQL-injection
 
ПРимер в общем виде:
...
PS. И не забываем конечно про SQL-injection
Спасибо за пример.
нашёл в соседней теме примерно тоже самое:
PHP:
$fnd = ($fcountry != '' ? ' and country = "'.addslashes($fcountry).'"' : '').
       ($fcity != '' ? ' and city = "'.addslashes($fcity).'"' : '').
       ($ffound != ''  ? ' and found = "'.addslashes($ffound).'"' : '').
       ($ffor != ''  ? ' and forwhat = "'.addslashes($ffor).'"' : '');

$zapros = "SELECT * FROM users WHERE 1 ".$fnd;

только вот вопрос с именно динамическим вопросом остался, потому как если добавлять ещё поля, то нужно дописывать php код, лучше решение чем моё, но всё же интересует более легкий, есть варианты?
 
Если вы пока что не сильно шпрехаете на логике составления МySQL запросов и владеете PHP, а задачу необходимо решить в кратчайшие сроки.
Я бы вам до поры до времени посоветовал, составлять отдельные запросы для каждого случая, а параллельно экспериментировать с динамическим формированием MySQL запросов средствами PHP.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху