Partage

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

Vous êtes demandeur d'emploi ?
Sans diplôme post-bac ?

Devenez Développeur web junior

Je postule
Formation
en ligne
Financée
à 100%
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 !

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

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 ?

"K.I.S.S." Keep It Simple Stupid - Utilisez la Doc - Activer les Exceptions PDO - SQL Formes Normales
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 ?

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

"K.I.S.S." Keep It Simple Stupid - Utilisez la Doc - Activer les Exceptions PDO - SQL Formes Normales
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.

21 juin 2018 à 15:19:01

et la valeur par défaut elle est définie par quel nom de champ ?
"K.I.S.S." Keep It Simple Stupid - Utilisez la Doc - Activer les Exceptions PDO - SQL Formes Normales
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...
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

"K.I.S.S." Keep It Simple Stupid - Utilisez la Doc - Activer les Exceptions PDO - SQL Formes Normales
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>



21 juin 2018 à 16:52:31

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

SELECT * FROM groupes2 ORDER BY ordrel



"K.I.S.S." Keep It Simple Stupid - Utilisez la Doc - Activer les Exceptions PDO - SQL Formes Normales

liste déroulante et selected à suivre

× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
  • Editeur
  • Markdown