НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ

PHP Підручник

PHP СТАРТ PHP Інтро PHP Встановлення PHP Синтаксис PHP Коментарі PHP Змінні PHP Echo / Print PHP Типи даних PHP Рядки PHP Числа PHP Математика PHP Константи PHP Оператори PHP If...Else...Elseif PHP Switch PHP Цикли PHP Функції PHP Масиви PHP Суперглобали PHP RegEx

PHP Форми

PHP Обробка форми PHP Перевірка форми PHP Обов'язкові поля форми PHP Форма URL/E-mail PHP Заповнення форми

PHP Розширений

PHP Дата і час PHP Підключення файлів PHP Обробка файлів PHP Файл відкрити/читати PHP Файл створити/записати PHP Файл Завантажити PHP Кукі PHP Сесії PHP Фільтри PHP Розширені фільтри PHP Callback функції PHP JSON PHP Винятки

PHP ООП

PHP Що таке ООП PHP класи/об'єкти PHP Конструктор PHP Деструктор PHP Модифікатори доступу PHP Спадкування PHP Константи PHP Абстрактні класи PHP Інтерфейси PHP Трейти PHP Статичні методи PHP Статичні властивості PHP Простори імен PHP Ітерація

MySQL База даних

MySQL База даних MySQL Підключення MySQL Створити БД MySQL Створити таблиці MySQL Вставити дані MySQL Отримати останній ID MySQL Вставити кілька записів MySQL Підготовлені інструкції MySQL Вибрати дані MySQL Where MySQL Order By MySQL Видалення даних MySQL Оновлення даних MySQL Обмеження даних

PHP XML

PHP XML Парсери PHP SimpleXML Парсер PHP SimpleXML - Get PHP XML Expat PHP XML DOM

PHP - AJAX

AJAX Інтро AJAX PHP AJAX База даних AJAX XML AJAX Живий пошук AJAX Опитування

PHP Приклади

PHP Приклади PHP Компілятор PHP Вікторина PHP Вправи PHP Сертифікат

PHP Довідник

PHP Огляд PHP Масив PHP Календар PHP Дата PHP Каталог PHP Помилка PHP Виняток PHP Файлова система PHP Фільтр PHP FTP PHP JSON PHP Ключові слова PHP Libxml PHP Пошта PHP Математика PHP Різне PHP MySQLi PHP Мережа PHP Output Control PHP RegEx PHP SimpleXML PHP Потік PHP Рядок PHP Обробка змінних PHP XML Парсер PHP Zip PHP Часові пояси

PHP. W3Schools українською. Уроки для початківців

En

PHP Приклад - AJAX Живий пошук


AJAX можна використовувати для створення більш зручного та інтерактивного пошуку.


AJAX Живий пошук

У наведеному нижче прикладі демонструється пошук у реальному часі, коли ви отримуєте результати під час введення тексту.

Живий пошук має багато переваг у порівнянні з традиційним пошуком:

  • Результати відображаються під час введення тексту
  • Результати звужуються, якщо ви продовжуєте вводити текст
  • Якщо результати стають надто вузькими, видаліть символи, щоб побачити ширший результат

Знайдіть сторінку W3Schools у полі введення нижче:

Результати в наведеному вище прикладі містяться у файлі XML (links.xml). Щоб зробити цей приклад невеликим і простим, доступно лише шість результатів.


Пояснення прикладу - HTML сторінка

Коли користувач вводить символ у поле введення вище, виконується функція "showResult()". Функція запускається кнопкою події "onkeyup":

<html>
<head>
<script>
function showResult(str) {
  if (str.length==0) {
    document.getElementById("livesearch").innerHTML="";
    document.getElementById("livesearch").style.border="0px";
    return;
  }
  var xmlhttp=new XMLHttpRequest();
  xmlhttp.onreadystatechange=function() {
    if (this.readyState==4 && this.status==200) {
      document.getElementById("livesearch").innerHTML=this.responseText;
      document.getElementById("livesearch").style.border="1px solid #A5ACB2";
    }
  }
  xmlhttp.open("GET","livesearch.php?q="+str,true);
  xmlhttp.send();
}
</script>
</head>
<body>

<form>
<input type="text" size="30" onkeyup="showResult(this.value)">
<div id="livesearch"></div>
</form>

</body>
</html>

Пояснення вихідного коду:

Якщо поле введення порожнє (str.length==0), функція очищає вміст заповнювача livesearch і виходить із функції.

Якщо поле введення не порожнє, функція showResult() виконує наступне:

  • Створити об’єкт XMLHttpRequest
  • Створити функцію, яка буде виконана, коли відповідь сервера буде готова
  • Надіслати запит у файл на сервері
  • Зверніть увагу, що до URL-адреси (з вмістом поля введення) додано параметр (q).

PHP файл

Сторінка на сервері, викликана JavaScript вище, є файлом PHP під назвою "livesearch.php".

Вихідний код у "livesearch.php" шукає у файлі XML заголовки, що відповідають рядку пошуку, і повертає результат:

<?php
$xmlDoc=new DOMDocument();
$xmlDoc->load("links.xml");

$x=$xmlDoc->getElementsByTagName('link');

//отримати параметр q з URL
$q=$_GET["q"];

//пошук усіх посилань у файлі xml, якщо його довжина становить q>0
if (strlen($q)>0) {
  $hint="";
  for($i=0; $i<($x->length); $i++) {
    $y=$x->item($i)->getElementsByTagName('title');
    $z=$x->item($i)->getElementsByTagName('url');
   if ($y->item(0)->nodeType==1) {
      //знайти посилання, що відповідає пошуковому тексту
      if (stristr($y->item(0)->childNodes->item(0)->nodeValue,$q)) {
        if ($hint=="") {
          $hint="<a href='" .
          $z->item(0)->childNodes->item(0)->nodeValue .
          "' target='_blank'>" .
          $y->item(0)->childNodes->item(0)->nodeValue . "</a>";
        } else {
          $hint=$hint . "<br /><a href='" .
          $z->item(0)->childNodes->item(0)->nodeValue .
          "' target='_blank'>" .
          $y->item(0)->childNodes->item(0)->nodeValue . "</a>";
        }
      }
    }
  }
}

// Встановіть вихід на "no suggestion" якщо підказка не знайдена
// або до правильних значень
if ($hint=="") {
  $response="no suggestion";
} else {
  $response=$hint;
}

//вивести відповідь
echo $response;
?>

Якщо з JavaScript (strlen($q) > 0) надсилається будь-який текст, відбувається таке:

  • Завантажте файл XML у новий об’єкт XML DOM
  • Переглянути всі елементи <title> для пошуку збігів у тексті, надісланому з JavaScript
  • Установити правильну URL-адресу та заголовок у змінній "$response". Якщо знайдено більше одного збігу, усі збіги додаються до змінної
  • Якщо збігів не знайдено, для змінної $response встановлюється значення "no suggestion" ("немає пропозиції")

Примітка. Приклади працюють лише на сервері з підтримкою PHP.