Affichage des listes liées
Bonjour,
Après avoir lu le tuto suivant http://http://siddh.developpez.com/articles/ajax/ et appliqué ce qu'ils disaient je me retrouve avec les deux pages de code suivant : (index.php)
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
| <html>
<head>
<title>Test_code</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();
// 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('chantier').innerHTML = leselect;
}
}
// Ici on va voir comment faire du post
xhr.open("POST","ajaxChantier.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 du client
sel = document.getElementById('client');
idclient = sel.options[sel.selectedIndex].value;
xhr.send("id_client="+idclient);
}
</script>
</head>
<body>
<form>
<fieldset style="width: 500px">
<label>Client</label>
<select name='client' id='client' onchange='go()'>
<option value='-1'>--- Selectionner un client ---</option>
<?php
$bdd =pg_connect("host=localhost port=5432 dbname=postgres user=postgres password=*******");
$sql = 'SELECT * FROM client ORDER BY nom_prenom';
$req = pg_query($sql) or die('Erreur SQL !<br/>'.$sql.'<br/>'.pg_last_error());
while ($data = pg_fetch_array($req)){
?>
<option value="<?php echo $data['nom_prenom']; ?>"><?php echo $data['nom_prenom']; ?></option>
<?php
}
?>
</select>
<label>Chantier</label>
<div id='chantier' style='display:inline'>
<select name='chantier'>
<option value='-1'>---Choisir une date---</option>
</select>
</div>
</fieldset>
</form>
</body>
</html> |
et ajaxChantier.php
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <?php
echo "<select name='chantier'>";
if(isset($_POST['client'])){
$bdd =pg_connect("host=localhost port=5432 dbname=postgres user=postgres password=*******");
$sql1 = 'SELECT id,date FROM chantier WHERE id_client = ".$_POST["id_client"]."ORDER BY date';
$req1 = pg_query($sql1) or die('Erreur SQL !<br/>'.$sql1.'<br/>'.pg_last_error());
while ($data1 = pg_fetch_assoc($req1)){
print $data1;
?>
<option value="<?php echo $data1['date']; ?>"><?php echo $data1['date']; ?></option>
<?php
}
}
?> |
Lorsque je clique sur le client dont je veux voir la liste de ses chantiers, la liste associée s'actualise mais elle est vide. Cela fait deux jours que je bloque, pouvez vous y jeter un coup d’œil svp. Je ne vois pas ou j'ai pu me tromper.
Merci :)