par
plex » 19 mai 2008, 16:35
Bon j'ai refait mon ancien Code pour que ca soit plus clair, mais je ne parviens toujours pas a faire fonctionner tout ca
J'ai créé 2 autres fichiers php et java pour bien séparer les fonctions
index.php
Code : Tout sélectionner
<?php
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "localhost";
$admin = "root";
$mdp = "";
$base = "gestion";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Liste déroulantes dynamiques liées</title>
<script type="text/javascript" src="./dept_xhr.js" charset="iso_8859-1"></script>
<script type="text/javascript" src="./pdt_xhr.js" charset="iso_8859-1"></script>
<?php
/* Requête SQL de récupération des données de la première liste */
/*$sql = "SELECT `id_region` AS idr, `region` ".
"FROM `region` ".
"ORDER BY `id_region`;";
*/
$sql = "SELECT `id` AS idr, `nom` ".
"FROM `fournisseur` ".
"ORDER BY `id`;";
/* Connexion et exécution de la requête */
$connexion = mysql_connect($serveur, $admin, $mdp);
if($connexion != false)
{
$choixbase = mysql_select_db($base, $connexion);
$recherche = mysql_query($sql, $connexion);
/* Création du tableau PHP des valeurs récupérées */
// $regions = array();
$fournisseurs = array();
/* Index du département par tableau régional */
$id = 0;
while($ligne = mysql_fetch_assoc($recherche))
{
// $regions[$ligne['idr']] = $ligne['region'];
$fournisseurs[$ligne['idr']] = $ligne['nom'];
}
?>
</head>
<body style="font-family: verdana, helvetica, sans-serif; font-size: 85%">
<h3>Version Utilisant AJAX</h3>
<p>Vous constaterez que le délai de latence entre la sélection et la mise à jour est quasiment intermédiaire entre les versions 100% PHP et JavaScript.</p>
<h3>Trouver un département</h3>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">
<fieldset style="border: 3px double #333399">
<legend>Sélectionnez une région</legend>
<select name="region" id="region" onchange="getDepartements(this.value);">
<option value="vide">- - - Choisissez une région - - -</option>
<?php
/* Construction de la première liste : on se sert du tableau PHP */
foreach($fournisseurs as $nr => $nom)
{
?>
<option value="<?php echo($nr); ?>"><?php echo($nom); ?></option>
<?php
}
?>
</select>
<!-- ICI, le secret : on met un bloc avec un id ou va s'insérer le code de
la seconde liste déroulande -->
<span id="blocDepartements"></span><br />
<!-- Bloc pour l'affichage de la sélection par Année -->
<span id="blocPdt"></span><br />
<input type="submit" name="ok" id="ok" value="Envoyer" />
</fieldset>
</form>
<?php
}
else
{
/* Si vous arrivez ici, vous avez un gros problème avec la connexion au serveur de base de données */
?>
</head>
<body>
<p>La connexion au serveur de base de données a échoué. Aucun élément ne peut être affiché.</p>
<?php
}
?>
</body>
</html>
departements.php
Code : Tout sélectionner
<?php
/**
* Code qui sera aeeplé par un objet XHR et qui
* retournera la liste déroulante des départements
* correspondant à la région sélectionnée.
*/
/* Paramètres de connexion */
$serveur = "localhost";
$admin = "root";
$mdp = "";
$base = "gestion";
/* On récupère l'identifiant de la région choisie. */
$idr = isset($_GET['idr']) ? $_GET['idr'] : false;
/* Si on a une région, on procède à la requête */
if(false !== $idr)
{
/* Cération de la requête pour avoir les départements de cette région */
$sql2 = "SELECT `id`, `annee`, `nom` ".
" FROM `annee`".
" WHERE `fournisseur` = ". $idr ."".
" ORDER BY `fournisseur`;";
$connexion = mysql_connect($serveur, $admin, $mdp);
mysql_select_db($base, $connexion);
$rech_dept = mysql_query($sql2, $connexion);
/* Un petit compteur pour les départements */
$nd = 0;
/* On crée deux tableaux pour les numéros et les noms des départements */
// $code_dept = array();
// $nom_dept = array();
$code_annee = array();
$nom_annee = array();
$nom_collection = array();
/* On va mettre les numéros et noms des départements dans les deux tableaux */
while(false != ($ligne_dept = mysql_fetch_assoc($rech_dept)))
{
// $code_dept[] = $ligne_dept['id_departement'];
// $nom_dept[] = $ligne_dept['departement'];
$code_annee[] = $ligne_dept['id'];
$nom_annee[] = $ligne_dept['annee'];
$nom_collection[] = $ligne_dept['nom'];
$nd++;
}
/* Maintenant on peut construire la liste déroulante */
$liste = "";
?>
<script type="text/javascript" src="./pdt_xhr.js" charset="iso_8859-1"></script>
<?
$liste = '<select name="annee" id="annee" onchange="getAnnee(this.value);">'."\n";
for($d = 0; $d < $nd; $d++)
{
$liste .= ' <option value="'. $code_annee[$d] .'">'. htmlentities($nom_annee[$d]) .' ('. $code_annee[$d] .') ('. $nom_collection[$d] .') </option>'."\n";
}
$liste .= '</select>'."\n";
/* Un petit coup de balai */
mysql_free_result($rech_dept);
/* Affichage de la liste déroulante */
echo($liste);
}
/* Sinon on retourne un message d'erreur */
else
{
echo("<p>Une erreur s'est produite. La région sélectionnée comporte une donnée invalide.</p>\n");
}
?>
produits.php
Code : Tout sélectionner
<?php
/**
* Code qui sera aeeplé par un objet XHR et qui
* retournera la liste déroulante des départements
* correspondant à la région sélectionnée.
*/
/* Paramètres de connexion */
$serveur = "localhost";
$admin = "root";
$mdp = "";
$base = "gestion";
/* On récupère l'identifiant de la région choisie. */
$idr2 = isset($_GET['idr2']) ? $_GET['idr2'] : false;
/* Si on a une région, on procède à la requête */
if(false !== $idr2)
{
/* Cération de la requête pour avoir les départements de cette région */
$sql2 = "SELECT `id`, `annee`, `ref` , `fournisseur` ".
" FROM `produits`".
" WHERE `fournisseur` = ". $idr2 ."".
" ORDER BY `nom`;";
$connexion = mysql_connect($serveur, $admin, $mdp);
mysql_select_db($base, $connexion);
$rech_dept = mysql_query($sql2, $connexion);
/* Un petit compteur pour les départements */
$nd = 0;
/* On crée deux tableaux pour les numéros et les noms des départements */
// $code_dept = array();
// $nom_dept = array();
//$code_annee = array();
//$nom_annee = array();
//$nom_collection = array();
$code_pdt = array();
$ref_pdt = array();
$code_frs = array();
/* On va mettre les numéros et noms des départements dans les deux tableaux */
while(false != ($ligne_dept = mysql_fetch_assoc($rech_dept)))
{
// $code_dept[] = $ligne_dept['id_departement'];
// $nom_dept[] = $ligne_dept['departement'];
// $code_annee[] = $ligne_dept['id'];
// $nom_annee[] = $ligne_dept['annee'];
// $nom_collection[] = $ligne_dept['nom'];
$code_pdt[] = $ligne_dept['id'];
$ref_pdt[] = $ligne_dept['ref'];
$code_frs[] = $ligne_dept['fournisseur'];
$nd++;
}
/* Maintenant on peut construire la liste déroulante */
$liste = "";
$liste .= '<select name="produit" id="produit">'."\n";
for($d = 0; $d < $nd; $d++)
{
$liste .= ' <option value="'. $code_pdt[$d] .'">'. htmlentities($ref_pdt[$d]) .' ('. $code_pdt[$d] .')</option>'."\n";
}
$liste .= '</select>'."\n";
/* Un petit coup de balai */
mysql_free_result($rech_dept);
/* Affichage de la liste déroulante */
echo($liste);
}
/* Sinon on retourne un message d'erreur */
else
{
echo("<p>Une erreur s'est produite. La région sélectionnée comporte une donnée invalide.</p>\n");
}
?>
Et les 2 fichiers .JS
dept
Code : Tout sélectionner
/**
* Lister les départements d'une région avec un objet
* XMLHTTPRequest.
*/
/* Création de la variable globale qui contiendra l'objet XHR */
var requete = null;
/**
* Fonction privée qui va créer un objet XHR.
* Cette fonction initialisera la valeur dans la variable globale définie
* ci-dessus.
*/
function creerRequete()
{
try
{
/* On tente de créer un objet XmlHTTPRequest */
requete = new XMLHttpRequest();
}
catch (microsoft)
{
/* Microsoft utilisant une autre technique, on essays de créer un objet ActiveX */
try
{
requete = new ActiveXObject('Msxml2.XMLHTTP');
}
catch(autremicrosoft)
{
/* La première méthode a échoué, on en teste une seconde */
try
{
requete = new ActiveXObject('Microsoft.XMLHTTP');
}
catch(echec)
{
/* À ce stade, aucune méthode ne fonctionne... mettez donc votre navigateur à jour ;) */
requete = null;
}
}
}
if(requete == null)
{
alert('Impossible de créer l\'objet requête,\nVotre navigateur ne semble pas supporter les object XMLHttpRequest.');
}
}
/**
* Fonction privée qui va mettre à jour l'affichage de la page.
*/
function actualiserDepartements()
{
var listeDept = requete.responseText;
var blocListe = document.getElementById('blocDepartements');
blocListe.innerHTML = listeDept;
}
/**
* Fonction publique appelée par la page affichée.
* Cette fonction va initialiser la création de l'objet XHR puis appeler
* le code serveur afin de récupérer les données à modifier dans la page.
*/
function getDepartements(idr)
{
/* Si il n'y a pas d'identifiant de région, on fait disparaître la seconde liste au cas où elle serait affichée */
if(idr == 'vide')
{
document.getElementById('blocDepartements').innerHTML = '';
}
else
{
/* À cet endroit précis, on peut faire apparaître un message d'attente */
var blocListe = document.getElementById('blocDepartements');
blocListe.innerHTML = "Traitement en cours, veuillez patienter...";
/* On crée l'objet XHR */
creerRequete();
/* Définition du fichier de traitement */
var url = 'departements.php?idr='+ idr;
/* Envoi de la requête à la page de traitement */
requete.open('GET', url, true);
/* On surveille le changement d'état de la requête qui va passer successivement de 1 à 4 */
requete.onreadystatechange = function()
{
/* Lorsque l'état est à 4 */
if(requete.readyState == 4)
{
/* Si on a un statut à 200 */
if(requete.status == 200)
{
/* Mise à jour de l'affichage, on appelle la fonction apropriée */
actualiserDepartements();
}
}
};
requete.send(null);
}
}
pdt
Code : Tout sélectionner
/**
* Lister les départements d'une région avec un objet
* XMLHTTPRequest.
*/
/* Création de la variable globale qui contiendra l'objet XHR */
var Requetepdt = null;
/**
* Fonction privée qui va créer un objet XHR.
* Cette fonction initialisera la valeur dans la variable globale définie
* ci-dessus.
*/
function creerRequetepdt()
{
try
{
/* On tente de créer un objet XmlHTTPRequest */
Requetepdt = new XMLHttpRequest();
}
catch (microsoft)
{
/* Microsoft utilisant une autre technique, on essays de créer un objet ActiveX */
try
{
Requetepdt = new ActiveXObject('Msxml2.XMLHTTP');
}
catch(autremicrosoft)
{
/* La première méthode a échoué, on en teste une seconde */
try
{
Requetepdt = new ActiveXObject('Microsoft.XMLHTTP');
}
catch(echec)
{
/* À ce stade, aucune méthode ne fonctionne... mettez donc votre navigateur à jour ;) */
Requetepdt = null;
}
}
}
if(Requetepdt == null)
{
alert('Impossible de créer l\'objet requête,\nVotre navigateur ne semble pas supporter les object XMLHttpRequest.');
}
}
/**
* Fonction privée qui va mettre à jour l'affichage de la page.
*/
function actualiserAnnee()
{
var listePdt = Requetepdt.responseText;
var blocListe = document.getElementById('blocPdt');
blocListe.innerHTML = listePdt;
}
/**
* Fonction publique appelée par la page affichée.
* Cette fonction va initialiser la création de l'objet XHR puis appeler
* le code serveur afin de récupérer les données à modifier dans la page.
*/
function getAnnee(idr2)
{
/* Si il n'y a pas d'identifiant de région, on fait disparaître la seconde liste au cas où elle serait affichée */
if(idr == 'vide')
{
document.getElementById('blocPdt').innerHTML = '';
}
else
{
/* À cet endroit précis, on peut faire apparaître un message d'attente */
var blocListe = document.getElementById('blocPdt');
blocListe.innerHTML = "Traitement en cours, veuillez patienter...";
/* On crée l'objet XHR */
creerRequetepdt();
/* Définition du fichier de traitement */
var url = 'produits.php?idr2='+ idr2;
/* Envoi de la requête à la page de traitement */
Requetepdt.open('GET', url, true);
/* On surveille le changement d'état de la requête qui va passer successivement de 1 à 4 */
Requetepdt.onreadystatechange = function()
{
/* Lorsque l'état est à 4 */
if(Requetepdt.readyState == 4)
{
/* Si on a un statut à 200 */
if(Requetepdt.status == 200)
{
/* Mise à jour de l'affichage, on appelle la fonction apropriée */
actualiserAnnee();
}
}
};
Requetepdt.send(null);
}
}
Si quelqu'un a une idée ...
Merci d'avance,
Plexou
Bon j'ai refait mon ancien Code pour que ca soit plus clair, mais je ne parviens toujours pas a faire fonctionner tout ca :(
J'ai créé 2 autres fichiers php et java pour bien séparer les fonctions
index.php
[code]
<?php
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
/* Variables de connexion : ajustez ces paramètres selon votre propre environnement */
$serveur = "localhost";
$admin = "root";
$mdp = "";
$base = "gestion";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Liste déroulantes dynamiques liées</title>
<script type="text/javascript" src="./dept_xhr.js" charset="iso_8859-1"></script>
<script type="text/javascript" src="./pdt_xhr.js" charset="iso_8859-1"></script>
<?php
/* Requête SQL de récupération des données de la première liste */
/*$sql = "SELECT `id_region` AS idr, `region` ".
"FROM `region` ".
"ORDER BY `id_region`;";
*/
$sql = "SELECT `id` AS idr, `nom` ".
"FROM `fournisseur` ".
"ORDER BY `id`;";
/* Connexion et exécution de la requête */
$connexion = mysql_connect($serveur, $admin, $mdp);
if($connexion != false)
{
$choixbase = mysql_select_db($base, $connexion);
$recherche = mysql_query($sql, $connexion);
/* Création du tableau PHP des valeurs récupérées */
// $regions = array();
$fournisseurs = array();
/* Index du département par tableau régional */
$id = 0;
while($ligne = mysql_fetch_assoc($recherche))
{
// $regions[$ligne['idr']] = $ligne['region'];
$fournisseurs[$ligne['idr']] = $ligne['nom'];
}
?>
</head>
<body style="font-family: verdana, helvetica, sans-serif; font-size: 85%">
<h3>Version Utilisant AJAX</h3>
<p>Vous constaterez que le délai de latence entre la sélection et la mise à jour est quasiment intermédiaire entre les versions 100% PHP et JavaScript.</p>
<h3>Trouver un département</h3>
<form action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" id="chgdept">
<fieldset style="border: 3px double #333399">
<legend>Sélectionnez une région</legend>
<select name="region" id="region" onchange="getDepartements(this.value);">
<option value="vide">- - - Choisissez une région - - -</option>
<?php
/* Construction de la première liste : on se sert du tableau PHP */
foreach($fournisseurs as $nr => $nom)
{
?>
<option value="<?php echo($nr); ?>"><?php echo($nom); ?></option>
<?php
}
?>
</select>
<!-- ICI, le secret : on met un bloc avec un id ou va s'insérer le code de
la seconde liste déroulande -->
<span id="blocDepartements"></span><br />
<!-- Bloc pour l'affichage de la sélection par Année -->
<span id="blocPdt"></span><br />
<input type="submit" name="ok" id="ok" value="Envoyer" />
</fieldset>
</form>
<?php
}
else
{
/* Si vous arrivez ici, vous avez un gros problème avec la connexion au serveur de base de données */
?>
</head>
<body>
<p>La connexion au serveur de base de données a échoué. Aucun élément ne peut être affiché.</p>
<?php
}
?>
</body>
</html>
[/code]
departements.php
[code]
<?php
/**
* Code qui sera aeeplé par un objet XHR et qui
* retournera la liste déroulante des départements
* correspondant à la région sélectionnée.
*/
/* Paramètres de connexion */
$serveur = "localhost";
$admin = "root";
$mdp = "";
$base = "gestion";
/* On récupère l'identifiant de la région choisie. */
$idr = isset($_GET['idr']) ? $_GET['idr'] : false;
/* Si on a une région, on procède à la requête */
if(false !== $idr)
{
/* Cération de la requête pour avoir les départements de cette région */
$sql2 = "SELECT `id`, `annee`, `nom` ".
" FROM `annee`".
" WHERE `fournisseur` = ". $idr ."".
" ORDER BY `fournisseur`;";
$connexion = mysql_connect($serveur, $admin, $mdp);
mysql_select_db($base, $connexion);
$rech_dept = mysql_query($sql2, $connexion);
/* Un petit compteur pour les départements */
$nd = 0;
/* On crée deux tableaux pour les numéros et les noms des départements */
// $code_dept = array();
// $nom_dept = array();
$code_annee = array();
$nom_annee = array();
$nom_collection = array();
/* On va mettre les numéros et noms des départements dans les deux tableaux */
while(false != ($ligne_dept = mysql_fetch_assoc($rech_dept)))
{
// $code_dept[] = $ligne_dept['id_departement'];
// $nom_dept[] = $ligne_dept['departement'];
$code_annee[] = $ligne_dept['id'];
$nom_annee[] = $ligne_dept['annee'];
$nom_collection[] = $ligne_dept['nom'];
$nd++;
}
/* Maintenant on peut construire la liste déroulante */
$liste = "";
?>
<script type="text/javascript" src="./pdt_xhr.js" charset="iso_8859-1"></script>
<?
$liste = '<select name="annee" id="annee" onchange="getAnnee(this.value);">'."\n";
for($d = 0; $d < $nd; $d++)
{
$liste .= ' <option value="'. $code_annee[$d] .'">'. htmlentities($nom_annee[$d]) .' ('. $code_annee[$d] .') ('. $nom_collection[$d] .') </option>'."\n";
}
$liste .= '</select>'."\n";
/* Un petit coup de balai */
mysql_free_result($rech_dept);
/* Affichage de la liste déroulante */
echo($liste);
}
/* Sinon on retourne un message d'erreur */
else
{
echo("<p>Une erreur s'est produite. La région sélectionnée comporte une donnée invalide.</p>\n");
}
?>
[/code]
produits.php
[code]
<?php
/**
* Code qui sera aeeplé par un objet XHR et qui
* retournera la liste déroulante des départements
* correspondant à la région sélectionnée.
*/
/* Paramètres de connexion */
$serveur = "localhost";
$admin = "root";
$mdp = "";
$base = "gestion";
/* On récupère l'identifiant de la région choisie. */
$idr2 = isset($_GET['idr2']) ? $_GET['idr2'] : false;
/* Si on a une région, on procède à la requête */
if(false !== $idr2)
{
/* Cération de la requête pour avoir les départements de cette région */
$sql2 = "SELECT `id`, `annee`, `ref` , `fournisseur` ".
" FROM `produits`".
" WHERE `fournisseur` = ". $idr2 ."".
" ORDER BY `nom`;";
$connexion = mysql_connect($serveur, $admin, $mdp);
mysql_select_db($base, $connexion);
$rech_dept = mysql_query($sql2, $connexion);
/* Un petit compteur pour les départements */
$nd = 0;
/* On crée deux tableaux pour les numéros et les noms des départements */
// $code_dept = array();
// $nom_dept = array();
//$code_annee = array();
//$nom_annee = array();
//$nom_collection = array();
$code_pdt = array();
$ref_pdt = array();
$code_frs = array();
/* On va mettre les numéros et noms des départements dans les deux tableaux */
while(false != ($ligne_dept = mysql_fetch_assoc($rech_dept)))
{
// $code_dept[] = $ligne_dept['id_departement'];
// $nom_dept[] = $ligne_dept['departement'];
// $code_annee[] = $ligne_dept['id'];
// $nom_annee[] = $ligne_dept['annee'];
// $nom_collection[] = $ligne_dept['nom'];
$code_pdt[] = $ligne_dept['id'];
$ref_pdt[] = $ligne_dept['ref'];
$code_frs[] = $ligne_dept['fournisseur'];
$nd++;
}
/* Maintenant on peut construire la liste déroulante */
$liste = "";
$liste .= '<select name="produit" id="produit">'."\n";
for($d = 0; $d < $nd; $d++)
{
$liste .= ' <option value="'. $code_pdt[$d] .'">'. htmlentities($ref_pdt[$d]) .' ('. $code_pdt[$d] .')</option>'."\n";
}
$liste .= '</select>'."\n";
/* Un petit coup de balai */
mysql_free_result($rech_dept);
/* Affichage de la liste déroulante */
echo($liste);
}
/* Sinon on retourne un message d'erreur */
else
{
echo("<p>Une erreur s'est produite. La région sélectionnée comporte une donnée invalide.</p>\n");
}
?>
[/code]
Et les 2 fichiers .JS
dept
[code]
/**
* Lister les départements d'une région avec un objet
* XMLHTTPRequest.
*/
/* Création de la variable globale qui contiendra l'objet XHR */
var requete = null;
/**
* Fonction privée qui va créer un objet XHR.
* Cette fonction initialisera la valeur dans la variable globale définie
* ci-dessus.
*/
function creerRequete()
{
try
{
/* On tente de créer un objet XmlHTTPRequest */
requete = new XMLHttpRequest();
}
catch (microsoft)
{
/* Microsoft utilisant une autre technique, on essays de créer un objet ActiveX */
try
{
requete = new ActiveXObject('Msxml2.XMLHTTP');
}
catch(autremicrosoft)
{
/* La première méthode a échoué, on en teste une seconde */
try
{
requete = new ActiveXObject('Microsoft.XMLHTTP');
}
catch(echec)
{
/* À ce stade, aucune méthode ne fonctionne... mettez donc votre navigateur à jour ;) */
requete = null;
}
}
}
if(requete == null)
{
alert('Impossible de créer l\'objet requête,\nVotre navigateur ne semble pas supporter les object XMLHttpRequest.');
}
}
/**
* Fonction privée qui va mettre à jour l'affichage de la page.
*/
function actualiserDepartements()
{
var listeDept = requete.responseText;
var blocListe = document.getElementById('blocDepartements');
blocListe.innerHTML = listeDept;
}
/**
* Fonction publique appelée par la page affichée.
* Cette fonction va initialiser la création de l'objet XHR puis appeler
* le code serveur afin de récupérer les données à modifier dans la page.
*/
function getDepartements(idr)
{
/* Si il n'y a pas d'identifiant de région, on fait disparaître la seconde liste au cas où elle serait affichée */
if(idr == 'vide')
{
document.getElementById('blocDepartements').innerHTML = '';
}
else
{
/* À cet endroit précis, on peut faire apparaître un message d'attente */
var blocListe = document.getElementById('blocDepartements');
blocListe.innerHTML = "Traitement en cours, veuillez patienter...";
/* On crée l'objet XHR */
creerRequete();
/* Définition du fichier de traitement */
var url = 'departements.php?idr='+ idr;
/* Envoi de la requête à la page de traitement */
requete.open('GET', url, true);
/* On surveille le changement d'état de la requête qui va passer successivement de 1 à 4 */
requete.onreadystatechange = function()
{
/* Lorsque l'état est à 4 */
if(requete.readyState == 4)
{
/* Si on a un statut à 200 */
if(requete.status == 200)
{
/* Mise à jour de l'affichage, on appelle la fonction apropriée */
actualiserDepartements();
}
}
};
requete.send(null);
}
}
[/code]
pdt
[code]
/**
* Lister les départements d'une région avec un objet
* XMLHTTPRequest.
*/
/* Création de la variable globale qui contiendra l'objet XHR */
var Requetepdt = null;
/**
* Fonction privée qui va créer un objet XHR.
* Cette fonction initialisera la valeur dans la variable globale définie
* ci-dessus.
*/
function creerRequetepdt()
{
try
{
/* On tente de créer un objet XmlHTTPRequest */
Requetepdt = new XMLHttpRequest();
}
catch (microsoft)
{
/* Microsoft utilisant une autre technique, on essays de créer un objet ActiveX */
try
{
Requetepdt = new ActiveXObject('Msxml2.XMLHTTP');
}
catch(autremicrosoft)
{
/* La première méthode a échoué, on en teste une seconde */
try
{
Requetepdt = new ActiveXObject('Microsoft.XMLHTTP');
}
catch(echec)
{
/* À ce stade, aucune méthode ne fonctionne... mettez donc votre navigateur à jour ;) */
Requetepdt = null;
}
}
}
if(Requetepdt == null)
{
alert('Impossible de créer l\'objet requête,\nVotre navigateur ne semble pas supporter les object XMLHttpRequest.');
}
}
/**
* Fonction privée qui va mettre à jour l'affichage de la page.
*/
function actualiserAnnee()
{
var listePdt = Requetepdt.responseText;
var blocListe = document.getElementById('blocPdt');
blocListe.innerHTML = listePdt;
}
/**
* Fonction publique appelée par la page affichée.
* Cette fonction va initialiser la création de l'objet XHR puis appeler
* le code serveur afin de récupérer les données à modifier dans la page.
*/
function getAnnee(idr2)
{
/* Si il n'y a pas d'identifiant de région, on fait disparaître la seconde liste au cas où elle serait affichée */
if(idr == 'vide')
{
document.getElementById('blocPdt').innerHTML = '';
}
else
{
/* À cet endroit précis, on peut faire apparaître un message d'attente */
var blocListe = document.getElementById('blocPdt');
blocListe.innerHTML = "Traitement en cours, veuillez patienter...";
/* On crée l'objet XHR */
creerRequetepdt();
/* Définition du fichier de traitement */
var url = 'produits.php?idr2='+ idr2;
/* Envoi de la requête à la page de traitement */
Requetepdt.open('GET', url, true);
/* On surveille le changement d'état de la requête qui va passer successivement de 1 à 4 */
Requetepdt.onreadystatechange = function()
{
/* Lorsque l'état est à 4 */
if(Requetepdt.readyState == 4)
{
/* Si on a un statut à 200 */
if(Requetepdt.status == 200)
{
/* Mise à jour de l'affichage, on appelle la fonction apropriée */
actualiserAnnee();
}
}
};
Requetepdt.send(null);
}
}
[/code]
Si quelqu'un a une idée ...
Merci d'avance,
Plexou