aodot Posté 5 Septembre 2007 Posté 5 Septembre 2007 Bonjour, Pas mal de recherches depuis google mais de réponses mis à part un tutorial de devellopez.net qui revient toujours. Je l'ai adapté à mon cas très rapidement mais la seconde liste n'affiche rien. En gros première zone et deuxième liste ville. Voici le code de auteurs.php <html><?PHP include('../include/connectdb.php'); ?> <head> <title>My webpage is rich</title> <script type='text/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 change(){ var xhr = getXhr(); // On défini ce qu'on va faire quand on aura la réponse xhr.onreadystatechange = function(){ alert(xhr.readyState); // 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){ di = document.getElementById('livre'); di.innerHTML = xhr.responseText; } } // Ici on va voir comment faire du post xhr.open("POST","ajaxLivre.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 idauteur = document.getElementById('auteur').options[document.getElementById('auteur').selectedIndex].value; //alert(idauteur); xhr.send("idAuteur="+idauteur); } </script> </head> <body> <form> <fieldset style="width: 500px"> <legend>Liste liées</legend> <label>Auteurs</label> <select name='auteur' id='auteur' onchange='change()'> <option value='-1'>Aucun</option> <?php $res = mysql_query("SELECT * FROM immo_zone ORDER BY zone"); while($row = mysql_fetch_assoc($res)){ echo "<option value='".$row["id"]."'>".$row["zone"]."</option>"; } ?> </select> <label>Livres</label> <div id='livre' style='display:inline'> <select name='livre'> <option value='-1'>Choisir une zone</option> </select> </div> </fieldset> </form> </body></html> et celui de ajaxLivre.php <?php echo "<select name='livre'>"; if(isset($_REQUEST["idAuteur"])){ $res = mysql_query("SELECT * FROM immo_ville WHERE zone=".$_REQUEST["idAuteur"]." ORDER BY ville"); while($row = mysql_fetch_assoc($res)){ echo "<option value='".$row["id"]."'>".$row["ville"]."</option>"; } } else echo "<option value='-1'>Choisir une ville</option>"; echo "</select>";?> Il y a t'il un soucis quelques parts ? Merci par avance
iNCiTE Web Posté 5 Septembre 2007 Posté 5 Septembre 2007 Je te suis à la trace... Oui, un gros, un classique, dans ajaxLivre.php : il faut pas oublier que c'est un script exécuté seul, pas dans un include. Et donc tu fais une requête mais tu n'es pas connecté à une base ! Un petit include('../include/connectdb.php'); au début du script. Mais tu aurais vu l'erreur "No database selected" si tu mettais des tests d'erreur, comme echo mysql_error(); après les mysql_query. Tu as une version en ligne, pour chercher les autres erreurs si il y a ??
aodot Posté 5 Septembre 2007 Auteur Posté 5 Septembre 2007 lol que ce soit dans le forum php ou ajax vous êtes toujours le premier a répondre. EN tout cas merci pour votre rapidité. Maintenant cela fonctionne car j'ai rajouté la connexion à la bdd. Cependant des alert apparraissent après le choix de la première liste j'ai donc mit la ligne alert(xhr.readyState); en commentaire et cela fonctionne apparement. Un grand merci en tout cas. A bientôt.
iNCiTE Web Posté 5 Septembre 2007 Posté 5 Septembre 2007 Disons qu'il y a certains sujets qui m'attirent plus et où je trouve les réponses plus vite Et effectivement, les alert() devaient être là pour débugger ou à titre d'info. Penses à mettre des tests après les requêtes, ça évite de chercher la source des problèmes bien souvent !
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant