За последние 24 часа нас посетили 62163 программиста и 1794 робота. Сейчас ищут 832 программиста ...

Вывод из базы данных

Тема в разделе "PHP для новичков", создана пользователем Ksuha000, 20 авг 2013.

  1. Ksuha000

    Ksuha000 Новичок

    С нами с:
    7 авг 2013
    Сообщения:
    44
    Симпатии:
    0
    Здравствуйте! Меня волнует такой вопрос! У меня есть в бд таблица "каталог", в этой таблице есть такие столбцы, как наименование товара, ссылка, цена, описание. я провожу поиск и хочу на выходе этого поиска выводились ссылки на те наименование, которые подходят под мое искомое слово. Например, ищу слово "купальник", оно встречается у меня 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];}
    }

    ?>
     
  2. Ksuha000

    Ksuha000 Новичок

    С нами с:
    7 авг 2013
    Сообщения:
    44
    Симпатии:
    0
    Чуть-чуть изменила код на такой вот:
    <?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];}
    }

    ?>
    И все заработало!!! Теперь вопрос в следующем: почему заработало???? Ведь получается я делаю два одинаковых по сути запроса! Или нельзя использовать один запрос в нескольких целях?
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    $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);
     
  4. Ksuha000

    Ksuha000 Новичок

    С нами с:
    7 авг 2013
    Сообщения:
    44
    Симпатии:
    0
    Что не так в этой строке?
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    она есть и она делает то, что тебя бесит - обрабатывает первую строку =)

    соотв дальше в цикле идет обработка уже последующих строк
     
  6. Ksuha000

    Ksuha000 Новичок

    С нами с:
    7 авг 2013
    Сообщения:
    44
    Симпатии:
    0
    Да, спасибо большое!!

    Добавлено спустя 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 }
    }
    ?>
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не знаю =)