AJAX :O

Fermé
Moi - 16 juin 2009 à 16:24
Alkaaran Messages postés 285 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 3 novembre 2009 - 17 juin 2009 à 00:19
Salutation,

Voici mon problème … Je possède 2 listes déroulantes (Syndicat, Commune).
Ces deux listes déroulantes s’alimentent entre elles par la méthode d’AJAX.

Le but est donc de sélectionner un syndicat pour ensuite accéder à la liste de ses communes, et part la suite accéder a la listes des affaires de cette commune.

J’ai donc utilisé AJAX pour alimenté les 2 listes déroulantes entre elles, mais le problème arrive au niveau de la liste des communes. En effet, quand je sélectionne une commune rien ne se passe.

C’est pourtant au moment de la sélectionne de la commune, que je souhaiterais faire apparaitre (sans recharger la page) le tableau des affaires de cette commune.

Actuellement j’utilise 3 fichiers, code.php qui est le code de la page ; commune.php qui est le fichier appelé à la sélection d’un syndicat pour alimenter la liste déroulante des communes ; tableau.php qui est le fichier appelé a la sélection de la commune pour afficher les affaires.

===================== code.php =========================

include('parametreConnexion.php');
connexion() ;
$i=0;

// Requête permettant de séléctionner tous les syndicats

$requete=" SELECT idSyndicat, nomSyndicat
FROM syndicat ;";

$requete=mssql_query($requete);
while ($resultat=mssql_fetch_array($requete)){ $liste[$i][0]=$resultat['idSyndicat']; $liste[$i][1]=utf8_encode($resultat['nomSyndicat']);
$i=$i+1;
}

echo '<table class="normal">';
echo '<tr>
<td>
<label>Syndicat : </label>
</td>';
echo '<td>
<select name="syndicat" id="syndicat"onchange=RechercherCommune()>';
echo '<option value="0">Sélectionnez un syndicat</otpion>';
echo creerListeDeroulante($liste);
echo '</select></td></tr>';
echo '</tr>';

echo '<tr>
<td>
<label>Commune : </label>
</td>';




echo '<td>
<div id="commune">';
echo '<select name="commune" id="commune" onchange=RechercherAffaire()>
<option value="0">Sélectionnez un Syndicat</option>
</select>';
echo '</div>
</td>
</tr>';

echo '<tr>
<td>
<label>Affaires : </label>
</td>';
echo '<td>
<div id="affaire">';
echo '<select name="affaire" id="affaire>

</select>';
echo '</div></td></tr>';
echo '</table>';


==================== commune.php ===========================
< ?php
include('parametreConnexion.php');
connexion();
echo '<div id="commune" style="display:inline">';
echo '<select name="commune" id="commune" onchange=RechercherAffaire()>';

if (isset($_POST['IdSyndicat'])){
if($_POST['IdSyndicat']<>0){
echo '<option value="0">Sélectionnez une commune</option>';
}else{
echo '<option value="0">Sélectionnez un syndicat</option>';
}

// Requête permettant de sélectionner les communes du syndicat sélectionné
$requete=" SELECT IdCommune
FROM syndicat
WHERE idSyndicat = '".$_POST['idSyndicat']."' ;";
$requete=mssql_query($requete);
while($resultat=mssql_fetch_array($requete)){
$search='SELECT idCommune, nomCommune
FROM commune
WHERE idCommune = '.$resultat['idCommune'].' ;';
$search=mssql_query($search);
while($result=mssql_fetch_array($search)){
echo "<option value='".$result['idCommune']."'>".
utf8_encode($result['nomCommune'])."</option>";

}
}
}



echo '</select>';
echo '</div>';
?>

<==================== tableau.php ===========================

<?php
include('parametreConnexion');
connexion();
if (isset($_POST['IdCommune'])){
if($_POST['IdCommune']<>0){
echo '<option value="0">Sélectionnez une affaire</option>';
}else{
echo '<option value="0">Sélectionnez une commune</option>';
}

//Requête permettant de sélectionner les affaires de la commune
$requete=" SELECT idAffaire, nomAffaire, codeAffaire
FROM affaire
WHERE idCommune = '".$_POST['idCommune']."' ;";
$requete=mssql_query($requete);
echo '<table>';
while($resultat=mssql_fetch_array($requete)){
echo '<tr><td>'.$result['codeAffaire'].'</td><td>'.
utf8_encode($result['nomAffaire']).'</td></tr>';
}
}

echo '</table>';
echo '</div>';


?>


======================= code javascript ===========================

function getXhr(){
var xhr = null;
if(window.XMLHttpRequest) // Firefox et autres
xhr = new XMLHttpRequest();
else if(window.ActiveXObject){ // Internet Explorer
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}else{ // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
return xhr;
}

/**
* Méthode qui sera appelée sur le click du bouton
*/
function RechercherCommune(){
var xhr = getXhr();
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState == 4 && xhr.status == 200){
leselect = xhr.responseText;
// On se sert de innerHTML pour rajouter les options a la liste
document.getElementById('commune').innerHTML = leselect;
}
};

// Ici on va voir comment faire du post
xhr.open("POST","ajax.php",true);
// ne pas oublier ça pour le post
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
// ne pas oublier de poster les arguments
// ici, l'id de l'auteur
sel = document.getElementById('syndicat');
idSyndicat = sel.options[sel.selectedIndex].value;
xhr.send("IdSyndicat="+idSyndicat);
}
function RechercherAffaire(){
var xhr = getXhr();
// On défini ce qu'on va faire quand on aura la réponse
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(xhr.readyState == 4 && xhr.status == 200){
listeAffaire = xhr.responseText;
// On se sert de innerHTML pour rajouter les options a la liste
document.getElementById('affaire').innerHTML = listeAffaire;
}
};

// Ici on va voir comment faire du post
xhr.open("POST","affiche.php",true);
// ne pas oublier ça pour le post
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
// ne pas oublier de poster les arguments
// ici, l'id de l'auteur
sel = document.getElementById('commune');
IdCommune = sel.options[sel.selectedIndex].value;
xhr.send("IdCommune="+IdCommune);
}

1 réponse

Alkaaran Messages postés 285 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 3 novembre 2009 37
17 juin 2009 à 00:19
Ton code n'est pas très propre, peut cela vient-il de là : exemple met toujours des guillemets sur tes onChange ... ( onchange="RechercehrAffaires();" et separe bien les attributs HTML avec un espace.

Ensuite peux tu nous dire si tu a des erreurs qui apparaissent dans la console javascript ? (avec Firefox par exemple)

J'attend tes retours :)
0