Здравствуйте! Меня волнует такой вопрос! У меня есть в бд таблица "каталог", в этой таблице есть такие столбцы, как наименование товара, ссылка, цена, описание. я провожу поиск и хочу на выходе этого поиска выводились ссылки на те наименование, которые подходят под мое искомое слово. Например, ищу слово "купальник", оно встречается у меня 4 раза, но выводит только 3 ссылки, пропуская первую. Почему? Вот код поиска: <?php $word=trim($_GET['word']); $word=mb_strtolower ($word, "utf-8"); $abc="/(ой|ая|ый|ое|а|у|е|о|ей|ые|и|ы|ом|ем)$/ui"; $word=preg_replace($abc,"",$word); echo $word; $conn=mysql_connect("localhost","root") or die ("=Невозможно установить соединение".mysql_error()); mysql_select_db("electro") or die ("=невозможно выбрать бд".mysql_error()); $mass=("SELECT ssulka FROM katalog WHERE name_tov LIKE '%$word%' OR opus LIKE '%$word%'"); $result=mysql_query($mass) or die (("bed").mysql_error()); if (mysql_affected_rows()>0) { $row=mysql_fetch_assoc($result); $num=mysql_num_rows($result); echo "Найдено по "; echo $word; echo " совпадений:"; echo $num; } while ($line=mysql_fetch_array($result)) { for ($i=0;$i<=$num;$i++) {print $line[$i];} } ?>
Чуть-чуть изменила код на такой вот: <?php $word=trim($_GET['word']); $word=mb_strtolower ($word, "utf-8"); $abc="/(ой|ая|ый|ое|а|у|е|о|ей|ые|и|ы|ом|ем)$/ui"; $word=preg_replace($abc,"",$word); echo $word; $conn=mysql_connect("localhost","root") or die ("=Невозможно установить соединение".mysql_error()); mysql_select_db("electro") or die ("=невозможно выбрать бд".mysql_error()); $mass=("SELECT * FROM katalog WHERE name_tov LIKE '%$word%' OR opus LIKE '%$word%'"); $result=mysql_query($mass) or die (("bed").mysql_error()); if (mysql_affected_rows()>0) { $row=mysql_fetch_assoc($result); $num=mysql_num_rows($result); echo "Найдено по "; echo $word; echo " совпадений:"; echo $num; } $mass_r=("SELECT ssulka FROM katalog WHERE name_tov LIKE '%$word%' OR opus LIKE '%$word%'"); $resultr=mysql_query($mass_r) or die (("bed").mysql_error()); while ($line=mysql_fetch_array($resultr)) { for ($i=0;$i<=$num;$i++) {print $line[$i];} } ?> И все заработало!!! Теперь вопрос в следующем: почему заработало???? Ведь получается я делаю два одинаковых по сути запроса! Или нельзя использовать один запрос в нескольких целях?
$mass=("SELECT * FROM katalog WHERE name_tov LIKE '%$word%' OR opus LIKE '%$word%'"); $result=mysql_query($mass) or die (("bed").mysql_error()); if (mysql_affected_rows()>0) { $row=mysql_fetch_assoc($result);
она есть и она делает то, что тебя бесит - обрабатывает первую строку =) соотв дальше в цикле идет обработка уже последующих строк
Да, спасибо большое!! Добавлено спустя 25 минут 35 секунд: Еще такой вопрос! Почему, когда я в поиск вписываю слово, которое точно встречается один раз, выпадает 2 ссылки, при этом первая нужная, а вторая - на саму страницу результатов поиска. если слово встречается 2 раза, выпадает 6 ссылок. <?php $word=trim($_GET['word']); $word=mb_strtolower ($word, "utf-8"); $abc="/(ой|ая|ый|ое|а|у|е|о|ей|ые|и|ы|ом|ем)$/ui"; $word=preg_replace($abc,"",$word); echo $word; $conn=mysql_connect("localhost","root") or die ("=Невозможно установить соединение".mysql_error()); mysql_select_db("electro") or die ("=невозможно выбрать бд".mysql_error()); $mass=("SELECT ssulka FROM katalog WHERE name_tov LIKE '%$word%' OR opus LIKE '%$word%'"); $result=mysql_query($mass) or die (("bed").mysql_error()); if (mysql_affected_rows()>0) { $num=mysql_num_rows($result); echo "Найдено по "; echo $word; echo " совпадений:"; echo $num; } while ($line=mysql_fetch_array($result)) { for ($i=0;$i<=$num;$i++) { ?><table><tr><td><a href="<?php print $line[$i];?>">cc </a><?php ;?></td></tr></table> <?php } } ?>