Exemple responseXML AJAX PHP
- Page précédente Base de données AJAX
- Page suivante Recherche en direct AJAX
AJAX peut être utilisé pour retourner des informations de base de données au format XML.
Exemple AJAX Database vers XML (notes de test : cette fonctionnalité n'est pas implémentée)
Dans l'exemple AJAX suivant, nous allons démontrer comment une page web peut lire des informations à partir d'une base de données MySQL, convertir les données en document XML et utiliser ce document pour afficher des informations à différents endroits.
Cet exemple est très similaire à celui de la section précédente "PHP AJAX Database", mais il y a une grande différence : dans cet exemple, nous obtenons des données au format XML en utilisant la fonction responseXML à partir de la page PHP.
Recevoir un document XML en réponse nous permet de mettre à jour plusieurs emplacements sur la page, et non pas simplement d'obtenir une sortie PHP et de la montrer.
Dans cet exemple, nous utiliserons les informations reçues de la base de données pour mettre à jour plusieurs éléments <span>.
Sélectionnez un nom dans la liste déroulante
Cette colonne est composée de quatre éléments :
- Base de données MySQL
- Simple formulaire HTML
- JavaScript
- PHP page
Base de données
La base de données utilisée dans cet exemple semble être de cette manière :
id | Prénom | Nom de famille | Âge | Ville natale | Emploi |
---|---|---|---|---|---|
1 | Peter | Griffin | 41 | Quahog | Brasserie |
2 | Lois | Griffin | 40 | Newport | Professeur de piano |
3 | Joseph | Swanson | 39 | Quahog | Officier de police |
4 | Glenn | Quagmire | 41 | Quahog | Pilot |
Formulaire HTML
L'exemple suivant contient un simple formulaire HTML, ainsi qu'un lien vers JavaScript :
<html> <head> <script src="responsexml.js"></script> </head> <body> <form> Sélectionnez un utilisateur : <select name="users" onchange="showUser(this.value)"> <option value="1">Peter Griffin</option> <option value="2">Lois Griffin</option> <option value="3">Glenn Quagmire</option> <option value="4">Joseph Swanson</option> </select> </form> <h2> <span id="firstname"></span> <span id="lastname"></span> </h2> <span id="job"></span> <div style="text-align: right"> <span id="age_text"></span> <span id="age"></span> <span id="hometown_text"></span> <span id="hometown"></span> </div> </body> </html>
Exemple d'explication - Formulaire HTML
- Un formulaire HTML est une liste déroulante, dont l'attribut name a la valeur "users", et les valeurs des options correspondent au champ id de la base de données
- Il y a plusieurs éléments <span> sous le formulaire, qui servent de placeholders pour les différentes valeurs reçues
- Lorsque l'utilisateur sélectionne une option spécifique, la fonction "showUser()" est exécutée. L'exécution de cette fonction est déclenchée par l'événement "onchange"
Autrement dit, à chaque fois que l'utilisateur change de valeur dans la liste déroulante, la fonction showUser() est exécutée et les résultats sont affichés dans l'élément <span> spécifié.
JavaScript
Ceci est un code JavaScript stocké dans le fichier "responsexml.js":
var xmlHttp function showUser(str) { xmlHttp=GetXmlHttpObject() if (xmlHttp==null) { alert ("Browser does not support HTTP Request") return } var url="responsexml.php" url=url+"?q="+str url=url+"&sid="+Math.random() xmlHttp.onreadystatechange=stateChanged xmlHttp.open("GET",url,true) xmlHttp.send(null) } function stateChanged() { if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { xmlDoc=xmlHttp.responseXML; document.getElementById("firstname").innerHTML= xmlDoc.getElementsByTagName("firstname")[0].childNodes[0].nodeValue; document.getElementById("lastname").innerHTML= xmlDoc.getElementsByTagName("lastname")[0].childNodes[0].nodeValue; document.getElementById("job").innerHTML= xmlDoc.getElementsByTagName("job")[0].childNodes[0].nodeValue; document.getElementById("age_text").innerHTML="Age: "; document.getElementById("age").innerHTML= xmlDoc.getElementsByTagName("age")[0].childNodes[0].nodeValue; document.getElementById("hometown_text").innerHTML="<br/>From: "; document.getElementById("hometown").innerHTML= xmlDoc.getElementsByTagName("hometown")[0].childNodes[0].nodeValue; } } function GetXmlHttpObject() { var objXMLHttp=null if (window.XMLHttpRequest) { objXMLHttp=new XMLHttpRequest() } else if (window.ActiveXObject) { objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP") } return objXMLHttp }
Exemple d'explication :
showUser() and GetXmlHttpObject functions with Exemple base de données MySQL AJAX PHP The examples in this section are the same. You can refer to the relevant explanations.
stateChanged() function
If an item in the dropdown list is selected, this function is executed:
- Using the responseXML function, define the "xmlDoc" variable as an XML document
- Retrieve data from this XML document and place them in the correct "span" elements
PHP page
This server page, called "responsexml.php", is a simple PHP file called by JavaScript.
This page is written in PHP and uses the MySQL database.
The code will run a SQL query against the database and return the results as an XML document:
<?php header('Content-Type: text/xml'); header("Cache-Control: no-cache, must-revalidate"); //A date in the past header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); $q=$_GET["q"]; $con = mysql_connect('localhost', 'peter', 'abc123'); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("ajax_demo", $con); $sql="SELECT * FROM user WHERE id = ".".$q.""; $result = mysql_query($sql); echo '<?xml version="1.0" encoding="ISO-8859-1"?>' <person>'; while($row = mysql_fetch_array($result)) { echo "<firstname>" . $row['FirstName'] . "</firstname>"; echo "<lastname>" . $row['LastName'] . "</lastname>"; echo "<age>" . $row['Age'] . "</age>"; echo "<hometown>" . $row['Hometown'] . "</hometown>"; echo "<job>" . $row['Job'] . "</job>"; } echo "</person>"; mysql_close($con); ?>
Exemple d'explication :
Lorsque la requête est envoyée du JavaScript à la page PHP, il se produit :
- Le content-type du document PHP est défini sur "text/xml"
- Le document PHP est défini sur "no-cache" pour éviter le cache
- Définir la variable $q avec les données envoyées par une page HTML
- PHP ouvre une connexion avec le serveur MySQL
- Trouver un "user" avec un id spécifié
- Sortir les données sous forme de document XML
- Page précédente Base de données AJAX
- Page suivante Recherche en direct AJAX