Вход • Регистрация

Готовый скрипт живого поиска

  • 18 декабря 2013 г.
  • Короче напряг я все свои жалкие навыки программизма и замутил живой поиск.
    Он очень сырой и требует доработки нормальных кодеров, но в целом пашет :)

    Вот отсюда можете выдрать JS и корректно применить в своей вьюхе поиска
    Код


    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="content-type" content="text/html" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="author" content="asdfasdf" />
    <title>
    Untitled 3
    </title>

    <style>
    ul {background: #EEE;}
    </style>

    </head>
    <body>
    <script type="text/javascript" src="http://yandex.st/jquery/1.7.1/jquery.min.js">
    </script>
    <script>

    function suggest(inputString){
    if(inputString.length == 0) {
    $('#suggestions').fadeOut();
    } else if(inputString.length >= 2) {
    $.ajax({
    url: "autosuggest.php",
    data: 'act=autoSuggestUser&queryString='+inputString,
    success: function(msg){
    if(msg.length >0) {
    $('#suggestions').fadeIn();
    $('#suggestionsList').html(msg);
    $('#country').removeClass('load');
    }
    }
    });
    }
    }
    function fill(thisValue) {
    $('.input_search').val(thisValue);
    setTimeout("$('#suggestions').fadeOut();", 600);
    }
    function fillId(thisValue) {
    $('#country_id').val(thisValue);
    setTimeout("$('#suggestions').fadeOut();", 600);
    }


    </script>
    <div id="suggest">
    Start to type a country:
    <br />
    <input type="text" size="25" value="" class="input_search" onkeyup="suggest(this.value);" />

    <div id="suggestions" style="display: none;">
    <div id="suggestionsList">
    &nbsp;
    </div>
    </div>
    </div>
    </body>

    </html>




    а вот файл autosuggest.php, который шерстит базу.
    Умный вещей типа подключения классов и т.п. я не умею, поэтому сделал достаточно примитивно, но как умею

    Код


    <?php

    if (isset($_REQUEST['act']) && $_REQUEST['act'] == 'autoSuggestUser' && isset($_REQUEST['queryString']))
    {

    $db_host = '';
    $db_user = '';
    $db_password = '';
    $db_name = '';
    $site_url ='';

    $connect = mysql_connect($db_host, $db_user, $db_password);
    $db = mysql_select_db($db_name, $connect);



    if ($db)
    {
    $string = '';
    $queryString = $_REQUEST['queryString'];
    $queryString = iconv("UTF-8","windows-1251", $queryString);

    $query = "SELECT * FROM `diafan_shop` WHERE `name1` like \"%".$queryString."%\" ";#CONVERT(`id` USING utf8)
    $query_article = "SELECT * FROM `diafan_shop` WHERE `article` like \"".$queryString."%\" ";#CONVERT(`id` USING utf8)
    $query_category = "SELECT * FROM `diafan_shop_category` WHERE `name1` like \"%".$queryString."%\" ";

    $resource = mysql_query($query);
    $resource_article = mysql_query($query_article);
    $resource_category = mysql_query($query_category);

    //Ищем артикул
    if ($resource_article && mysql_num_rows($resource_article) > 0)
    {
    $string = '<ul>';
    while ($result = mysql_fetch_object($resource_article))
    {
    $id_query = $result->id;
    $sef_result = mysql_fetch_object(mysql_query("SELECT * FROM `diafan_rewrite` WHERE `element_id` = '$id_query' AND `trash` = '0'"));
    $sef_url = ($site_url . $sef_result->rewrite);

    $string .= "<li><a href=$sef_url>$result->name1</a></li>";
    }
    $string .= '</ul>';
    $string = iconv("windows-1251","UTF-8", $string);
    echo "Товары найденные по артикулу:";
    echo $string;

    }
    //Ищем категорию
    if ($resource_category && mysql_num_rows($resource_category) > 0)
    {
    $string = '<ul>';
    while ($result = mysql_fetch_object($resource_category))
    {
    $id_query = $result->id;
    $sef_result = mysql_fetch_object(mysql_query("SELECT * FROM `diafan_rewrite` WHERE `cat_id` = '$id_query' AND `trash` = '0'"));
    $sef_url = ($site_url . $sef_result->rewrite);

    $string .= "<li><a href=$sef_url>$result->name1</a></li>";
    }
    $string .= '</ul>';
    $string = iconv("windows-1251","UTF-8", $string);
    echo "Найденные категории:";
    echo $string;
    }


    //Ищем товар
    if ($resource && mysql_num_rows($resource) > 0)
    {
    $string = '<ul>';
    while ($result = mysql_fetch_object($resource))
    {
    $id_query = $result->id;
    $sef_result = mysql_fetch_object(mysql_query("SELECT * FROM `diafan_rewrite` WHERE `element_id` = '$id_query' AND `trash` = '0'"));
    $sef_url = ($site_url . $sef_result->rewrite);

    $string .= "<li><a href=$sef_url>$result->name1</a></li>";
    }
    $string .= '</ul>';
    $string = iconv("windows-1251","UTF-8", $string);
    echo "Найденные категории:";
    echo $string;
    } else
    {
    $string .= '<li>Ничего не найдено</li>';
    }

    exit;

    }
    exit;
    }

    ?>



    Обратите внимание на функцию iconv - это я из UTF в win1251 гоняю и обратно. Не знаю почему у меня база в 1251, а показывает что UTF.
    буду раз если совместно улучшим.
    • 17 октября 2014 г.
    • скажите как правельно его к диафану в вив засунуть, привидите свой вив если не трудно.
      • 20 октября 2014 г.
      • Что такое "вив"?
        • 20 октября 2014 г.
        • видимо "view" )
          • 22 октября 2014 г.
          • именно) дайте пример файла search.view.show_search_top.php или пример тех фалов которые нужно изменить, не как не могу разобраться с привязкой своих скриптов к диафану а также куда засунуть файл autosuggest.php или что с ним нужно сделать, помогите пожайлусто
            • 22 октября 2014 г.
            • autosuggest.php кладите куда угодно, главное путь до него правильно прописывайте в скрипте. Можно полный путь вместе с доменом сайта чтобы наверняка.

              А форму я выводил даже не вьюхой а просто вручную в шаблоне. Просто скопировал тот код, который шаблонный тег генерит и подправил чуток. Добавил onkeyup="suggest(this.value);" и div куда результаты добавляются.
              • 23 октября 2014 г. , редакция: 23 октября 2014 г.
              • попытался, но без успешно( можете выложить часть этого кода из шаблона?
  • 24 октября 2014 г.
  • Кто бы помог переписать переписать php часть по взрослому, с подключением основного класса диафан и использованием уже функций диафана по работе с БД?

    • 25 октября 2014 г. , редакция: 25 октября 2014 г.
    • Ваш же скрипт. Только сделано все грамотно.
      Вот часть кода.
      Код

      $category = DB::query_fetch_all("SELECT id, [name], site_id FROM {shop_category} WHERE [name] LIKE '%%".$this->diafan->filter($_REQUEST, 'sql', "searchword")."%%'");
      if(count($category)){
      $this->result['list']['category']['name'] = 'Найденные категории:';
      $this->result['list']['category']['text'] = '<ul>';
      foreach ($category as $rows){
      $this->result['list']['category']['text'] .= '<li><a href="'.BASE_PATH_HREF.$this->diafan->_route->link($rows["site_id"], $rows["id"], "shop","cat").'">'.$rows['name'].'</a></li>';

      }
      $this->result['list']['category']['text'] .= '</ul>';
      }
      • 26 октября 2014 г.
      • а можно поподробней, куда именно это вставлять?
        • 26 октября 2014 г. , редакция: 26 октября 2014 г.
        • Неужели непонятно. У меня есть модуль который сделан по всем правилам диафана. По текущему требованию. Которую можно легко установить в сайт. На это у меня ушло час. За буквально не большущую плату я могу выслать его всем желающим.
  • 26 октября 2014 г.
  • Готов выслушать все ваши пожелание по данной модулю. Могу сделать все что угодно только если будет удобно многим.
    • 26 октября 2014 г.
    • хотелось бы увидит вариант под поиск в верху с кнопкой найти и выпадающим списком, но первых пяти позиций, или что бы можно было задать самому. И что бы по выбору не сразу отправлял на страницу товара а впихивал в окошко инпут данный выбор.
  • 23 октября 2015 г.
  • Данияр (doni2000) что-то в личку уж сколько дней не отвечает. Видать вообще завязал с разработками?
  • 29 апреля 2016 г.
  • А может кто из форумчан помочь за деньги поиск с автозаполнением из страниц сделать? Кидайте предложение в личку antondyrdin@gmail.com пожалуйста.

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум