За последние 24 часа нас посетил 16861 программист и 1621 робот. Сейчас ищут 1833 программиста ...

Поиск по сайту на базе

Тема в разделе "PHP Free-Lance", создана пользователем ALEXBOT, 29 янв 2017.

  1. ALEXBOT

    ALEXBOT Новичок

    С нами с:
    29 янв 2017
    Сообщения:
    18
    Симпатии:
    0
    Добрый день!
    есть скрипт ajax ,
    в базе создал таблицу с данными id, title, description, link ,foto_link

    нужно чтобы поиск по 3 столбикам производился, title, description, link ,
    особенности вывода:
    1) подсветка искомого текста
    2) ссылка на страницу (в которой найден текст был)
    3) вывод картинок со страницы.

    в данный момент поиск просто находит заданный текст и выводит из базы полностью тексты где есть искомое значение.

    подскажите, пожалуйста, как выполнить поставленные задачи?
    PHP:
    1. <?php
    2. //получаем данные через $_POST
    3. if (isset($_POST['search'])) {
    4.     // подключаемся к базе
    5.     include('db.php');
    6.     $db = new db();
    7.     // никогда не доверяйте входящим данным! Фильтруйте всё!
    8.     $word = mysql_real_escape_string($_POST['search']);
    9.     // Строим запрос
    10.     $sql = "SELECT description FROM content WHERE description LIKE '%" . $word . "%' ORDER BY description LIMIT 10";
    11.     // Получаем результаты
    12.     $row = $db->select_list($sql);
    13.     if(count($row)) {
    14.         $end_result = 'Искомый текст выделен жирным шрифтом';
    15.         foreach($row as $r) {
    16.             $result         = $r['description'];
    17.             $bold           = '<span class="found">' . $word . '</span>';
    18.             $end_result     .= '<li>' . str_ireplace($word, $bold, $result) . '</li>';
    19.         }
    20.         echo $end_result;
    21.     } else {
    22.         echo '<li>По вашему запросу ничего не найдено</li>';
    23.     }
    24. }
    25. ?>
     
    #1 ALEXBOT, 29 янв 2017
    Последнее редактирование модератором: 29 янв 2017
  2. ALEXBOT

    ALEXBOT Новичок

    С нами с:
    29 янв 2017
    Сообщения:
    18
    Симпатии:
    0
    естественно не бесплатно, прошу помочь.
     
  3. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Хотелось бы посмотреть на входные данные и результат работы скрипта.
    Не обязательно фактические. Можно просто придумать для примера.
    --- Добавлено ---
    Что скрипту даешь, что получаешь и что не нравится в том, что получаешь...
     
  4. ALEXBOT

    ALEXBOT Новичок

    С нами с:
    29 янв 2017
    Сообщения:
    18
    Симпатии:
    0
    TeslaFeo , http://vbm.su/search
    сайт сам не на базе, поиск хочу на базе сделать.
    что и типа сделал. но надо чтобы условия выполнялись заданные.
    --- Добавлено ---
    искать он ищет то что задано, но надо чтобы он выделял жирным то что искал.Ссылку на страницу вставлял где был заданный текст найден. и выводил картинки со страницы.
     
  5. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Ну я ввел слово "Бабочка" и получил вот это:
    HTML:
    1. Искомый текст выделен жирным шрифтом<li><span class="found">Бабочка</span> Амаврис белопятнистый (Amauris albimaculata) относится к семейству Данаиды (Danaidae); распространена в Африке к северу от Сахары, как правило, во влажных тропических лесах.
    2. Кормовое растение гусениц - цианхума и тикофора (ядовитые растения).
    3. Размах крыльев 6-8 см. Эти данаиды различаются по ширине желтой полосы на задних крыльях и количеству и цвету пятен на передних. Этим бабочкам подражают окраской многие другие виды, так как бабочки ядовиты.</li><li><span class="found">Бабочка</span> Амаврис ниавий (Amauris niavius) относится к семейству Данаиды (Danaidae); встречается в тропических африканских лесах. <span class="found">Бабочка</span> питается нектаром и жидким пометом млекопитающих.Размах крыльев до 90 мм. Амаврис ниавий - один из самых крупных представителей рода амаврис.</li>
     
  6. ALEXBOT

    ALEXBOT Новичок

    С нами с:
    29 янв 2017
    Сообщения:
    18
    Симпатии:
    0
    нужно чтобы поиск по 3 столбикам производился, title, description, link ,
    особенности вывода:
    1) подсветка искомого текста
    2) ссылка на страницу (в которой найден текст был)
    3) вывод картинок со страницы.
     
  7. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Значит осталось в CSS прописать жирность для класса found
    Код (CSS):
    1. .found {
    2.  
    3. font-weight:
    4.  
    5. }
    или, если к этому классу больше не будет применяться никаких свойств, то можно еще проще. В место тега <span> вставить тег <b>.

    Т. е.

    PHP:
    1. $bold = '<b>' . $word . '</b>';
    --- Добавлено ---
    не всё сразу. Всё постепенно.

    Ссылку ты вытягиваешь из БД, значит в нужном месте делаешь так:

    PHP:
    1. echo "<a href='{$r['link']}'>{$r['title']}</a>"; // это где-то в foreach естессно...
     
  8. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Запрос переделать вот так:
    PHP:
    1. $sql = "SELECT title, description, link FROM content WHERE title LIKE '%" . $word . "%' OR description LIKE '%" . $word . "%' OR link LIKE '%" . $word . "%' ORDER BY description LIMIT 10";
    А картинки в бд не хранятся. В бд могут храниться только теги, которые на них ссылаются. Нужен пример таких тэгов.
    --- Добавлено ---
    Что не сможешь собрать или будет не так - пиши.
     
  9. acho

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

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    ну вообще есть такая возможность, хранить картинки, музыку в бд =D
    (но это нехорошо, да)