PHP – AJAX Auto search

By | July 28, 2020

You have worked with those fields where you enter for some string and you will get suggestions for auto-completing the field value. The same case we are creating using XML script to call auto-complete options.

Below example will help you to auto-complete the text using PHP including the XML code.

Vamware

Example:

<html>
   <head>
   <script>
         function showResult(str) {
            if (str.length == 0) {
               document.getElementById("livesearch").innerHTML = "";
               document.getElementById("livesearch").style.border = "0px";
               return;
            }
            if (window.XMLHttpRequest) {
               xmlhttp = new XMLHttpRequest();
            }else {
               xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
           xmlhttp.onreadystatechange = function() {
               if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                  document.getElementById("livesearch").innerHTML = xmlhttp.responseText;
                  document.getElementById("livesearch").style.border = "1px solid #A5ACB2";
               }
            }
            xmlhttp.open("GET","livesearch.php?q="+str,true);
            xmlhttp.send();
         }
      </script>
   </head>
   <body>
      <form>
         <h2>Enter Course Name Here</h2>
         <input type = "text" size = "30" onkeyup = "showResult(this.value)">
         <div id = "livesearch"></div>
         <a href = "http://www.xxx.com">Click Here For More Details </a>
      </form>
   </body>
</html>

Output:

Course Name

Livesearch.php

This script will call the XML file data and then the results are sent to the web browser.

<?php
   $xmlDoc = new DOMDocument();
   $xmlDoc->load("autocomplete.xml");
   $x = $xmlDoc->getElementsByTagName('link');
   $q = $_GET["q"];
   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>";
               }
            }
         }
      }
   }
   if ($hint == "") {
      $response = "Please enter a valid name";
   }else {
      $response = $hint;
   }
   echo $response;
?>

Above example is including the autocomplete.xml, below is the code for the XML file.

<pages>
   <link>
      <title>Chemistry</title>
      <url>http://www.xxx.com/chemsitry/index.htm</url>
   </link>
   <link>
      <title>Maths</title>
      <url>http://www.xxx.com/maths/index.htm</url>
   </link>
   <link>
      <title>Physics </title>
      <url>http://www.xxx.com/physics/index.htm</url>
   </link>
</pages>

Leave a Reply

Your email address will not be published. Required fields are marked *