|
|
|
| Уважаемые, скажите пожалуйста как осуществить такой запрос:
у меня есть 2 поля ввода 1-от и 2-до какая функция осуществляет выборку из таблицы в этом промежутке например от 10 до 50? | |
|
|
|
|
|
|
|
для: chexov
(17.06.2007 в 13:37)
| | SELECT * FROM table WHERE pole>=10 and pole<=50;
pole - поле
table - таблица | |
|
|
|
|
|
|
|
для: CrazyAngel
(17.06.2007 в 14:22)
| | А как лучше объеинить несколько запросов в один если я ищу по нескольким параметрам которые находятся в одной таблице в разных полях?
Т.е ищу например: По полу(М или Ж), по Возрасту(от и до) и т.д
Подскажите пожалуйста а то у меня очень громоздкий код выходит | |
|
|
|
|
|
|
|
для: chexov
(17.06.2007 в 15:26)
| | соединяйте условия поиска implode(' AND ', $conds) | |
|
|
|
|
|
|
|
для: Trianon
(17.06.2007 в 15:42)
| | >соединяйте условия поиска implode(' AND ', $conds)
$conds? мои переменные? | |
|
|
|
|
|
|
|
для: chexov
(17.06.2007 в 15:47)
| | $conds - массив , хранящий сформированные условия.
например
$conds = array();
if(!empty($_GET['age_min'])) $conds[] = "age >= " .intval ($_GET['age_min']);
if(!empty($_GET['age_max'])) $conds[] = "age <= " .intval ($_GET['age_max']);
if(!empty($_GET['gender'])) $conds[] = "gender = ".$genders[3&$_GET['gender']];
|
| |
|
|
|
|
|
|
|
для: Trianon
(17.06.2007 в 16:01)
| | это я понял а дальше как запрос с $conds сформировать?
SELECT * FROM table WHERE .......;
|
что после where? | |
|
|
|
|
|
|
|
для: chexov
(17.06.2007 в 16:07)
| | после WHERE результат implode | |
|
|
|
|
|
|
|
для: Trianon
(17.06.2007 в 16:11)
| | все же можно пример запроса полностью ,как выглядит а т омутил и ничего не вышло:( | |
|
|
|
|
|
|
|
для: chexov
(17.06.2007 в 19:15)
| | показывайте, что делали и что получили.
Пример запроса я показал. | |
|
|
|
|
|
|
|
для: Trianon
(17.06.2007 в 19:42)
| |
$conds = array();
if(!empty($_GET['1q'])) $conds[] = "s >= " .intval ($_GET['1q']);
if(!empty($_GET['2q'])) $conds[] = "s <= " .intval ($_GET['2q']);
if(!empty($_GET['3q'])) $conds[] = "d >= ".intval($_GET['3q']);
if(!empty($_GET['4q'])) $conds[] = "d <= ".intval($_GET['4q']);
|
Дальше я пробовал сформировать запрос но...
$query = mysql_query("SELECT * FROM `table` WHERE implode(' AND ', $conds);");
|
Так?? | |
|
|
|
|
|
|
|
для: chexov
(17.06.2007 в 19:49)
| |
$query = mysql_query("SELECT * FROM `table` WHERE ".implode(' AND ', $conds));
|
| |
|
|
|
|
|
|
|
для: Trianon
(17.06.2007 в 20:29)
| | Не получается так, гичего не выводит:( | |
|
|
|
|
|
|
|
для: chexov
(18.06.2007 в 04:28)
| | мне так и не ответят? | |
|
|
|
|
|
|
|
для: chexov
(18.06.2007 в 11:50)
| | Сообщение об ошибке какое-нибудь выводится? | |
|
|
|
|
|
|
|
для: cheops
(18.06.2007 в 12:03)
| | не то чтобы ошибка, ваш запрос ничего не дал! хотя я вводил данные которые содержатся в таблице | |
|
|
|
|
|
|
|
для: chexov
(18.06.2007 в 12:14)
| | Приводите дамп структуры и данных (показательный фрагмент)
и код php. | |
|
|
|
|
|
|
|
для: Trianon
(18.06.2007 в 12:36)
| |
CREATE TABLE `table` (
`id` int(11) NOT NULL auto_increment,
`login` text,
`password` text,
`name` text,
`sex` text,
`age` text,
`ves` text,
`rost` text
);
|
Код:
print "Пол
<select name="pol">
<option value="zh">Ж</option>
<option value="mu">М</option></select><br/>";
print "Рост
от: <input type="text" name="r_ot" maxlength="3" size="3" format="*N"/> до: <input type="text" name="r_do" maxlength="3" size="3" format="*N"/><br/>";
аналогичные поля v_ot, v_do, a_ot, a_do
|
$conds = array();
if(!empty($a_ot)) $conds[] = "".age." >= " .intval ($a_ot);
if(!empty($a_do)) $conds[] = "".age." <= " .intval ($a_do);
if(!empty($v_ot)) $conds[] = "ves >= ".intval($v_ot);
if(!empty($v_do)) $conds[] = "ves <= ".intval($v_do);
if(!empty($r_ot)) $conds[] = "rost >= ".intval($r_ot);
if(!empty($r_do)) $conds[] = "rost <= ".intval($r_do);
if(!empty($pol)) $conds[] = "sex = ".intval($pol);
$query = mysql_query("SELECT * FROM `table` WHERE ".implode(' AND ', $conds).";");
if(mysql_affected_rows()==0){print"По вашему запросу ничего не найдено!<br/>";}
while($result=mysql_fetch_array($query))
{
print " ".$result['login']." <br/>";
}
|
| |
|
|
|
|
|
|
|
для: chexov
(18.06.2007 в 14:04)
| | Дамп данных Вы не привели.
Но и сейчас могу сказать, что считать будет неправильно, из-за того, что Вы, это как минимум, некорректно храните данные в таблице.
Если данные числовые - хранить их нужно в числовом поле , а не в текстовом.
Иначе Вы столкнетесь с тем, что вес в 105 кг окажется меньше 90 кг. Единица меньше девятки.
Кроме того, неясно, как (и зачем) буковки mu zh Вы пропихиваете через intval.
Я полагал , проще обойтись цифрами. 1 - жен 2 -муж . Или наоборот. | |
|
|
|
|
|
|
|
для: Trianon
(18.06.2007 в 14:34)
| | я привел имена переменных , образно, исправил поля таблицы, все равно не работает!:( | |
|
|
|
|
|
|
|
для: chexov
(18.06.2007 в 14:38)
| | Мне стыдно. :) | |
|
|
|
|
|
|
|
для: Trianon
(18.06.2007 в 14:43)
| | Нет так нет! толком ничего не подсказали:( | |
|
|
|
|
|
|
|
для: CrazyAngel
(17.06.2007 в 14:22)
| | SELECT * FROM table WHERE pole BETWEEN 10 AND 50; | |
|
|
|