PHP поиск на сайте ПО НЕСКОЛЬКИМ СЛОВАМ How to search using PHP and MySQL on web site

Поделиться
HTML-код
  • Опубликовано: 21 авг 2018
  • Creating a PHP search. Реализация поиска на сайте с помощью PHP

Комментарии • 68

  • @keebryt1961
    @keebryt1961 4 года назад +6

    У кого была такая же ошибка как и у меня, а именно: Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in и т.д. У меня была ошибка в том, что между OR и "(Двойными кавычками) не было пробела, на видео он есть, но я не стал заострять на этом внимание. Потом уже как всё перепроверил, понял в чем заключалась ошибка.

    • @architector7199
      @architector7199  4 года назад

      Спасибо за комментарий. Вижу много вопросов возникает по этому скрипту и люди невнимательно смотрят. Часто ошибка кроется в синтаксисе. Попробую выложить сей код в mysqli и PDO в обоих вариантах

    • @1ux443
      @1ux443 3 года назад +1

      @@architector7199 ПОжете готовы код скинуть?

  • @MaximKacc
    @MaximKacc 11 месяцев назад

    Спасибо тебе, добрый человек. Сколько видео пересмотрел, не понятно было - всё разъяснил

  • @JASON-tf8be
    @JASON-tf8be 2 года назад

    Чувак ты крут все работает, объясняешь все доходчиво спасибо тебе!

  • @useruser4200
    @useruser4200 4 года назад

    Большое спасибо зв урок, было очен интересно !

  • @dmitriisvetenco2160
    @dmitriisvetenco2160 5 лет назад +3

    спасибо, очень помог

  • @user-bt2xu2vz5d
    @user-bt2xu2vz5d 5 лет назад +2

    Спасибо очень помог лайк тебе

  • @ja-rusyn
    @ja-rusyn 4 года назад

    Спасибо...

  • @user-tp8wi7wm7f
    @user-tp8wi7wm7f 3 года назад

    Спасибо! Отличное видео, но как сделать, чтобы в результат поиска попадали только строки, где встречаются все слова из запроса в произвольном порядке?

  • @fribisdi2123
    @fribisdi2123 2 года назад

    Спасибо! Очень полезно для меня чайника. Подскажите, что нужно добавить в этот код - 1) Что бы при пустом запросе в поле поиска выдало бы сообщение "Пожалуйста, введите поисковый запрос". 2) При поиске не оказалось совпадений с запросом и тогда должно выдать сообщение: "Поиск не дал результатов". Спасибо!

  • @Maratreason
    @Maratreason 2 года назад

    Как вы меня выручили вы бы знали :) Лайк, подписка однозначно)

  • @user-bk8nw7xk6y
    @user-bk8nw7xk6y 3 года назад

    Пишет Notice: Undefined index: search in C:\xampp\htdocs\siite\search11.php on line 21, как исправить?

  • @a.v.bazhanov
    @a.v.bazhanov 4 года назад

    Архитектору ставим лайки

  • @JASON-tf8be
    @JASON-tf8be 2 года назад

    А как добавить в код если ничего не найдено вывести ничего не найдено?

  • @Alesha56
    @Alesha56 2 года назад

    спасибо, у меня всё работает, получилось, но нужно выводить фотографию ещё, а она выводится просто названием(по типу 55dfdf.jpg)
    не подскажешь, как сделать, чтоб она выводилась именно фотографией, а не таким текстом?

  • @1ux443
    @1ux443 4 года назад +1

    19:06 У меня выдал ошибку что делать?

  • @NinjaBlade0822
    @NinjaBlade0822 3 года назад

    у меня он ищет только если полностью вписать название

  • @TheOneeightytwo
    @TheOneeightytwo 5 лет назад +2

    кому нужен id записи:
    while($row = mysqli_fetch_assoc($test))
    {
    $id = $row['id'];
    echo "".$row['title']."";
    }

    • @architector7199
      @architector7199  5 лет назад

      мы каждой выведенной ссылке(которая является заголовком статьи - поле title) прикрепляем её же id, чтобы передать его значение методом GET на следующую страницу, чтобы по нему произвести выборку из БД - вывести ту запись, у которой id равен полученному значению ("SELECT * FROM таблица WHERE id=$_GET['id']" ) и выводим эту статью отдельно целиком.

  • @Franklin919
    @Franklin919 2 года назад

    Сделай продолжение как обезопасить, пжпж

  • @jarsla7909
    @jarsla7909 5 лет назад +1

    Здр,
    Я наверное уже все перепробовал, но не меняется кодировка, в место русских букв, знаки вопроса. Что может быть не так, делал все по вашему видео?
    И еще при написание больше одного слова в поиске идет ошибка "Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in…" Я смотрел таблицу правильно записал, делал по идее все по видео.
    if(isset($_POST['submit'])){
    $search = explode(" ", $_POST['search']);
    $count = count($search);
    $array = array();
    $i = 0;
    foreach($search as $key) {
    $i++;
    if($i < $count) {
    $array[] = "CONCAT (`title`, `text`) LIKE '%".$key."%' OR";
    }
    else {
    $array[] = "CONCAT (`title`, `text`) LIKE '%".$key."%'";
    }
    }
    $sql = "SELECT * FROM `test` WHERE ".implode("", $array);
    $query = mysqli_query($connect, $sql);
    while($row = mysqli_fetch_assoc($query)) echo "".$row['title']."".$row['text']."";
    }

    • @architector7199
      @architector7199  5 лет назад +2

      Благодарю за вопрос. Проблема решается очень просто. Вот варианты: 1) проверить чтобы сам файл был создан в кодировке utf8 2) добавить между тегами head метатег 3) установить кодировку самого соединения с БД mysqli_set_charset($link, "utf8")
      Подробнее www.php.net/manual/ru/mysqli.set-charset.php
      4) создать в корне сайта файл .htaccess
      В нём прописать AddDefaultCharset UTF-8

    • @architector7199
      @architector7199  5 лет назад +1

      Что касается ошибки, она в sql. Надо поставить пробел после оператора OR

    • @jarsla7909
      @jarsla7909 5 лет назад

      @@architector7199 Спасибо, все заработало)))

  • @ArtOfFun
    @ArtOfFun 5 лет назад +5

    *Неужели так сложно выложить код...*

    • @user-er5bg6bj9o
      @user-er5bg6bj9o 3 года назад

      $connect = mysqli_connect('localhost','mysql','mysql','application') or die("Error");
      if(!empty($_POST['search'])) {
      if(isset($_POST['submit'])) {

      $search=$_POST['search'];
      $exp=explode(" ", $search);
      $search=" LIKE '%";
      $search .= implode("%' or CONCAT(text, title) LIKE '%", $exp);
      $search .= "%' ";
      $sql="SELECT * FROM `search` WHERE CONCAT(text, title) " .$search;
      $result=mysqli_query($connect,$sql);

      while($row=mysqli_fetch_assoc($result)) {
      echo "" . $row['title'] . "" . $row['text'] . "";
      }
      }
      }

  • @user-lz7li3me4q
    @user-lz7li3me4q Год назад

    Привет, брат

  • @ext7661
    @ext7661 4 года назад

    Ютуб творит чудеса, канал: Architector 3,63 млн подписчиков.

  • @SMALLDan
    @SMALLDan 5 лет назад +2

    cпасибо, а как сделать что бы после поиска открывало страницу?

    • @architector7199
      @architector7199  5 лет назад +1

      Если как я понял, вывелись записи из бд в виде статей с заголовками или ещё что-то, эти заголовки сделать как ссылки, а в адресе ссылок прописать файл для отдельного просмотра одной записи (например, view_page.php?id=номер записи). Т.е. через метод GET мы передаём на другую страницу информацию о номере той или иной записи, а там уже через выборку подставляем полученную информацию

    • @SMALLDan
      @SMALLDan 5 лет назад +3

      @@architector7199нет возможности что бы ты мог это записать и показать? я бы помог с распространением твоего видео и был бы тебе очень благодарен

    • @SMALLDan
      @SMALLDan 5 лет назад +1

      @@architector7199 или может быть у тебя есть телеграмм?

    • @architector7199
      @architector7199  5 лет назад

      @@SMALLDan есть телеграм канал, но я давно не заходил на телегу

    • @SMALLDan
      @SMALLDan 5 лет назад

      @@architector7199 а как бы нам с тобой с
      контактировать?

  • @tory_f24
    @tory_f24 5 лет назад +1

    как можно исправить такой момент: при пустом запросе выводит весь список товаров из бд

    • @architector7199
      @architector7199  5 лет назад

      просто поставить условие, что если поле пустое - не выполнять скрипт

    • @architector7199
      @architector7199  5 лет назад

      !empty

    • @vika_28423
      @vika_28423 4 года назад

      @@architector7199 а как поставить условие,что поле пустое?

    • @architector7199
      @architector7199  4 года назад

      @@vika_28423 надо гуглить и смотреть не сайте php.net Я думаю проверить на пустоту if(!empty(переменная)) или if(strlen(переменная) != 0)

    • @vika_28423
      @vika_28423 4 года назад

      Architector спасибо!

  • @globalcode410
    @globalcode410 2 года назад +2

    KODE

  • @vika_28423
    @vika_28423 4 года назад

    А что написать в переменной $row, чтобы можно было вместе с текстом вывести картинку?

    • @architector7199
      @architector7199  4 года назад

      echo $row['имя_поля_картинки'];

    • @vika_28423
      @vika_28423 4 года назад

      Architector а вместо ‘text’ что написать?Какой тип нужен для картинки,чтобы он открылся?Пробовала varchar не получилось

    • @architector7199
      @architector7199  4 года назад

      @@vika_28423 ​ у вас путь к картинке на сервер хранится в таблице БД в каком-то поле (тип поля при создании лучше указывать text)? Правильно понимаю? Мы выводим её в цикле или одиночно, неважно, это поле имеет название. Вот это название нужно поставить в ковычки как здесь echo $row['имя_поля_картинки'];

    • @vika_28423
      @vika_28423 4 года назад

      Architector у меня тип поля указан varchar(255),думаете лучше указать text?Разве тогда картинка отобразится?

    • @architector7199
      @architector7199  4 года назад

      @@vika_28423 всё зависит от того сколько символов складывается из названия файла и пути к нему, если не вмещается в 255, следует использовать текст

  • @tory_f24
    @tory_f24 5 лет назад

    спасибо за видео! у меня возникает ошибка
    Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in Z:\home\localhost\www\bd\index.php on line 27
    вот строка:
    while($row = mysqli_fetch_assoc($query)) echo " ".$row ['name']."".$row['text']."";
    я ведь правильно понимаю, что различие этой строки с вашей лишь в том, что ваше title меняется на мое name, так как у меня такое название в бд?

    • @tory_f24
      @tory_f24 5 лет назад +1

      Извините, я протупила, еще раз спасибо за видео, только говорите побольше, я в некоторых местах совсем не понимала что вы делаете, думала, что звук выключился

    • @aselmamet6777
      @aselmamet6777 5 лет назад

      можете поделиться как вы решили проблему?

    • @dark_node6173
      @dark_node6173 4 года назад

      @@tory_f24 Какое решение этой проблемы?

    • @user-ys7xd6cj8y
      @user-ys7xd6cj8y 4 года назад

      как вы исправили эту ошибку?

    • @MarkIzraylev
      @MarkIzraylev 4 года назад +2

      Ура, у меня наконец-то получилось, когда я заменил некоторые одинарные кавычки на скошенные кавычки, они находятся в тех же местах кода, как и в видео. Чтобы написать скошенную одинарную кавычку нужно на английской раскладке клавиатуры нажать там, где буква Ё (слева сверху)

  • @user-xk8xj2in8r
    @user-xk8xj2in8r 5 лет назад +1

    привет у меня ест проблема

    • @architector7199
      @architector7199  5 лет назад +1

      Какая?

    • @user-xk8xj2in8r
      @user-xk8xj2in8r 5 лет назад

      @@architector7199
      вот код
      include 'conn1.php';
      if (isset($_POST['poisk'])){
      $key = explode(" ",$_POST['date']);
      $count = count($key);
      $array = array();
      $i = 0;
      foreach($key as $q){
      $i++;
      if($i < $count)$array[]="CONCAT (`data`,`name`) LIKE '%".$key."%' OR ";else $array[] = "CONCAT (`data`,`name`) LIKE '%".$key."%'";
      }
      $sql = "SELECT * FROM `place` WHERE ".implode("", $array);
      echo $sql;
      $sq = mysqli_query($conn,$sql);
      While($r = mysqli_fetch_assoc($sq))
      echo '


      '.$r['name'].'

      '.$r['data'].'


      '.$r['didan'].'
      '.$r['date'].'

      Муфассалтар



      ' ;
      };
      ?>
      ест ошибка ?