Récupérer id de 2 liste déroulante en ajax
Bonjour
J'ai créer 2 listes déroulantes par l'intermédiaire d'Ajax. Comme je ne suis pas un pro j'ai pris des bouts de code sur le net j'ai adapté à mon cas
Donc j'ai une liste saison. Quand on choisit une saison une liste de Matchs se remplit donc en fonction de la saison. Et après je choisis le match pour savoir qui a assisté à ce match.
Et donc dans une autre page je voudrais récupérer l'id de la saison et l'id du match pour traitement
J'ai donc une page test.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 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
| <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 changement de la liste saisons
*/
function go(){
var xhr = getXhr();
// On définit 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 à la liste
document.getElementById('Match').innerHTML = leselect;
}
}
// Ici on va voir comment faire du post
xhr.open("POST","match.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 la saison
sel = document.getElementById('lst_saisons');
saisonId = sel.options[sel.selectedIndex].value;
xhr.send("saisonId="+saisonId);
}
</script>
</head>
<?php
connexion à la base
?>
<body>
<p>
<table class="tb-admin">
<tr>
<td class="td-admin" align="center" colspan="3"><b><font color="#cc0000">En phase de test</font></b></td>
</tr>
<tr>
<form name="reservationsaison" method="post" action="liste_reservations_saisons.php">
<td class="td-admin" align="center">
<label>Saisons</label>
<?php
$sql = "SELECT COUNT(saisonId) as tSaison
FROM ot_saisons ";
$req=$db->prepare($sql);
$req->execute();
$r=$req->fetch();
$tSaison=$r['tSaison'];
$sql1 = "SELECT saisonId, saisonLibelle
FROM ot_saisons
WHERE saisonId < '$tSaison'
ORDER BY saisonId DESC";
$req1 = $db->prepare($sql1);
$req1->execute();
?>
<select required="true" name="lst_saisons" id="lst_saisons" onchange='go()'>
<option value='0'>-- Choisir la saison --</option>
<?php
while($r1 = $req1->fetch()){
?>
<option value="<?php echo $r1['saisonId']; ?>"> <?php echo $r1['saisonLibelle'] ?></option>\n;
<?php
}
?>
</select>
</td>
<td>
<label>Matchs</label>
<div id='Match' style='display:inline'>
<select name='Match'>
<option value='-1'></option>
</select>
</div>
</td>
<td>
<input class="input-admin" type="submit" name="Enregistrer" id="Enregistrer" value="Réservations Par Saison" />
</td>
</form>
</tr>
</table |
Et j'ai donc fait une page pour faire remonter les matchs par rapport à la saison
Voici ma page match.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
| connexion à la base
echo "<select name='Match'>";
if(isset($_POST["saisonId"])){
$sql = "SELECT * FROM ot_matchs
WHERE matchSaisonId = ".$_POST["saisonId"]."
ORDER BY matchDate ASC";
$req = $db->prepare($sql);
$req->bindValue(':matchSaisonId', $_POST["saisonId"],PDO::PARAM_INT);
$req->execute();
while($r = $req->fetch()){
/* pour convertir la date yyyy-mm-dd en dd/mm/yyyy */
$matchId=$r['matchId'];
$date = $r['matchDate'];
$matchCompetitionId = $r['matchCompetitionId'];
$sql1 = "SELECT competitionId,competitionLibelleLong FROM ot_competitions WHERE competitionId = '$matchCompetitionId'";
$req1 = $db->prepare($sql1);
$req1->bindValue(':competitionId', $matchCompetitionId,PDO::PARAM_INT);
$req1->execute();
$r1 = $req1->fetch();
$NomCompetition = $r1['competitionLibelleLong'];
$tabDate = explode('-' , $date);
$date_conv = $tabDate[2].'/'.$tabDate[1].'/'.$tabDate[0];
echo "<option value='".$r["matchId"]."'>".$r["matchLibelle"]." $NomCompetition $date_conv</option>";
}
}
echo "</select>"; |
Mais là je bloque pour passer mes 2 id (saison et match) à ma page de traitement
J'y suis depuis 2 jour et je n'ai plus de cheveux : je pense que c'est dans ma fonction go (passage des arguments) que je m***e (enfin ce n'est l'avis que d'un newbizz
Si quelqu'un a une idée ou une piste je suis preneur
Cordialement