Поиск по БД

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

Сообщение senator » Пн июл 07, 2003 6:09 pm

вот такой вопрос:

Код: выделить все
$query = "SELECT name,lastname,email FROM info WHERE $category = '$key'";

   $result = mysql_result($query);

   if (mysql_fetch_row($result) == 0)
       print "Sorry, but no matches were found. Please try your search again:";

       list($name, $lastname, $email) = mysql_fetch_row($result);
 print "<h3>Information:</h3>";
 print "<b>Name:</b> $name <br>";
 print "<b>LastName</b> $lastname <br>";
 print "<b>Email:</b> <a href-\"mailto:$email\">$email</a> <br>";


три переменные пл которым орг. поиск:
$name
$lastname
$email

получаем их из формы

Код: выделить все
<form action="search.php" method="POST">
 Search by:
    <select name="category">
    <br>
   <option value-"name">Name<br>
   <option value="lastname">Lastname<br>
    </select><br><br>
 Keyword: 
    <input type="text" name="key" size="20" maxlength="20"><br><br>
    <input type="submit" value="Search">
 </form>


вроде всё в норме, вот почему то не работает?
вот какая ошибка вылазит:
Warning: Wrong parameter count for mysql_result() in e:\home\localhost\www\search.php on line 7

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in e:\home\localhost\www\search.php on line 9
Sorry, but no matches were found. Please try your search again:
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in e:\home\localhost\www\search.php on line 12
Последний раз редактировалось senator Пн июл 07, 2003 6:44 pm, всего редактировалось 1 раз.
senator
Сержант
 
Сообщений: 34
Зарегистрирован: Пт июн 20, 2003 1:43 pm
Пункты репутации: 0

Сообщение FSA » Вт июл 08, 2003 2:14 am

Вимо у тебя запрос к базе данных не работает. Может ошибка где-то в данных (проверь значение переменных).
Последний раз редактировалось FSA Вт июл 08, 2003 2:18 am, всего редактировалось 1 раз.
"Скажи мне свой IP, и я скажу кто ты!"
Подпись: nslookup
FSA
Подполковник
 
Сообщений: 748
Зарегистрирован: Сб апр 20, 2002 8:38 pm
Откуда: Тавда, Россия.
Пункты репутации: 0

Сообщение ita » Вт июл 08, 2003 6:26 am

попробуй так.

Код: выделить все
$query = "SELECT name,lastname,email FROM info WHERE $category like '".$key."'";
//like - сравнение для текстовых полей, результат будет только в том случае
//если поле $category целиком совпадает c $key,  имхо лучше заменить на
//$query = "SELECT name,lastname,email FROM info WHERE $category like '%".$key."%'";
//хотя кто знает что ты ищешь и что у тебя в $key :)

//дальше я обычно делаю так :
$result = mysql_query($query);
$count = mysql_num_rows($result); // кол-во строк в результате, может быть не одно совпадение
if ($count==0){
   print "Sorry, but no matches were found. Please try your search again:";
   exit; // или return если это функция.
}
//дальше цикл, обработка совпадений.

for ($i=0;$i<$count; $i++){
   $tmp = mysql_fetch_array($result);
   print "<h3>Information:</h3>";
   print "<b>Name:</b> ".$tmp[0]." <br>";
   print "<b>LastName</b> ".$tmp[0]." <br>";
   print "<b>Email:</b> <a href-\"mailto:".$tmp[0]."\">".$tmp[0]."</a> <br>";
}
Последний раз редактировалось ita Вт июл 08, 2003 10:34 am, всего редактировалось 1 раз.
Продается лунный грунт! Предоплата 100%, самовывоз.
ita
Подполковник
 
Сообщений: 717
Зарегистрирован: Ср сен 11, 2002 12:00 am
Откуда: dp.ua
Пункты репутации: 0

Сообщение senator » Вт июл 08, 2003 7:05 am

<!--QuoteBegin--ita+Jul 8 2003, 12:26--></span><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>QUOTE (ita @ Jul 8 2003, 12:26)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin--> попробуй так.

Код: выделить все
$query = "SELECT name,lastname,email FROM info WHERE $category like '".$key."'";
//like - сравнение для текстовых полей, результат будет только в том случае
//если поле $category целиком совпадает c $key,  имхо лучше заменить на
//$query = "SELECT name,lastname,email FROM info WHERE $category like '%".$key."%'";
//хотя кто знает что ты ищешь и что у тебя в $key :)

//дальше я обычно делаю так :
$result = mysql_query($query);
$count = mysql_num_rows($result); // кол-во строк в результате, может быть не одно совпадение
if ($count==0){
   print "Sorry, but no matches were found. Please try your search again:";
   end; // или return если это функция.
}
//дальше цикл, обработка совпадений.

for ($i=0;$i<$count; $i++){
   $tmp = mysql_fetch_array($result);
   print "<h3>Information:</h3>";
   print "<b>Name:</b> ".$tmp[0]." <br>";
   print "<b>LastName</b> ".$tmp[0]." <br>";
   print "<b>Email:</b> <a href-\"mailto:".$tmp[0]."\">".$tmp[0]."</a> <br>";
}
<!--QuoteEnd--> </td></tr></table><span class='postcolor'> <!--QuoteEEnd-->
иду пробовать...
senator
Сержант
 
Сообщений: 34
Зарегистрирован: Пт июн 20, 2003 1:43 pm
Пункты репутации: 0

Сообщение senator » Вт июл 08, 2003 7:14 am

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in e:\home\localhost\www\search.php on line 19


вот эта строка:
$count = mysql_num_rows($result);
в этой строке он зараза и выдайт ошибку
senator
Сержант
 
Сообщений: 34
Зарегистрирован: Пт июн 20, 2003 1:43 pm
Пункты репутации: 0

Сообщение ita » Вт июл 08, 2003 7:52 am

2senator
тогда ето где-то у тебя в самом тексте запроса глюк наверно...
кста, я там наврал немного. вот так должно быть..

Код: выделить все
print "<b>Name:</b> ".$tmp[0]." <br>";
print "<b>LastName</b> ".$tmp[1]." <br>";
print "<b>Email:</b> <a href-\"mailto:".$tmp[2]."\">".$tmp[2]."</a> <br>";


выложи sql-код создания твоей таблицы info
Последний раз редактировалось ita Вт июл 08, 2003 7:53 am, всего редактировалось 1 раз.
Продается лунный грунт! Предоплата 100%, самовывоз.
ita
Подполковник
 
Сообщений: 717
Зарегистрирован: Ср сен 11, 2002 12:00 am
Откуда: dp.ua
Пункты репутации: 0


Вернуться в Программирование

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18

cron