Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.09.2010, 09:53   #1
mrSmarten
Новичок
Джуниор
 
Регистрация: 07.09.2010
Сообщений: 2
По умолчанию Скрипт поиска с возможностью выбора категории в выпадающем меню

Приветствую всех =]
Собственно, по сабжу.
PHP скриптингом занимаюсь совсем недавно, ничего сложного отродясь не писал)
Но вот появилась потребность написать скрипт поиска по БД в MySQL
форма выглядит так:
Код HTML:
<form method="get" action="poisk.php">
<input type="text" name="zapros" size="24" maxlength="25" value=""/>
<input type="hidden" name="searchid" value="148091" />
<input type="submit" name="submit" value="Искать">
</form>

<SELECT name="kategoriya" onchange="this.form.submit()">
<OPTION value="1">Аннотация</OPTION>
<OPTION value="2">Автор</OPTION>
<OPTION value="3">Заглавие</OPTION>
<OPTION value="4">Авторский коллектив</OPTION>
<OPTION value="5">Выходные данные</OPTION>
<OPTION value="6">Все поля</OPTION>
в зависимости от значения выбранного Селектом, у нас должен идти поиск по определённому столбцу в таблице и если результат найден, то вывести строчку из первого столбца+проверить последнее поле и если оно не равно нулю, вывести ещё и его значение.
И вот тут начинаются проблемы. Я не знаю как построить запрос с условием, содержащим разветвление основанное на данных взятых из селекта, да ещё и проверку значения поля с последующим его выводом...
Вот моё "нечто" =)
PHP код:
<?php
//коннект
$link mysql_connect("localhost""root""") or die("Не соединилось!!!");
mysql_select_db("krukaz") or die("Не найдена БД");
//выполнение запроса

$query "SELECT * FROM lolo WHERE (`text` LIKE'%$_GET['zapros']%')LIMIT 20'";
$result mysql_query($query) or die("Запрос ошибочный");

//вывод данных
print "<table>\n";
while (
$line mysql_fetch_array($resultMYSQL_NUM)) {
print 
"\t<tr>\n";
for (
$i=1;$i<=4;$i++) { print "\t\t<td>$line[$i]</td>\n"; }
print 
"\t</tr>\n";
}
print 
"</table>\n";
mysql_free_result($result);
mysql_close($link);
?>
Надеюсь, кто нибудь поможет сформировать запрос и дописать скрипт

Последний раз редактировалось mrSmarten; 08.09.2010 в 10:30.
mrSmarten вне форума Ответить с цитированием
Старый 08.09.2010, 10:55   #2
%$PROregRAMi$t%
Заблокирован
 
Регистрация: 28.05.2010
Сообщений: 65
По умолчанию

Ну у вас же данные из селекта передаются методом POST
Вот в SQL запрос и вбейте значение, которое выбрано селектом.
В вашем случае это будет $_POST['kategoriya']

И еще одно:
Код HTML:
...

<input type="submit" name="submit" value="Искать">
</form>
<!--Форма не отправляет скрипту значение селекта, потому что она заканчивается до селекта.-->
<SELECT name="kategoriya" onchange="this.form.submit()">
<OPTION value="1">Аннотация</OPTION>
<OPTION value="2">Автор</OPTION>
<OPTION value="3">Заглавие</OPTION>
<OPTION value="4">Авторский коллектив</OPTION>
<OPTION value="5">Выходные данные</OPTION>
<OPTION value="6">Все поля</OPTION>

ЗЫ: где-то у меня валялся скрипт для поиска в таблице БД, но выводит он всю строку с результатом целиком.
Могу скинуть в аську, если найду в дебрях исходников... Доработать под ваш вариант его будет несложно.

Последний раз редактировалось %$PROregRAMi$t%; 08.09.2010 в 10:58.
%$PROregRAMi$t% вне форума Ответить с цитированием
Старый 08.09.2010, 11:24   #3
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

Во первых:
PHP код:
SELECT FROM lolo WHERE (`textLIKE'%$_GET['zapros']%')LIMIT 20 
никогда не используйте в запросах непроверенные данные (проверьте и урежьте все как можно)и опять же правильно сказали $_POST

Во вторых формируйте различные запросы в зависимости от выбранной категории
PHP код:
$S funct($_POST['zapros']); // Где funct - функци которая обезопасивает запрос... убирает лишние знаки и спецсимволы
switch (intval($_POST['kategoriya']) {

case 
'1' $sql "SELECT * FROM lolo WHERE (`text` LIKE'%$S%')LIMIT 20"; break 1;

case 
'2' $sql "SELECT * FROM lolo WHERE (`title` LIKE'%$S%')LIMIT 20"; break 1;

примерно так.....
ADSoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт точного поиска по БД с выводом результата kolembet PHP 3 07.09.2010 04:37
Скрипт поиска прокси серверов Pasha_Sh PHP 4 17.06.2010 17:25
Показ цены в зависимости от выбора из меню Anarchist666 JavaScript, Ajax 0 10.02.2010 20:17
скрипт выбора города HITORI2008 PHP 6 29.08.2009 11:12