Как организовать поиск на сайте.

Тема в разделе "Как сделать...", создана пользователем Crazy182, 24 авг 2012.

  1. Crazy182

    Crazy182

    Регистр.:
    29 ноя 2006
    Сообщения:
    205
    Симпатии:
    14
    Сайт делаю на html посредством ssi, нужен поиск на сайте, подскажите хороший скрипт без заморочек особых. Простой обычно поиск. Хост платный.
     
  2. kadurinho

    kadurinho

    Регистр.:
    21 июн 2011
    Сообщения:
    601
    Симпатии:
    242
  3. Crazy182

    Crazy182

    Регистр.:
    29 ноя 2006
    Сообщения:
    205
    Симпатии:
    14
    Глянул описание, страницы в расширении .shtml и php в ней не будет работать, может кто знает свежий скрипт поиска, обращения к php файлам через html форму.
     
  4. kadurinho

    kadurinho

    Регистр.:
    21 июн 2011
    Сообщения:
    601
    Симпатии:
    242
    Причем тут .shtml? Вы код формы вносите в то место которое требуется
    Код:
    <form action="phprusearch/" method="post">
    <input type="text" name="query"><br> <input type="submit" value="Найти">
    </form>
    
     
  5. DimAce

    DimAce Создатель

    Регистр.:
    4 май 2007
    Сообщения:
    11
    Симпатии:
    6
    А чем не подходит Яндекс.Поиск по сайту, созданный с помощью родного конструктора?
    http://site.yandex.ru/searches/new/
     
  6. PSC1410

    PSC1410 Постоялец Нарушитель

    Регистр.:
    10 авг 2008
    Сообщения:
    68
    Симпатии:
    11
  7. xiregroup

    xiregroup Писатель

    Регистр.:
    8 сен 2012
    Сообщения:
    2
    Симпатии:
    2
    PHP:
    <?php
    // Простой поиск по текстовым полям из базы
    $query mysql_real_escape_string urldecode $_GET ['query'] ) );
    $fields = array ();
    // Этот код можно пропустить, и просто вбить в массив $fields нужные поля
    $sql mysql_query "SHOW COLUMNS FROM `table` WHERE `Type` LIKE '%text%' OR `Type` LIKE '%char%'" );
    if (
    is_resource $sql ) && mysql_num_rows $sql ) > 0) {
        while ( (
    $row mysql_fetch_assoc $sql )) != false ) {
            
    $fields [] = "`{$row['Field']}` LIKE '%{$query}%'";
        }
    }
    if (
    count $fields ) > 0) { // это можно сделать в первой проверке и просто сделать
                          // return;
        
    $sql mysql_query "select * from `table` where (" implode " OR "$fields ) . ") здесь доп парамты" );
        if (
    is_resource $sql ) && mysql_num_rows $sql ) > 0) {
            while ( (
    $row mysql_fetch_assoc $sql )) != false ) {
                
    // здесь вывод
            
    }
        }
    }
    + можно сделать разделение слов и сделать

    Код:
    // допустим $querys содержить массив из слов который отправил юзвер например "hello world" array('hello', 'world')
    // где $fields [] = "`{$row['Field']}` LIKE '%{$query}%'"; меняем на
    for ($i=0; $i<count($querys); $i++){
      $fields [] = "`{$row['Field']}` LIKE '%".mysql_real_escape_string($querys[$i])."%'"
    }
    Если нужен поиск как у яндекса.. то тут придётся повозится...