Votre lecteur Flash n'est pas à jour. Installer la dernière version

Accueil » Tutoriaux » Haxe » Faire de l'Ajax avec Haxe et PHP
Faire de l'Ajax avec Haxe et PHP

Introduction

Dans ce tutoriel, nous n'allons utiliser que les fonctions Javascript de Haxe. Aucun besoin de Neko. En effet, pour ce faire, nous allons également utiliser PHP pour se connecter à la base de données. Ce tutoriel s'adresse principalement aux développeurs qui ne peuvent pas utiliser le mod_neko de apache, soit par pur flemme, soit à cause de leur hébergeur.

Comme nous parlons d'Ajax et de PHP, nous allons tout d'abord générer un fichier xml qui va comprendre des données de la BD.

En premier lieu, saisissez les données suivante dans votre BD : 

CREATE TABLE 'test' ('nom' VARCHAR(150) NOT NULL) ENGINE=MYISAM;
INSERT INTO test (nom) VALUES ('henry');
INSERT INTO test (nom) VALUES ('paul');

Maintenant que vous avez des données dans votre table, on va créer un fichier PHP qui va permettre de générer un fichier xml pour pouvoir utiliser les données avec Haxe.
Voici le code PHP que nous allons appeler fichierXml.php :

Générer du xml

<?php
    header('Content-Type: text/xml');
    echo"<?xml version=\"1.0\"?>\n";
    echo "<resultat>\n";
    //on se connecte à la Base de Données
    $dbhost="localhost";
    $dbuser="root";
    $dbpass=" ";
    $dblink=mysql_connect($dbhost,$dbuser,$dbpass);
    mysql_select_db("votreBase",$dblink); // on selectionne la base
    //on lance la requete
    $query = "SELECT nom FROM test";
    $result = mysql_query($query,$dblink) or die (mysql_error($dblink));
    //On boucle sur le resultat
    while ($row = mysql_fetch_array($result)) {
        echo "<donnee>" . $row['nom'] . "</donnee>\n";
    }
    echo "</resultat>\n";
?>

Un peu plus d'explications :

On se connecte à la base de données pour récupérer les données présentes dans la table et on les affiche sous forme de fichier xml.

Le fichier html

Avant de passer à Haxe, voici le fichier html :

<html>
<head><title>haXe AJAX</title></head>
<body>
 
<div id="main"></div>
 
<script type="text/javascript" src="test.js"></script>

<a href="javascript:Test.click()">Cliquez ici !!</a>
 
</body>
</html>

L'Ajax

Maintenant, passons aux choses sérieuses. Voici le code du fichier Test.hx :

class Test {
 
        // cette fonction change le contenu de la balise DIV grace à l'identifiant passé en parametre
        static function setContent(id,content) {
                var d = js.Lib.document.getElementById(id);
                if( d == null ) // si la division n'existe pas, on affiche une boite d'alerte
                        js.Lib.alert("Element inconnu : "+id);
                d.innerHTML = content;
        }
 
        // fonction qui sera appelé lors d'un clique sur le lien
        static function click(id) {
            var r = new haxe.Http("./fichierXml.php");
            r.onError = js.Lib.alert;
            r.onData = function(r) {
                setContent("main",r);
            }
            r.request(false);
        }
 
        static function main() {} // la fonction main est vide car on appel directement la fonction lors d'un clique
}

Il ne vous reste plus qu'a compiler cette classe et de lancer le fichier html, bien évidemment à partir d'un serveur (php oblige).

Le fichier build.hxml

-main Test
-js test.js

Et voila, le tour est joué !

Cette fonction est bien évidemment asynchrone et vous permettra d'exploiter des données provenant de votre BD sans pour autant utiliser neko. (Pour les plus malchanceux d'entre nous !).

Edit :
Il existe un projet en cours de développement, Haxe/PHP, une version étendue du compilateur Haxe, qui vise une nouvelle plate-forme, en l'occurence, PHP. Voici le lien.