Partage
  • Partager sur Facebook
  • Partager sur Twitter

liste déroulante et selected à suivre

    21 juin 2018 à 12:05:40

    Bonjour,

    voilà, j'ai un formulaire où je génère plusieurs lignes avec les mêmes champs. J'ai fait avec $r pour répéter autant de lignes qu'il y a de groupes enregistrés en base. Ca fait genre une vingtaine (pour le moment). Donc j'ai autant de <select> que de groupes enregistrés.

    J'aimerai bien pouvoir faire un truc du genre : pour la première ligne, je veux que ce soit l'<option> enregistré en un (donc le premier groupe) puis pour la seconde ligne je veux que se soit le suivant et ainsi de suite.

    Je ne sais pas si j'explique correctement mon affaire...

    Des pistes pour m'aider ?

    <?php $r = 1; ?>
    	
    <form onsubmit="return verifForm()" name="ajouter" method="post" action="fin.php" enctype="multipart/form-data">
    	<p>Indiquer la date : <input required type="date" name="date_journee" id="date_journee" placeholder="aaaa-mm-jj"  /></p>
    	<table class="table">
    		<tr>
    			<td>Groupe</td>
    			<td>Type</td>
    		</tr>
    		<?php
    		$nbgroupes = $bdd ->query("SELECT COUNT(groupe) FROM groupes2 WHERE groupe!=''")->fetchColumn(); /*on compte le nb de groupes enregistrés en base*/
    		
    			while ($r <= $nbgroupes) //boucle pour avoir autant de ligne disponible que de groupes enregistrés.
    			{
    				$reponse = $bdd->query('SELECT * FROM groupes2 ORDER BY ordrel');
    
    				$gpes = array (); //déclaration d'un tableau vide pour récupérer les groupes
    				while ($donnees = $reponse->fetch())
    				{
    					$gpes[$donnees['id']] = $donnees['groupe'];	
    				}
    				$reponse->closeCursor(); // Termine le traitement de la requête	
    				echo '<tr><td><select name="ID_groupe'.$r.'" id="ID_groupe'.$r.'" style="width:90px">';
    				echo'<option value="">-groupe-</option>';	/*liste déroulante pour les groupes */	
    				foreach ($gpes as $id => $gpe) //récupération de chaque groupes 
    				{		
    					echo '<option value="'.$id.'" >'.$gpe.'</option> ';
    				}
    				echo '</select></td>
    			
    			
    		</tr>';
    		
    		$r++; //incrémentation pour avoir nb 
    		}
    		?>
    	</table>
    	<p style="text-align:center;">
    		<input class="lenvoi" align="center" type="submit" value="Envoyer">
    	</p>
    </form>

    Merci !

    -
    Edité par zazzou 21 juin 2018 à 12:06:10

    • Partager sur Facebook
    • Partager sur Twitter
      21 juin 2018 à 14:35:56

      Salut,

      D'après la doc tu peux utiliser l'attribut value, qui doit avoir comme valeur celle d'une des balises filles <option>. Voilà tout !

      • Partager sur Facebook
      • Partager sur Twitter
        21 juin 2018 à 14:57:04

        Désolée, je ne comprends pas tellement la réponse.

        Comme je ne suis pas sure d'avoir été claire, je précise...

        Imaginons que ma liste générée avec ma base de données, cela génère 1,2,3,4.

        Donc en gros je veux afficher les 4 listes déroulantes avec pour la première mon selected sur le 1, la deuxième sur 2 etc. Ainsi, cela donnerait un truc du genre :

        Merci

        • Partager sur Facebook
        • Partager sur Twitter
          21 juin 2018 à 15:00:05

          Salut,

          chaque liste à son propre name et donc dans le POST tu auras $_POST['name'] = option_value

          Donc il suffit dans la création des listes de faire un test sur $_POST['name'] == $data['valeur'] => selected="selected"

          Clair ?

          • Partager sur Facebook
          • Partager sur Twitter
            21 juin 2018 à 15:05:03

            ouais ...

            Je comprends pas tellement l'idée du $_POST. puisque je n'en n'ai pas. C'est un affichage d'un formulaire donc pour l'instant il n'y a rien qui a été rempli donc pas de $_POST.

            Non ?

            • Partager sur Facebook
            • Partager sur Twitter
              21 juin 2018 à 15:10:32

              comment tu veux sélectionner une option que tu aurais sélectionnée si tu n'as pas de POST ?

              Tu veux sélectionner une valeur par défaut dans tes liste ? Il faut la connaitre AVANT de créer la-dite liste

              • Partager sur Facebook
              • Partager sur Twitter
                21 juin 2018 à 15:15:24

                Et bien, je veux proposer mes listes de sorte que la première liste : c'est la première option qui est par défaut. La seconde liste c'est la seconde option qui est par défaut et ainsi de suite. Toutes les listes c'est les mêmes propositions dedans.

                J'ai donc une base de données avec 1,2,3,4.

                Première liste : 1 par défaut, 2, 3, 4
                Deuxième liste : 1, 2 par défaut, 3 et 4
                Troisième liste : 1,2,3 par défaut, et 4
                Quatrième liste : 1,2,3 et 4 par défaut.

                • Partager sur Facebook
                • Partager sur Twitter
                  21 juin 2018 à 15:19:01

                  et la valeur par défaut elle est définie par quel nom de champ ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    21 juin 2018 à 15:22:44

                    Euh et bien je pensais qu'on pouvait dire que pour chaque tour de la boucle on change et on va au suivant mais peut être qu'on peut pas en fait...
                    • Partager sur Facebook
                    • Partager sur Twitter
                      21 juin 2018 à 16:32:13

                      zazzou a écrit:

                      Euh et bien je pensais qu'on pouvait dire que pour chaque tour de la boucle on change et on va au suivant mais peut être qu'on peut pas en fait...


                      pas compris

                      • Partager sur Facebook
                      • Partager sur Twitter
                        21 juin 2018 à 16:33:49

                        Je remets le code de mon premier post qui montre que je génère autant de liste déroulantes que je n'ai de groupes enregistrés. Donc j'ai une boucle. Je pensais qu'on pouvait dire "premier tour tu mets tel valeur en selected de ma liste, puis deuxième tour tu passes à la suivante et ainsi de suite"

                        <?php $r = 1; ?>
                             
                        <form onsubmit="return verifForm()" name="ajouter" method="post" action="fin.php" enctype="multipart/form-data">
                            <p>Indiquer la date : <input required type="date" name="date_journee" id="date_journee" placeholder="aaaa-mm-jj"  /></p>
                            <table class="table">
                                <tr>
                                    <td>Groupe</td>
                                    <td>Type</td>
                                </tr>
                                <?php
                                $nbgroupes = $bdd ->query("SELECT COUNT(groupe) FROM groupes2 WHERE groupe!=''")->fetchColumn(); /*on compte le nb de groupes enregistrés en base*/
                                 
                                    while ($r <= $nbgroupes) //boucle pour avoir autant de ligne disponible que de groupes enregistrés.
                                    {
                                        $reponse = $bdd->query('SELECT * FROM groupes2 ORDER BY ordrel');
                         
                                        $gpes = array (); //déclaration d'un tableau vide pour récupérer les groupes
                                        while ($donnees = $reponse->fetch())
                                        {
                                            $gpes[$donnees['id']] = $donnees['groupe'];
                                        }
                                        $reponse->closeCursor(); // Termine le traitement de la requête 
                                        echo '<tr><td><select name="ID_groupe'.$r.'" id="ID_groupe'.$r.'" style="width:90px">';
                                        echo'<option value="">-groupe-</option>';   /*liste déroulante pour les groupes */ 
                                        foreach ($gpes as $id => $gpe) //récupération de chaque groupes
                                        {      
                                            echo '<option value="'.$id.'" >'.$gpe.'</option> ';
                                        }
                                        echo '</select></td>
                                     
                                     
                                </tr>';
                                 
                                $r++; //incrémentation pour avoir nb
                                }
                                ?>
                            </table>
                            <p style="text-align:center;">
                                <input class="lenvoi" align="center" type="submit" value="Envoyer">
                            </p>
                        </form>



                        • Partager sur Facebook
                        • Partager sur Twitter
                          21 juin 2018 à 16:52:31

                          ouais mais tu sélectionnes toujours la même chose:

                          SELECT * FROM groupes2 ORDER BY ordrel



                          • Partager sur Facebook
                          • Partager sur Twitter

                          liste déroulante et selected à suivre

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                          • Editeur
                          • Markdown