Liste déroulante et requêtes SQL
Bonjour à tous,
Débutant en php, je rencontre un petit soucis dans le code suivant.
En gros, sur ma page web pour gérer des matchs de sport, il y a d'abord liste déroulante qui permet de choisir une saison. En fonction de cette saison doit s'afficher la liste des joueurs inscrits dans des input radio pour pouvoir modifier le joueur sélectionner. Cette page me sert à l'ajout et la suppression de joueurs.
J'ai 2 soucis :
- à l'ouverture de la page, les joueurs ne se chargent pas sur le 1er élément de la liste déroulante. Je suppose que les requêtes php étant asynchrones, la requête vers les joueurs se fait avant le retour de contenu de la liste déroulante?
- lorsque je sélectionne un élément de la liste déroulante, le onchange="this.form.submit()" de cette liste recharge la page et la liste se remet sur le 1er élément...
Voici une partie du code html:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
<form name="inscription" method="post" action="joueurs.php">
<div class="custom-select" style="width:100%;">
<select name="saison" id="saison" onchange="this.form.submit()">
<?php showSaisons(); ?>
</select>
</div>
<div class="radio-toolbar">
<?php updatePlayerList(); ?>
</div>
</form> |
et le code 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
|
//Affiche les saisons dans la liste déroulante
function showSaisons(){
//Connection à la base
$base = connectMaBase();
//Requète
$sql = "SELECT * FROM saisons WHERE 1";
$req = mysqli_query($base,$sql);
if (!$req){echo "Demande échouée <br/>";};
//Parcour tous les résultats
while ($data = mysqli_fetch_array($req)) {
$selected = "";
$selected = '<script> console.log(document.getElementById("saison").value) </script>';
echo $selected;
//echo '<script> console.log("'.$selected.'"); </script>';
//Affiche les résultats
echo '<option value="'.$data['saisons'].'">'.$data['saisons'].'</option>';
}
//Libération des ressources et fermeture de la base
mysqli_free_result($data);
mysqli_close();
}
//Affiche tous les joueurs sous forme de boutons à choix unique
function updatePlayerList(){
//Connection à la base
$base = connectMaBase();
//Récupère le nom de la saison choisie dans la liste déroulante
$choixSaison = $_POST['saison'];
//Requète : récupère tous les noms de la base
$sql = 'SELECT * FROM joueurs_'.$choixSaison.' WHERE 1';
$req = mysqli_query($base,$sql);
if (!$req){echo "Demande échouée <br/>";};
//Variable pour lier les labels à leur input radio button
$x = 0;
//Parcour tous les résultats
while ($data = mysqli_fetch_array($req)) {
// Affiche les résultats sous forme de boutons à choix unique
echo '<input type="radio" name="joueurs" value="0" id='.$x. '></input>';
echo '<label for="'.$x.'" onclick="selectionneJoueur(this.innerHTML)">'.$data['nom'].'</label>';
$x++;
}
//Libération des ressources et fermeture de la base
mysqli_free_result ($req);
mysqli_close ();
} |
Merci d'avance