За последние 24 часа нас посетили 61216 программистов и 1744 робота. Сейчас ищут 1149 программистов ...

Поиск на сайте

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

  1. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Надо сделать поиск. Все есть, вот только не знаю как сделать так что бы можно было выбрать все (в даном случае разделы).

    Вот форма:

    PHP:
    <form id="form1" name="form1" method="post" action="search.php">
    <table width="1011" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <th width="472" scope="col"><?php
    include ("mysql.php");
    $query = mysql_query ("SELECT id, title FROM sections ORDER BY title");
    echo "<select name='section' id='section'>";
    while (list ($section_id, $title) = mysql_fetch_array ($query))
    echo "<option value=$section_id>$title</option>";
    echo "</select>";
    ?> </th>
    <th width="140" scope="col"> <select name="type" id="type">
    <option>Предложение</option>
    <option>Спрос</option>
    <option>Обмен</option>
    <option>Сдам</option>
    <option>Сниму</option>
    <option>Разное</option>
    </select></th>
    <th width="332" scope="col"><label>
    <input name="search" type="text" id="search" size="50" />
    </label></th>
    <th width="67" scope="col"><label>
    <input type="submit" name="Submit" value="Искать" />
    </label></th>
    </tr>
    </table>
    </form>





    Вот скрипт который обрабатывает форму:

    PHP:
    <?php
    include ("mysql.php");
    $search = $_POST ['search'];
    $query = mysql_query ("SELECT id, section, type, text, name, email, date FROM announcements WHERE section = '$section', type = '$type' text LIKE '%$search%'");
    while (list ($id, $section, $type, $text, $name, $email, $date) = mysql_fetch_array ($query))
    {
    echo "<table width='300' border ='1' >";
    echo "<tr>";
    echo "<td width='150'>$type</td><td><div align='right'>$date</div></td>";
    echo "</tr>";
    echo "</table>";
    echo "<table width='300' border ='1'>";
    echo "<tr>";
    echo "<td>$text</td>";
    echo "</tr>";
    echo "</table>";
    echo "<table width='300' border ='1'>";
    echo "<tr>";
    echo "<td width='150'>$name</td><td><div align='right'><a href='mailto:$email'>$email</div></td>";
    echo "</table>";
    echo "<br>";
    }
    ?>




    Нужно что бы можно было выбрать все разделы (типы).
    Заранее спасибо.
    Надеюсь на скорую помощь.
     
  2. GreatWasp

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

    С нами с:
    11 янв 2008
    Сообщения:
    94
    Симпатии:
    0
    Адрес:
    Узбекистан, Ташкент.
    Наверное где у тебя идет HTML:
    HTML:
    1.  
    2. <select name="type" id="type">
    3. <option>Предложение</option>
    4. <option>Спрос</option>
    5. <option>Обмен</option>
    6. <option>Сдам</option>
    7. <option>Сниму</option>
    8. <option>Разное</option>
    9.  
    Надо сделать так:
    HTML:
    1.  
    2. <select name="type" id="type">
    3. <option value='all'>Везде</option>
    4. <option>Предложение</option>
    5. <option>Спрос</option>
    6. <option>Обмен</option>
    7. <option>Сдам</option>
    8. <option>Сниму</option>
    9. <option>Разное</option>
    И обработку сделать так:
    PHP:
    1.  
    2.  <?php
    3. include ("mysql.php");
    4. $search = $_POST ['search'];
    5. if ($_POST['type']=='all')
    6. {
    7.     $query = mysql_query ("SELECT id, section, type, text, name, email, date FROM announcements WHERE text LIKE '%$search%'")
    8. }
    9. else
    10. {
    11.    $query = mysql_query ("SELECT id, section, type, text, name, email, date FROM announcements WHERE section = '$section' , type = '$type' text LIKE '%$search%'");
    12. }
    13. while (list ($id, $section, $type, $text, $name, $email, $date) = mysql_fetch_array ($query))
    14. {
    15. echo "<table width='300' border ='1' >";
    16. echo "<tr>";
    17. echo "<td width='150'>$type</td><td><div align='right'>$date</div></td>";
    18. echo "</tr>";
    19. echo "</table>";
    20. echo "<table width='300' border ='1'>";
    21. echo "<tr>";
    22. echo "<td>$text</td>";
    23. echo "</tr>";
    24. echo "</table>";
    25. echo "<table width='300' border ='1'>";
    26. echo "<tr>";
    27. echo "<td width='150'>$name</td><td><div align='right'><a href='mailto:$email'>$email</div></td>";
    28. echo "</table>";
    29. echo "<br>";
    30. }
    31. ?>
    32.  
     
  3. GreatWasp

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

    С нами с:
    11 янв 2008
    Сообщения:
    94
    Симпатии:
    0
    Адрес:
    Узбекистан, Ташкент.
    Только еще при выводе результатов добавь категорию.
     
  4. shreck

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

    С нами с:
    7 авг 2007
    Сообщения:
    479
    Симпатии:
    0
    Адрес:
    Россия, Саратов
    Andrey5555 блин оформляй код по-человечески. Есть же bbcode. А то даже читать не хочеццо
     
  5. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Всмысле, что бы показывало к какой категории принадлежит сообщение?
     
  6. GreatWasp

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

    С нами с:
    11 янв 2008
    Сообщения:
    94
    Симпатии:
    0
    Адрес:
    Узбекистан, Ташкент.
    Andrey5555 угу, если поиск по всем ведется.
     
  7. Andrey5555

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

    С нами с:
    29 ноя 2007
    Сообщения:
    486
    Симпатии:
    0
    Адрес:
    Киев
    Вот появилась еще одна проблема. При поиске мне надо разбить результаты на страницы. Вот весь скрипт:
    PHP:
    1.  
    2. <?php
    3. include ("mysql.php");
    4. $search = $_POST ['search'];
    5. $s_section = $_POST ['section'];
    6. $s_type = $_POST ['type'];
    7. $query1 = mysql_query ("SELECT section, type, text, name, email, date FROM announcements WHERE section = '$s_section' and type = '$s_type' and text LIKE '%$search%'");
    8. $allnum = mysql_num_rows ($query1);
    9. if(!isset($_GET['page']))
    10. $page = 1;
    11. else
    12. $page = ($_GET['page']);
    13. $on_page = 1;
    14. $begin = ($page - 1) * $on_page;
    15. $num_pages = ceil ($allnum / $on_page);
    16. $query = mysql_query ("SELECT section, type, text, name, email, date FROM announcements WHERE section = '$s_section' and type = '$s_type' and text LIKE '%$search%' LIMIT $begin, $on_page");
    17.      while (list ($section, $type, $text, $name, $email, $date) = mysql_fetch_array ($query))
    18.      {
    19.      echo "<table width='300' border ='1' >";
    20.      echo "<tr>";
    21.      echo "<td width='150'>$type</td><td><div align='right'>$date</div></td>";
    22.      echo "</tr>";
    23.      echo "</table>";
    24.      echo "<table width='300' border ='1'>";
    25.      echo "<tr>";
    26.      echo "<td>$text</td>";
    27.      echo "</tr>";
    28.      echo "</table>";
    29.      echo "<table width='300' border ='1'>";
    30.      echo "<tr>";
    31.      echo "<td width='150'>$name</td><td><div align='right'><a href='mailto:$email'>$email</div></td>";
    32.      echo "</tr>";
    33.      echo "</table>";
    34.      echo "<br>";
    35.      }
    36. for($i=0;$i<$num_pages;$i++)
    37. {
    38. $pages = $i+1;
    39. echo "<a href=?page=$pages>$pages</a> ";
    40. }
    41. ?>
    42.  
    Ссылки на страницы выводит. Но при перехлде на любую страницу результат уже не отображаеться. В чем проблема и что мне делать? Спасибо.