подскажите как лучше сделать поиск по базе?

Vlad_c

Guest
подскажите как лучше сделать поиск по базе?

есть анкетные данные в базе, нажно организовать поиск по нескольким полям порядка 6 полей, причем например человек может искать по или более полям, те поля(selecty) которые не учавствуют в поиске имеют значение ="Не имеет значение", как лучше организовать запрос поиска через конструкцию if
и запроса
$r=mysql_query("select * from addresume where id like '%$T1%' && password like '%$T2%'"); или можно как то еще?
е еще мне непонятно как откидывать те поля которые имеют значение="Не имеет значение", т.е. через value selecta или через сравнение текста?
 

Кром

Новичок
Сделай небольшой конструктор SQL запроса и в зависимости от наличия выбраных полей создавай запрос.
Например:

$QUERY = '';
$QUERY_AND = ' AND ';

if ($_POST['name'])
{
$QUERY .= ' `name` = "'.$_POST['name'].'"';
}

if ($_POST['surname'])
{
if ($QUERY) $QUERY .= $QUERY_AND;
$QUERY .= ' `surname` = "'.$_POST['surname'].'"';
}

// И далее

$QUERY = 'SELECT * FROM `table`WHERE '.$QUERY;

Вобщем вариантов можно придумать много.
 

Vlad_c

Guest
можно более понятно плиз:)
как применить именно для 6 полей
 

Кром

Новичок
Я показал тебе вариант с двумя полями. Вариант с 6 полями ничем не отличается. Где именно ты видишь затруднение?
 

Vlad_c

Guest
$QUERY_1 = 'что здесь должно быть?';
$QUERY_2 = ' ?';
...........
$QUERY_N = ' ?';


if ($_POST['name это имя поля?'])- что это за проверка?
{
$QUERY .= ' `nameэто имя поля?` = "$_POST['name']"'; - что мы помещаем в $QUERY?
}

if ($_POST['surname'])
{
if ($QUERY) $QUERY .= $QUERY_AND;
$QUERY .= ' `surname` = "$_POST['surname']"';
}

И далее

$QUERY = 'SELECT * FROM `table`WHERE '.$QUERY;
 

Vlad_c

Guest
if ($ select == "Не имеет значение")
{$select = '%';}

if ($User == "")
{$User = '%';}
...............................................
$query = ("SELECT * FROM table WHERE spec LIKE '$select%' AND ...............
как думаешь так можно?
 

su1d

Старожил PHPClubа
зачем несколько раз дёргать регэксп?
можно ведь и так:
[sql] SELECT * FROM table_name WHERE CONCAT(fld1,' ',fld2,' ',fld3) LIKE '%$query%'[/sql]
 

Brezee

Новичок
можно еще испольщовать полнотекстовый поиск, создай индексы Full Text и используй match. Подробности в хелпе.
 

Кром

Новичок
Vlad_c
Тебе нужно ознакомиться с передачей данных из форм. С массивами POST и GET. С сзданием SQL запросов на основе простых примеров.
http://faq.phpclub.net/docs
Потому что сейчас ты задешь столько вопросов, что легче весь код написать за тебя, чем отвечать на все эти вопросы.

>$QUERY_1 = 'что здесь должно быть?';
Здесь должны быть твои запросы.

>if ($_POST['name это имя поля?'])- что это за проверка?
Проверка на наличие данных поступивших от пользователя через форму (см. мануал)

>$QUERY .= ' `nameэто имя поля?`
Да, имя поля.

>"$_POST['name']"'; - что мы помещаем в $QUERY?
Да, то что поимещаем в запрос (см. мануал)
 

ForJest

- свежая кровь
Сдохнет твой поиск на первой тысяче записей в базе.
 
Сверху