[PHP / JavaScript] Requête sans changer de page qui ne marche pas
Bonjour à tous :)
Je ne savais pas trop où poser cette question, mais allons-y pour PHP... ;)
J'ai essayé de faire une requête sans changer de page comme on peut si bien le faire depuis l'arrivée de certaines fonctions, mais hélas ça ne marche pas !
Le but est que lorsque je choisis une catégorie dans ma première liste, ça sélectionne automatiquement les sous catégories associées.
Un peu de code HTML pour illustrer tout cela :
Code:
1 2 3 4 5 6 7 8 9
|
Catégorie :
<select name="categorie" class="ButtonL" onchange="request(this.form)">
<option value="-"> </option>
<option value="shopping">Shopping</option>
<option value="sante">Santé / Bien être</option>
(etc...)
</select>
Sous catégorie : <select name="sous_categorie" id="sous_categorie" class="ButtonL"></select> |
J'ai trouvé de l'aide sur un site, mais je n'arrive pas à faire marcher tout ça...
J'utilise le code JS suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
<script language="javascript">
var l1 = f.elements["categorie"];
var l2 = f.elements["sous_categorie"];
var index = l1.selectedIndex;
if(index < 1)
l2.options.length = 0;
else {
var xhr_object = null;
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
xhr_object.open("POST", "species.php", true);
xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4)
eval(xhr_object.responseText);
}
xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
var data = "categorie="+escape(l1.options[index].value)+"&form="+f.name+"&select=sous_categorie";
xhr_object.send(data);
}
</script> |
Et le fichier species.php appelé est le suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
<?php
$query = "SELECT `sous_categorie` FROM `pab_articles` WHERE `categorie` = '".$_POST["categorie"]."'";
$query .= " ORDER BY `sous_categorie`";
$result = @mysql_query($query);
echo 'var o = null;';
echo 'var s = document.forms["'.$_POST["form"].'"].elements["'.$_POST["select"].'"];';
echo 's.options.length = 0;';
while($r = mysql_fetch_array($result))
echo 's.options[s.options.length] = new Option("'.$r["sous_categorie"].'");';
?> |
Sachant que ma table pab_articles est en gros comme ceci :
id_article , categorie , sous_categorie , ......
Si quelqu'un sait m'aider... Là je sèche :? c'est pas évident du tout cette histoire de requête sans bouger...
Merci d'avance :)