[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Php <form> и sql запрос
north83
Добрый день, подскажите как решить следующую задачу...
есть Форма:
в ней 6 <select>
1.Имя
2.Фамилия
3.Пол
4.Возраст
5.Страна
6.Город

Т.е. это своего рода фильтр данных из Базы MYSQL

пользователь к примеру хочет увидеть список всех Ивановых проживающих в России.
Выбираем 2.Фамилия - Иванов
5.Страна - Россия

Формируем запрос к базе и из таблицы выдаем всех Ивановых проживающих в России и т.д.

Проблема в следующем, что пользователь не выбирает все данные в форме и как составить запрос к базе в таком случае не могу понять...
SELECT *
FROM table.base
WHERE ... как организовать условие?
т.к. в одном случае требуется country = "Россия" AND familia = "Иванов"

В другом случае WHERE country = "Россия" и все...

Делать через If / else все мыслимые комбинации переменных и под каждый случай писать свой запрос не вариант, т.к. свойств выборки данных может быть очень много... как реализовать? подскажите люди добрые )

Может какое значение переменной присваивать чтобы она не влияла на услвие where? или как то динамически составлять запрос в зависимости от кол-ва не NULL переменных ? Help



Спустя 23 минуты, 39 секунд (29.08.2010 - 21:42) Nord написал(а):
Я бы сделал примерно так:

// По полученным из формы данным нужно сформировать
// массив вида: {'поле_в_таблице' => 'нужное_значение'}

$options = array('firstname' => 'Имя', 'lastname' => 'Фамилия', 'age' => 'Возраст');

// В цикле сформировываем условие выборки
$where = '';
foreach ($options as $field => $value){
if ($where != '') $where .= ' AND ';
$where .= "$field = '$value'";
}
// добавляем ключевое поле WHERE в запрос
if ($where != '') $where = 'WHERE ' . $where;

// Конечный запрос
$sql = 'SELECT * FROM table.base ' . $where;
echo $sql; // SELECT * FROM table.base WHERE firstname = 'Имя' AND lastname = 'Фамилия' AND age = 'Возраст'

Спустя 37 минут, 38 секунд (29.08.2010 - 22:20) north83 написал(а):
СпасиБ разобрался )
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.