|
|
|
| Как сделать расширенный поиск по базе данных, хотелось бы также как и на сайте job.ru http://job.ru/findvac.html
Можете ли что-нибудь посоветовать? Спасибо. | |
|
|
|
|
|
|
|
для: kis-kis
(13.11.2006 в 09:44)
| | Обычно искомые параметры помещаются в различные поля базы данных и в зависимости от выбора пользователя SQL-запрос формируется динамически. | |
|
|
|
|
|
|
|
для: cheops
(13.11.2006 в 12:22)
| | Допустим база такая:
CREATE TABLE `j_vacancy` (
`id` int(11) NOT NULL auto_increment,
`job_title` text NOT NULL,
`cat` int(1) NOT NULL default '0',
`gorod` int(1) NOT NULL default '0',
`sex` int(1) NOT NULL default '0',
`study` int(1) NOT NULL default '0',
`expwork` int(1) NOT NULL default '0',
`age_from` text NOT NULL,
`age_before` text NOT NULL,
`zp` text NOT NULL,
`graf` int(1) NOT NULL default '0',
`zan` int(1) NOT NULL default '0',
`text_vacancy` text NOT NULL,
`org` text NOT NULL,
`name` text NOT NULL,
`tel` text NOT NULL,
`email` text NOT NULL,
`show_email` int(1) default '0',
`who` int(1) NOT NULL default '0',
`period` text NOT NULL,
`status` int(1) default '0',
KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;
|
| |
|
|
|
|
|
|
|
для: kis-kis
(13.11.2006 в 13:01)
| | А что именно требуется организовать запрос к базе? или создать форму?
Если форму то можно попробовать так:
Файл 1.php
<form name="search_data" method="post" action="search.php">
Зарплата: <input class="search" type="text" name="zp"><br>
Город: <input class="search" type="text" name="city"><br>
<a href="#" class=text2 onclick="onclick=search_data.submit(); return false">начать поиск</a></form>
|
обработка же этой формы будет проходить в файле search.php
<?
$zp=$HTTP_POST_VARS['zp'];
$city=$HTTP_POST_VARS['city'];
$query = "select * from j_vacancy zp=$zp and gorod=$city)";
$result = mysql_query($query);
$num_result = mysql_num_rows($result);
if (num_result==0 or num_result==null)
{
print "
По вашему запросу ничего не найдено
";
}
else
{
while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
{
print "
$line[zp]<br>
$line[text_vacancy]<br>
";
}
}
?>
|
| |
|
|
|
|
|
|
|
для: Grozniy
(13.11.2006 в 14:05)
| | Это не подойдет. Т.к. код, который вы предложили уравнивает зарплату, а нужно чтобы сравнивал, например если я напишу зарплата 500, то это не означает что зарплата 1000 меня не устроит. :-) и т.д. к тому же если не заданы условия поиска, то нужно выводить все данные... Но все равно спасибо. | |
|
|
|
|
|
|
|
для: kis-kis
(13.11.2006 в 18:05)
| | Что касается зарплаты, то можно организовать выборку с условием, так же передать переменную ZP из поля и условием if выбирать то что устраивает. Я же писал общую схему.
if ($line[zp]>$zp)
{
print "
........
";
}
|
это же касается и если не заданы условия поиска,
if (!$zp || !$city || !$age)
{
$query ="select * from tables";
print "
.......
";
}
|
Но в этом случае придется для каждого поля оговаривать что печатать если оно не задано. Уверен что есть более короткий код, но я его пока еще не определил. | |
|
|
|
|
|
|
|
для: Grozniy
(13.11.2006 в 18:32)
| | ... скорее в запросе надо написать SELECT * * * zp>=$zp ...
kis-kis, динамически собираете запрос добавляя к " SELECT * FROM j_vacancy " всякие " AND zp>$zp", " AND city='$city' " и т.д. ... в зависимости от того, пусты или нет эти самые $zp и $city | |
|
|
|
|
|
|
|
для: kasmanaft
(13.11.2006 в 19:08)
| | Можно подробнее... А как выяснить пусты они или нет? | |
|
|
|
|
|
|
|
для: kasmanaft
(13.11.2006 в 19:08)
| | Никто не обращал внимания что переменные на job.ru не передаются в строку браузера? Как это сделано, интересно? | |
|
|
|
|
|
|
|
для: kis-kis
(13.11.2006 в 22:00)
| | посмотрите исходный код странички http://job.ru/findvac.html
увидите там это:
<form accept-charset="UTF-8" id="findVacanceForm" method="POST" ... и т.д.
|
просто используется метод POST | |
|
|
|
|
|
|
|
для: kis-kis
(13.11.2006 в 22:00)
| | Там использован метод POST, a не GET.
А для того, чтобы определить пусты переменные или нет, можно использовать функцию empty:
$query = "SELECT * FROM table";
if (!empty($_POST['city']))
$query .= " WHERE city='$city'";
if (!empty($_POST['zp']))
$query .= " AND zp>='$zp'";
|
(примерно так) | |
|
|
|
|
|
|
|
для: kasmanaft
(13.11.2006 в 22:44)
| | Спасибо. А есть принципиальная разница в использовании GET и POST?
Если использовать POST, то тогда как быть с переменными? | |
|
|
|
|
|
|
|
для: kis-kis
(14.11.2006 в 09:27)
| | >Спасибо. А есть принципиальная разница в использовании GET и POST?
Принципиальная разница между ними лишь в том, что параметры GET передаются строку адреса (и далее через заголовок) , а параметры POST - через тело запроса, и соответственно, объем параметров GET из-за этого сильно ограничен. Другой разницы меж ними нет.
>Если использовать POST, то тогда как быть с переменными?
то есть? | |
|
|
|
|
|
|
|
для: Trianon
(14.11.2006 в 10:47)
| | Теперь, я понял. Спасибо... | |
|
|
|