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:
et le code php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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>
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 (); }
Partager