[AJAX] Listes liées + input
Bonjour,
sur un formulaire j'ai 2 select et un input.
Quand je sélectionne un item du 1er select, pas de problème, le 2nd select se met à jour (merci siddh!).
Théoriquement, en changeant la valeur du 2nd select, une valeur devrait apparaître dans l'input. En pratique, rien ne se passe!
Avec cet excellent topic http://www.developpez.net/forums/d77...te-liees-ajax/, j'ai réussi à le faire mais avec 3 select :cry:
Merci de jeter un oeil sur les différents codes ci-dessous et m'indiquer ce que je fais de travers (ou que je n'ai pas compris!).
La page principale:
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
html>
<head>
<title>Tutoriel Ajax (XHTML + JavaScript + XML)</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 go(){
var xhr = getXhr();
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
var rst = xhr.responseText;
document.getElementById('menu').innerHTML = rst;
}
}
xhr.open("POST","ajaxMenu.php",true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
sel = document.getElementById('theme');
idtheme = sel.options[sel.selectedIndex].value;
xhr.send("idtheme="+idtheme);
}
function go2(){
var xhr = getXhr();
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
var rst2=xhr.rseponseText;
document.getElementById('href').value=rst2;
}
}
xhr.open("POST", "ajaxHref.php");
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
sel = document.getElementById('menu');
idmenu = sel.options[sel.selectedIndex].value;
xhr.send("idmenu="+idmenu);
}
</script>
</head>
<?php
include('base.cnx.php');
$sqlTheme="select * from theme order by 1";
$rqTheme=mysqli_query($cnx,$sqlTheme) or die("Exécution de la requête rqTheme impossible");
?>
<body>
<form>
<fieldset style="width: 500px">
<legend>Liste liées</legend>
<label>T H E M E S</label>
<select name='theme' id='theme' onchange='go()'>
<option value='-1'>Aucun</option>
<?php
while($dataTheme = mysqli_fetch_assoc($rqTheme)){
extract($dataTheme);
echo "<option value='".$thnum."'>".$thlibelle."</option>";
}
?>
</select>
<label>Menu</label>
<div id='menu' style='display:inline'>
<select name='menu' onchange="go2()">
<option value='-1'>M E N U S</option>
</select>
</div>
<div id="href" style='display:inline'>
<input type="text" name="href">
</div>
</fieldset>
</form>
</body>
</html> |
La 1ère page php appelée:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
?php
include('base.cnx.php');
$sqlMenu="select * from menu where metheme=".$_POST['idtheme'];
$rqMenu=mysqli_query($cnx,$sqlMenu) or die("Exécution de la requête rqMenu impossible");
echo "<select name='menu' onchange='go2()'>";
while($dataMenu = mysqli_fetch_assoc($rqMenu)){
extract($dataMenu);
echo "<option value='".$menum."'>".$melibelle."</option>";
}
echo "</select>";
?> |
La 2nde page php appelée:
Code:
1 2 3 4 5 6 7 8 9
|
<?php
include 'base.cnx.php';
$sqlHref="select mehref from menu where menum=".$_POST['idmenu'];
$rqHref=mysqli_query($cnx, $sqlHref) or die("Exécution de la requête rqHref impossible");
$dataHref=mysqli_fetch_assoc($rqHref);
extract($dataHref);
echo $dataHref;
?> |