Génération PHP.net » Archive du blog » AJAX avec PHP et YUI

AJAX avec PHP et YUI

Étape 2 - Backend PHP

Un script PHP (pays.php) sera utilisé afin d’obtenir (via AJAX) la liste des pays d’un continent passé en paramètre. La variable GET continent sera utilisée. La réponse donnée sera un document au format XML.

Les données seront tirées du fichier datafile.txt contenant la liste de tous les pays par continent ainsi que leurs codes ISO associés. (obtenu sur Wikipedia)

Contenu du fichier pays.php

Voici le contenu. Il a été commenté afin de bien expliquer chaque opération. Tel que mentionné précédemment, l’extension DOM de PHP5 sera utilisée afin de créer une réponse au format XML.

<?php
/*
* Vérification de l'existence de la variable "continent"
*/
if (!isset($_GET['continent'])) {
  exit;
}
 
/*
* Récupération de la variable GET "continent"
*/
$continent = $_GET['continent'];
 
/*
* Vérification de la validité du continent
*/
if (!in_array($continent, array('AF', 'AS', 'EU', 'NA', 'SA', 'OC', 'AN'))) {
  exit;
}
 
/*
* Chargement des pays par continents
*/
$continentPays = array();
 
// Ouverture en lecture du fichier datafile.txt
if (($fp = fopen('datafile.txt', 'r')) === FALSE) {
  exit;
}
 
// Boucle sur le contenu du fichier
while (feof($fp) === FALSE) {
 
  $l = trim( fgets($fp, 100) );
  // [0] Code continent, [1] Code pays (2 caractères), [2] Code pays (3 caractères), [3] Code pays (numérique), [4] Nom pays (anglais)
  $pays = split(' ', $l, 5);
  $continentPays[ $pays[0] ][] = $pays;
}
 
// Fermeture du fichier
fclose($fp);
 
/*
* Définition d'un document de type text/xml (UTF-8)
*/
header('Content-Type: text/xml; charset=UTF-8');
 
/*
* Initialisation d'un objet DOMDocument pour la réponse XML
*/
$dom = new DOMDocument('1.0', 'utf-8');
 
/*
* Création du noeud racine <message> de la réponse
*/
$message = $dom->createElement('message');
$message = $dom->appendChild($message);
 
/*
* Boucle sur les pays du continent
*/
foreach ($continentPays[$continent] as $pays) {
 
  /*
  * Création d'un noeud <pays>
  * <pays alpha2="" alpha3="" numeric3="">Nom anglais</pays>
  */
  $paysElement = $dom->createElement('pays', utf8_encode($pays[4]));
  $paysElement = $message->appendChild($paysElement);
  // Définition des attributs
  $paysElement->setAttribute('alpha2', $pays[1]);
  $paysElement->setAttribute('alpha3', $pays[2]);
  $paysElement->setAttribute('numeric3', $pays[3]);
}
 
/*
* Renvoie de la réponse XML
*/
echo $dom->saveXML();
?>

Il ne reste plus qu’à récupérer ces données via une requête GET HTTP via AJAX.

Pages: 1 2 3 4 5

Laisser un commentaire