PHP -zelfstudie

PHP HOME PHP-intro PHP-installatie PHP-syntaxis PHP-opmerkingen PHP-variabelen PHP-echo / afdrukken PHP-gegevenstypen PHP-strings PHP-nummers PHP-wiskunde PHP-constanten PHP-operators PHP Als...Anders...Anders PHP-switch PHP-loops PHP-functies PHP-arrays PHP Superglobals PHP RegEx

PHP- formulieren

PHP-formulierverwerking PHP-formuliervalidatie PHP-formulier vereist URL/e-mail van PHP-formulier PHP-formulier voltooid

PHP Geavanceerd

PHP-datum en tijd PHP opnemen PHP-bestandsverwerking PHP-bestand openen/lezen PHP-bestand maken/schrijven PHP-bestand uploaden PHP-cookies PHP-sessies PHP-filters PHP-filters geavanceerd PHP-callback-functies PHP JSON PHP-uitzonderingen

PHP OOP

PHP Wat is OOP PHP-klassen/objecten PHP-constructor PHP-vernietiger PHP-toegangsmodificaties PHP-overerving PHP-constanten PHP abstracte lessen PHP-interfaces PHP-kenmerken PHP statische methoden Statische eigenschappen van PHP PHP-naamruimten PHP-iterables

MySQL- database

MySQL-database MySQL Connect MySQL DB maken MySQL-tabel maken MySQL Gegevens invoegen MySQL Laatste ID ophalen MySQL Meerdere invoegen MySQL voorbereid MySQL Gegevens selecteren MySQL Waar MySQL Bestel op MySQL Gegevens verwijderen MySQL-updategegevens MySQL-limietgegevens

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 Live zoeken in Ajax Ajax-peiling

PHP- voorbeelden

PHP-voorbeelden PHP-compiler PHP-quiz PHP-oefeningen PHP-certificaat

PHP- referentie

PHP-overzicht PHP-array PHP-agenda PHP-datum PHP-map PHP-fout PHP-uitzondering PHP-bestandssysteem PHP-filter PHP FTP PHP JSON PHP-sleutelwoorden PHP Libxml PHP-e-mail PHP-wiskunde PHP Diversen PHP MySQLi PHP-netwerk PHP-uitvoercontrole PHP RegEx PHP SimpleXML PHP-stream PHP-string Beheer van PHP-variabelen PHP XML-parser PHP-zip PHP-tijdzones

PHP-voorbeeld - AJAX Live Search


Met AJAX kunnen gebruikersvriendelijkere en interactievere zoekopdrachten worden gemaakt.


Live zoeken in Ajax

In het volgende voorbeeld wordt een live zoekopdracht gedemonstreerd, waarbij u zoekresultaten krijgt terwijl u typt.

Live zoeken heeft veel voordelen ten opzichte van traditioneel zoeken:

  • Resultaten worden weergegeven terwijl u typt
  • Resultaten verkleinen terwijl u doorgaat met typen
  • Als de resultaten te smal worden, verwijder dan tekens om een ​​breder resultaat te zien

Zoek een W3Schools-pagina in het onderstaande invoerveld:

De resultaten in bovenstaand voorbeeld zijn te vinden in een XML-bestand ( links.xml ). Om dit voorbeeld klein en eenvoudig te maken, zijn er slechts zes resultaten beschikbaar.


Voorbeeld uitgelegd - De HTML-pagina

Wanneer een gebruiker een teken typt in het invoerveld hierboven, wordt de functie "showResult()" uitgevoerd. De functie wordt geactiveerd door de gebeurtenis "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>

Broncode uitleg:

Als het invoerveld leeg is (str.length==0), wist de functie de inhoud van de tijdelijke aanduiding voor live zoeken en verlaat de functie.

Als het invoerveld niet leeg is, voert de functie showResult() het volgende uit:

  • Een XMLHttpRequest-object maken
  • Maak de functie die moet worden uitgevoerd wanneer de serverreactie gereed is
  • Stuur het verzoek naar een bestand op de server
  • Merk op dat een parameter (q) is toegevoegd aan de URL (met de inhoud van het invoerveld)


Het PHP-bestand

De pagina op de server die door het bovenstaande JavaScript wordt aangeroepen, is een PHP-bestand met de naam "livesearch.php".

De broncode in "livesearch.php" zoekt in een XML-bestand naar titels die overeenkomen met de zoekreeks en geeft het resultaat:

<?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;
?>

Als er tekst is verzonden vanuit JavaScript (strlen($q) > 0), gebeurt het volgende:

  • Laad een XML-bestand in een nieuw XML DOM-object
  • Loop door alle <title>-elementen om overeenkomsten te vinden uit de tekst die vanuit JavaScript is verzonden
  • Stelt de juiste url en titel in de "$response" variabele in. Als er meer dan één overeenkomst wordt gevonden, worden alle overeenkomsten aan de variabele toegevoegd
  • Als er geen overeenkomsten worden gevonden, wordt de variabele $respons ingesteld op "geen suggestie"