Тема: выборка из база, нужна помощь.

Добрый день Hanut:) у меня тут вопрос, может подскажите. Короче говоря из базы через форму нужно вытащить ту строку которая бы соответствовала заданным на форме параметрам. В принципе это у меня работает но только в том случае если я точну угадаю все параметры то есть таким образом -

$result = mysql_query (

2

Re: выборка из база, нужна помощь.

$result = mysql_query ("SELECT id, name_postav, gorod, data_zapolnen FROM anketa WHERE gorod='$gorod' and rod_deyat='$rod_deyat' and kachvo='$kachvo' ну  и так далее.

Их много, и если человек заранее их не знает то точно угадать очень малый шанс.

3

Re: выборка из база, нужна помощь.

Я хочу сделать на совпадение, т.е. если выбрал только город, показало только тех кто соответствует выбранному городу, если выбрал город и род деятельности показало только их и так далее.

Пытался сделать так:

4

Re: выборка из база, нужна помощь.

$result = mysql_query ("SELECT id, name_postav, gorod, data_zapolnen FROM anketa WHERE (gorod='$gorod') or
(gorod='$gorod' and rod_deyat='$rod_deyat') or (gorod='$gorod' and rod_deyat='$rod_deyat' and kachvo='$kachvo') or (gorod = '$gorod ' and rod_deyat='$rod_deyat' and kachvo='$kachvo' and sbit='$sbit') or (gorod = '$gorod ' and rod_deyat='$rod_deyat' and kachvo='$kachvo' and sbit='$sbit' and komplex='$komplex' ) и так далее, то есть с каждым или добавляю новое сравнения поля и переменной, может я не так пишу но он выводит только по первому полю - gorod, а остальное все не видит. Спасибо за ответ.

5

Re: выборка из база, нужна помощь.

Гриша сказал:

выводит только по первому полю - gorod, а остальное все не видит

Если остальные переменные пустые, то это не самый лучший вариант, правильнее будет формировать однозначный SQL запрос, а вот уже для его формирования включить механизм проверки переменных. Если данные приходят из POST, то можно сделать такой цикл для формирования массива значений и последующего сбора из него условий для SQL запроса.

<?php

$post = array('gorod', 'rod_deyat', 'kachvo');
$aAND = array();
foreach ($post as $value) {
    if (!empty($_POST[$value])) {
        $aAND[] = '`' . $value . '` = "' . addslashes($_POST[$value]) . '"';
    }
}

if (count($aAND) > 0) {
    $sql = 'SELECT `id`, `name_postav`, `gorod`, `data_zapolnen` FROM `anketa`
            WHERE ' . implode(' AND ', $aAND);
}

?>

В данном примере есть одна особенность, в переменной $post содержатся имена полей таблицы anketa и они должны быть идентичны элементам POST массива, то есть, поле gorod в БД соотносится с переменной $_POST['gorod'] передаваемой из формы.

6

Re: выборка из база, нужна помощь.

Спасибо, буду пытаться разобраться. только у меня они приходят методом GET

7

Re: выборка из база, нужна помощь.

Гриша сказал:

только у меня они приходят методом GET

Тогда вместо $_POST массива будет $_GET, в остальном то же самое.