IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Liste déroulante et requêtes SQL


Sujet :

PHP & Base de données

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    août 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : août 2006
    Messages : 213
    Points : 103
    Points
    103
    Par défaut 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 : 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>
    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
    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

  2. #2
    Membre régulier

    Profil pro
    Inscrit en
    août 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : août 2006
    Messages : 213
    Points : 103
    Points
    103
    Par défaut
    Je ne m'en sort pas...
    Ne devrais-je pas plutôt utiliser AJAX pour récupérer les info et php uniquement pour ajouter les joueurs à la base?

  3. #3
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    juin 2003
    Messages
    8 487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2003
    Messages : 8 487
    Points : 13 151
    Points
    13 151
    Par défaut
    essayez de faire des pages plus simples sans javascript.
    d'abord une 1re page où vous choisissez la saison qui est envoyée à un autre script dans le genre creer_match.php?saison=2021.
    et ensuite dans cette 2e page, vous cherchez les joueurs de la saison.

  4. #4
    Membre régulier

    Profil pro
    Inscrit en
    août 2006
    Messages
    213
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : août 2006
    Messages : 213
    Points : 103
    Points
    103
    Par défaut
    C'est sur, c'est une solution pour contourner le problème. Je vais faire comme ça.

    Merci beaucoup.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Liste déroulante et requête SQL
    Par dahu17 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 10/02/2008, 20h53
  2. Récupération de variables de menus déroulants pour requète SQL
    Par Thibaut_Dupont dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 10/07/2006, 15h24
  3. Liste déroulante sur requête
    Par guiguikawa dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 21/06/2006, 13h31
  4. [MySQL] Liste déroulante et requète
    Par Mr Capone dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 28/03/2006, 15h02
  5. Liste Tstrings et requête SQL
    Par Gats dans le forum Bases de données
    Réponses: 11
    Dernier message: 21/04/2005, 17h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo