ЛУЧШИЙ САЙТ ДЛЯ РАЗРАБОТЧИКОВ
×

PHP учебник

PHP HOME PHP Intro PHP Install PHP Syntax PHP Variables PHP Echo / Print PHP Data Types PHP Strings PHP Constants PHP Operators PHP If...Else...Elseif PHP Switch PHP While Loops PHP For Loops PHP Functions PHP Arrays PHP Sorting Arrays PHP Superglobals

PHP Forms

PHP Form Handling PHP Form Validation PHP Form Required PHP Form URL/E-mail PHP Form Complete

PHP Advanced

PHP Arrays Multi PHP Date and Time PHP Include PHP File Handling PHP File Open/Read PHP File Create/Write PHP File Upload PHP Cookies PHP Sessions PHP Filters PHP Filters Advanced PHP Error Handling PHP Exception

MySQL Database

MySQL Database MySQL Connect MySQL Create DB MySQL Create Table MySQL Insert Data MySQL Get Last ID MySQL Insert Multiple MySQL Prepared MySQL Select Data MySQL Delete Data MySQL Update Data MySQL Limit Data

PHP - XML

PHP XML Parsers PHP SimpleXML Parser PHP SimpleXML - Get PHP XML Expat PHP XML DOM

PHP - AJAX

AJAX Intro AJAX PHP AJAX Database AJAX XML AJAX Live Search AJAX RSS Reader AJAX Poll

PHP Examples


PHP Reference

PHP Overview PHP Array PHP Calendar PHP Date PHP Directory PHP Error PHP Filesystem PHP Filter PHP FTP PHP HTTP PHP Libxml PHP Mail PHP Math PHP Misc PHP MySQLi PHP SimpleXML PHP String PHP XML PHP Zip PHP Timezones


PHP Пример - AJAX Живой поиск


AJAX можно использовать для создания более удобных и интерактивных поисков.


Ajax Live Поиск

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

Поиск в реальном времени имеет множество преимуществ по сравнению с традиционным поиском:

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

Найдите хтмл5ксс страницу в поле ввода ниже:

Результаты в приведенном выше примере найдены в XML-файле (Links. XML). чтобы сделать этот пример небольшим и простым, доступны только шесть результатов.


Пример объяснений-страница HTML

Когда пользователь вводит символ в поле ввода выше, выполняется функция "шовресулт ()". Функция инициируется событием "OnKeyUp":

<html>
<head>
<script>
function showResult(str) {
  if (str.length==0) {
    document.getElementById("livesearch").innerHTML="";
    document.getElementById("livesearch").style.border="0px";
    return;
  }
  if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  } else {  // code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  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), функция очищает содержимое заполнителя ливесеарч и завершает работу функции.

Если поле ввода не пусто, функция шовресулт () выполняет следующие действия:

  • Создание объекта XMLHttpRequest
  • Создайте функцию, которая будет выполняться при готовности ответа сервера
  • Отправка запроса в файл на сервере
  • Обратите внимание, что в URL-адрес добавляется параметр (q) (с содержимым поля ввода)


Файл PHP

Страница на сервере, вызываемая JavaScript выше, является файлом PHP под названием "ливесеарч.php".

Исходный код в "ливесеарч. php" ищет в XML-файле заголовки, соответствующие строке поиска, и возвращает результат:

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

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

//get the q parameter from URL
$q=$_GET["q"];

//lookup all links from the xml file if length of 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) {
      //find a link matching the search text
      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>";
        }
      }
    }
  }
}

// Set output to "no suggestion" if no hint was found
// or to the correct values
if ($hint=="") {
  $response="no suggestion";
} else {
  $response=$hint;
}

//output the response
echo $response;
?>

Если есть какой-либо текст, отправленный из JavaScript (strlen ($q) > 0), происходит следующее:

  • Загрузка XML-файла в новый объект XML DOM
  • Просмотрите все элементы < Title >, чтобы найти совпадения из текста, отправленного из JavaScript
  • Задает правильный URL-адрес и заголовок в переменной "$Response". Если найдено более одного совпадения, все совпадения добавляются в переменную
  • Если совпадения не найдены, $response переменная имеет значение "нет предложения"