Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Выпадающий список для поиска
 
 автор: TetRiska   (22.11.2008 в 01:43)   письмо автору
 
 

Всем привет. К сожалению много тем рассматривалось на форуме, но я не нашел для себя нужного. Имеется форма
<form action="view_search.php" method="get" name="form_s">
<span class="search_s">Поисковый запрос должен быть<br> не менее 4-х символов</span>
<br><br>
<span class="search_ss">Поиск по:</span>
<select name="category">
  <option value="1">названию</option>
  <option value="2">жанру</option>
  <option value="3">режиссеру</option>
  <option value="4">актерам</option>
  <option value="5">дате выхода</option>
  <option value="6">формату</option>
  <option value="7">качеству</option>
</select>
<br><br>
<input name="search" type="text" size="25" maxlength="40" />
<br>
<input class="search_b" name="submit_s" type="submit" value="Искать" />
</form>


В обработчике обязательно получаю такие данные

if (isset($_POST['category'])) { $cat = $_POST['category'];}
if (isset($_POST['submit_s'])) { $submit_s = $_POST['submit_s'];}
if (isset($_POST['search']))   { $search = $_POST['search'];}


Имеется такой запрос

$result = mysql_query("SELECT id,title,description,date,author,mini_img,view,rating,q_vote FROM data WHERE MATCH(title) AGAINST('$search')",$db);


MATCH(title) - title является в базе

Имя ключа       Тип            Поле
title                       FULLTEXT          title 


И теперь вопрос...Как мне выбрав из списка к примеру название и введя в поле текст вывелся результат?
- Переменную $cat записать в массив и потом работать с его елементами? если да - будьте добры примерчик
- уже сразу переменную $cat использовать в запросе? если да - будьте добры примерчик

Благадарю

  Ответить  
 
 автор: Николай2357   (22.11.2008 в 03:15)   письмо автору
 
   для: TetRiska   (22.11.2008 в 01:43)
 

С превеликим удовольствием Вам помогу, если Вы покажете, где же это поле "текст" находится...

  Ответить  
 
 автор: TetRiska   (22.11.2008 в 10:47)   письмо автору
 
   для: Николай2357   (22.11.2008 в 03:15)
 

<input name="search" type="text" size="25" maxlength="40" /> 


Это и есть поле для ввода текста. В базе ему соответствует поле title

А вот файл обработчик

<? include ("blocks/bd.php"); 

if (isset(
$_POST['category'])) { $cat $_POST['category'];}
if (isset(
$_POST['submit_s'])) { $submit_s $_POST['submit_s'];}
if (isset(
$_POST['search']))   { $search $_POST['search'];}

if (isset(
$submit_s)) 

if (empty(
$search) or strlen($search)<4)
{
exit(
"<p>Поисковый запрос не введен, либо его длинна менее 4-х символов.</p>");
}

$search trim($search);
$search stripslashes($search);
$search htmlspecialchars($search);

}
else { exit(
"<p>Вы обратились к файлу без необходимых параметров.</p>"); }
?>


И запрос на выборку

$result = mysql_query("SELECT id,title,description,date,author,mini_img,view,rating,q_vote FROM data WHERE MATCH(title) AGAINST('$search')",$db);

  Ответить  
 
 автор: Николай2357   (22.11.2008 в 14:40)   письмо автору
 
   для: TetRiska   (22.11.2008 в 10:47)
 

Ну судя по названию, Вы хотите организовать поиск. Тогда наверное так:
<?
$result 
mysql_query("SELECT id,title,description,date,author,mini_img,view,rating,q_vote FROM data WHERE (поле для поиска) LIKE '%".$search."%'",$db);

или я неправильно понял, что требуется...

  Ответить  
 
 автор: Николай2357   (22.11.2008 в 15:32)   письмо автору
 
   для: TetRiska   (22.11.2008 в 10:47)
 

Кажется дошло...
Можно переключателем попробовать:
<?
switch($cat)
{
case 
"1":
$pole "title";
break;
.
.
.
case 
"7":
$pole "rating";
}
Можно массив разобрать:
<?
$mass 
= array("1"=>"title", . . . . . "rating");

$pole $mass[$cat];
выбирайте.

  Ответить  
 
 автор: TetRiska   (22.11.2008 в 23:01)   письмо автору
 
   для: Николай2357   (22.11.2008 в 15:32)
 

Хмм выбрал я с массивом:

if (isset($_POST['category'])) { $cat = $_POST['category'];}

$mass = array
(
"1"=>'title',
"2"=>'genre',
"3"=>'producer',
"4"=>'actor',
"5"=>'date_s',
"6"=>'format',
"7"=>'quality',
);
$pole = $mass['$cat'];


Запрос переделал на такой:

$result = mysql_query("SELECT id,title,description,date,author,mini_img,view,rating,q_vote FROM data WHERE $pole LIKE '%".$search."%'",$db);


Делаю поиск по названию и вписую в поле для поиска название фильма, кот. содержится в поле title получаю такой нотис:

Notice: Undefined index: $cat

и

код ошибки:

You have an error in your SQL syntax near 'LIKE '%Wanted%'' at line 1

В чем подвох?

  Ответить  
 
 автор: Николай2357   (23.11.2008 в 00:01)   письмо автору
 
   для: TetRiska   (22.11.2008 в 23:01)
 

<?
$pole 
$mass['$cat'];
кавычки уберите.

  Ответить  
 
 автор: TetRiska   (23.11.2008 в 00:13)   письмо автору
 
   для: Николай2357   (23.11.2008 в 00:01)
 

Прошу прощения это я натупил)))

вот так нада было

if (isset($_POST['category'])) { $category = $_POST['category'];}

$mass = array
(
"1"=>'title',
"2"=>'genre',
"3"=>'producer',
"4"=>'actor',
"5"=>'date_s',
"6"=>'format',
"7"=>'quality',
);
$pole = $mass[$category];


не $cat а $category )))

  Ответить  
 
 автор: Николай2357   (23.11.2008 в 01:43)   письмо автору
 
   для: TetRiska   (23.11.2008 в 00:13)
 

Тогда уж лучше так:
<?
$category 
= isset($_POST['category'])?$_POST['category']:null;

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования