За последние 24 часа нас посетили 55575 программистов и 1719 роботов. Сейчас ищут 853 программиста ...

Проблемы с поиском на сайте.

Тема в разделе "PHP для новичков", создана пользователем prokuror_89, 8 мар 2011.

  1. prokuror_89

    prokuror_89 Активный пользователь

    С нами с:
    13 янв 2011
    Сообщения:
    26
    Симпатии:
    0
    Всем доброе время суток. Я пытаюсь сделать поиск по сайту. У меня есть база данных, которая состоит из таких полей:

    mar model year
    Honda Civic 2004

    Есть форма поиска:
    HTML:
    1.  
    2. <form action="view_search.php" method="post" name="form_s">
    3. <p class="search_t">Пошуковій запит повинен бути не менше 4-х символів</p>
    4. <p><input name="search" type="text" size="25" maxlength="40" />
    5. <input name="search_mod" type="text" size="25" maxlength="40" />
    6. <br><br>
    7. <input class="search_b" name="submit_s" type="submit" value="Шукати" />
    8. </p>
    9. </form>
    10.  
    И есть собственно обработчик который обрабатывает запрос и выводит информацию:

    PHP:
    1.  
    2.  
    3. $db = mysql_connect("localhost","kurs","2345656");
    4. mysql_select_db("kurs",$db);
    5. if(isset($_POST['submit_s'])){$submit_s = $_POST['submit_s'];}
    6. if(isset($_POST['search'])){$search = $_POST['search'];}
    7. if(isset($_POST['search_mod'])){$search = $_POST['search_mod'];}
    8. if(isset($submit_s))
    9. {
    10. if(strlen($search) < 4 or strlen($search_mod) < 4 )
    11. {
    12. exit("<p>Поисковый запрос не введет либо слишком мал.</p>");
    13. }
    14. $search = trim ($search);
    15. $search_mod = trim ($search_mod);
    16. $search = stripslashes ($search);
    17. $search_mod = trim ($search_mod);
    18. $search = htmlspecialchars ($search);
    19. $search_mod = trim ($search_mod);
    20. }
    21. else
    22. {
    23. exit("<p>Вы обратились к даному файлу без необходимых параметров</p>");
    24. }
    25. ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    26. <html xmlns="http://www.w3.org/1999/xhtml">
    27. <head>
    28. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    29. <title>Untitled Document</title>
    30. </head>
    31. <body>
    32. <?php $result = mysql_query("SELECT * FROM avto WHERE `mar` LIKE '%$search%' AND `model` LIKE '%$search_mod%' ;",$db);
    33. if (!$result)
    34. {
    35. echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору [email=admin@ruseller.com]admin@ruseller.com[/email]. <br> <strong>Код ошибки:</strong></p>";
    36. }
    37. if (mysql_num_rows($result) > 0)
    38. {
    39. $myrow = mysql_fetch_array($result);
    40. do
    41. {
    42. printf ("%s",$myrow["year"]);
    43. }
    44. while ($myrow = mysql_fetch_array($result));
    45. }
    46. else
    47. {
    48. echo "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
    49. exit();
    50. }
    51. </body>
    52. </html>
    53.  
    Я думаю что Вы уже заметили что там надо заполнить два поля. Проблема в том что когда заполнил эти два поля то информация не выводится, а пишет Информация по запросу не может быть извлечена в таблице нет записей. хотя запись есть. А если удалить второе поле и оставить только первое то все работает.
    Люди на данном форум не раз мне помогали и я надеюсь что помогут снова. Заранее спасибо.
     
  2. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    не верю, что тебе не советовали выкинуть курсы попова на помойку

    а по теме - попробуй вывести свой запрос прежде чем отправлять в базу, и вручную через ПМА или даже через консоль выполнить данный запрос. увидишь результат, поймёшь причину
     
  3. prokuror_89

    prokuror_89 Активный пользователь

    С нами с:
    13 янв 2011
    Сообщения:
    26
    Симпатии:
    0
    Я новичок и не совсем понимаю о чем Вы говорите, в частности что такое ПМА. Если можно то объясните пожалуйста поподробнее что где менять.
     
  4. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    PhpMyAdmin

    <?php $result = mysql_query("SELECT * FROM avto WHERE `mar` LIKE '%$search%' AND `model` LIKE '%$search_mod%' ;",$db);

    меняем на

    <?php
    $sql = "SELECT * FROM avto WHERE `mar` LIKE '%$search%' AND `model` LIKE '%$search_mod%' ;";
    $result = mysql_query($sql, $db);

    потом дописываем

    <?php
    $sql = "SELECT * FROM avto WHERE `mar` LIKE '%$search%' AND `model` LIKE '%$search_mod%' ;";
    echo $sql; die();
    $result = mysql_query($sql, $db);

    копируем с экрана запрос и выполняем ручками
     
  5. prokuror_89

    prokuror_89 Активный пользователь

    С нами с:
    13 янв 2011
    Сообщения:
    26
    Симпатии:
    0
    Большое спасибо за помощь. Все получилось. Я знал что на этом форуме мне помогут. Спасибо. :D :D :D :D
     
  6. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    может ник сменить, тогда небось будут чаще помогать...