Pré remplir un formulaire (Liste déroulante) avec requête sql [Résolu]

- - Dernière réponse :  marc73450 - 4 janv. 2013 à 10:52
Bonjour à tous !

Voici mon problème :/

je cherche à mettre la valeur (enregistré dans ma bdd) dans une liste déroulante de mon formulaire.

Je m'explique :
Je met en place une page pour modifier des informations saisies dans un formulaires.
Je souhaite charger un formulaire déjà remplis pour que l'on puisse apporter les modifications sur certaines fiches.

Voici ma liste déroulante :

<tr>
  <td width= "50%" align="right"><label for="anneeref"> Année de référence :  </label></td>
  <td width ="50%"><select name="anneeref" id="anneeref" >
  <option value="anneer___">...</option>
  <option value="11">2011</option>
  <option value="12">2012</option>
  <option value="13">2013</option>
  <option value="14">2014</option>
  <option value="15">2015</option>
  <option value="16">2016</option>
  </select></td>
</tr>


Elle incrémente 1 colonne dans ma base, que voici :




Je voudrai que quand je charge mon formulaire pré remplis, les valeurs dans les listes déroulante soit aussi choisi.
Mais rien à faire :/

Pouvez-vous si possible m'éclairer un peu la dessus.

ps: Je sais qu'il aurait été plus simple de mettre une table par liste déroulante, mais mon formulaire fait déjà 17 tables et environ 10 à 15 colonnes par table. je ne peux malheureusement pas faire autrement car mes collègues commence déjà à remplis la base :/ Have Fun

je suis à votre disposition pour toutes questions :)
Afficher la suite 

Votre réponse

20/23 réponses

Meilleure réponse
3
Merci
ahhhhhh,
je pense savoir d'où viens le soucis, tu as 2 boucles while, alors qu'une seule suffit :
<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("bdd_at-prefo"); // Sélection de la base

$reponse = mysql_query("SELECT * FROM info_dela_personne WHERE id_stagiaires='".$id."';"); // Requête SQL
while ($data = mysql_fetch_array($reponse))
{
?>
<td width="100%">
Eléments d'identification de la personne

Nom : ,
" id="nom" />,

----

Prénom : ,
" id="prenom" />,

----

<label for="anneeref">Année de référence : </label>,
<select name="anneeref" id="anneeref" >
<option value="anneer___">...</option>
<?php
for($i=11; $i<17; $i++)
{
if($data[date] == '20'.$i){
echo '<option value="'.$i.'" selected>20'.$i.'</option>';
}else{
echo '<option value="'.$i.'">20'.$i.'</option>';
}
}
?>
</select>

<?php
}
mysql_close();
?>
</td>

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de nicotontige
3
Merci
d'ailleurs, je viens de m'apercevoir du $data[date], je pense qu'il faut des guillemets : $data["date"]
En vérifiant bien sur que le nom de ta colonne est bien "date"

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de nicotontige
3
Merci
Dans ce cas là c'est tout simple.
Si tu veux faire, comme pour les années, un "selected", il te faudra 2 requetes :
1 - pour lister "je sais pas quoi"
2 - listing des personnes

un simple parcours de tableau suffira pour afficher les personnes dans une liste déroulante :

<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("bdd_at-prefo"); // Sélection de la base

$list = mysql_query("SELECT personnes FROM ta_table");//requete pour listing personnes
$reponse = mysql_query("SELECT * FROM ta_table;");//requete pour ton affichage de tableau

echo '<select name="ton_form">';//création du select
echo '<option>...</option>';//première option "..."

while ($data = mysql_fetch_array($reponse))
{
while ($row = mysql_fetch_array($list)) {
if ($row["champ_personne"] == $data["champ_personne"]) //si la personne trouvée est celle de reponse, alors
echo '<option value="'.$row["champ_personne"].'" selected>'.$row["champ_personne"].'</option>';//option avec select
else
echo '<option value="'.$row["champ_personne"].'">'.$row["champ_personne"].'</option>';//option sans select
}
}
echo '</select>';//fin du select
mysql_close();//fermeture base de données
?>

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de nicotontige
0
Merci
Petite précision je récupère mes infos dans les tables de cette manière :

<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("bdd_at-prefo"); // Sélection de la base coursphp

$reponse = mysql_query("SELECT * FROM info_dela_personne WHERE id_stagiaires='".$id."';"); // Requête SQL
while ($data = mysql_fetch_array($reponse))
{
?>

...

<?php
}
mysql_close();
?>
Commenter la réponse de prod359
Messages postés
130
Date d'inscription
lundi 11 janvier 2010
Dernière intervention
7 juin 2013
0
Merci
<tr>
  <td width= "50%" align="right"><label for="anneeref"> Année de référence :  </label></td>
  <td width ="50%"><select name="anneeref" id="anneeref" >
  <option value="anneer___">...</option>

<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("bdd_at-prefo"); // Sélection de la base coursphp

$reponse = mysql_query("SELECT * FROM info_dela_personne WHERE id_stagiaires='".$id."';"); // Requête SQL
while ($data = mysql_fetch_assoc($reponse))
{
            for($i=11; $i<17; $i++)
            {
                if($data[date] == '20'.$i){
                    echo '<option value="'.$i.'" selected>20'.$i.'</option>';
                }else{
                    echo '<option value="'.$i.'">20'.$i.'</option>';
                }
            }
}
mysql_close();
?>
  </select></td>
</tr>
Commenter la réponse de sylvain64520
Messages postés
130
Date d'inscription
lundi 11 janvier 2010
Dernière intervention
7 juin 2013
0
Merci
tu pourras également adapter la boucle for(){}, avec Date(), pour ne pas batailler tout le temps avec les années
Commenter la réponse de sylvain64520
0
Merci
Merci de ta réponse rapide. Je regarde ça et je vous tiens informé.;)
Commenter la réponse de prod359
0
Merci
petite question : à quoi correspond => $i=11; $i<17; <=

Et si je comprend bien ça vas me select la bonne date mais les autres date ne sont plus dans la liste ?
Le but est de pouvoir en choisir une autre si il y à un changement.

dsl si ça vous parez logique je débute dans le php, la ça coince un peu. :/
Commenter la réponse de prod359
0
Merci
J'ai bien compris votre code et l'utilité du $i

j'ai tenté de mettre en place ce code avec les variables qui vont bien mais la liste reste sur la première valeur
(<option value="anneer___">...</option> )
et les autres choix en dessous n'aparesse plus une petite idée ?
Commenter la réponse de prod359
0
Merci
Bonjour,

sylvain vient de te donner une boucle for partant de 11 à 17 avec la variable $i.
Si tu regardes par la suite, tu verras un :
"if($data[date] == '20'.$i){"
=> signifie : si la valeur dans la base de données est égale à 20.$i (donc de 2011 à 2017, d'où le $i de 11 à 17, pour la liste des années) [b]alors
echo '<option value="'.$i.'" selected>20'.$i.'</option>';/b
=> on met en sélection la valeur de la liste déroulante
[b]sinon
echo '<option value="'.$i.'">20'.$i.'</option>';/b
=> on ne met pas en valeur

pour de plus ample informations, je te conseille vivement de faire un tour ici => Lien
Commenter la réponse de nicotontige
0
Merci
Merci pour cette précision nicotontige j'avais fini par le comprendre mais le souci est que la liste reste sur la première valeur
(<option value="anneer___">...</option> )

et pour le site je connaissais, j'en passe quelqu'un au peigne fin depuis quelque mois ^^
Commenter la réponse de prod359
0
Merci
Pourrais-ton avoir ton code ?
histoire de voir si une erreur s'est glissée
Commenter la réponse de nicotontige
0
Merci
Voici une partie :


<tr>
<?php
mysql_connect("localhost", "root", ""); // Connexion à MySQL
mysql_select_db("bdd_at-prefo"); // Sélection de la base

$reponse = mysql_query("SELECT * FROM info_dela_personne WHERE id_stagiaires='".$id."';"); // Requête SQL
while ($data = mysql_fetch_array($reponse))
{
?>
<td width="100%">
Eléments d'identification de la personne

Nom : ,
" id="nom" />,

----

Prénom : ,
" id="prenom" />,

----

<label for="anneeref">Année de référence : </label>,
<select name="anneeref" id="anneeref" >
<option value="anneer___">...</option>
<?php
while ($data = mysql_fetch_assoc($reponse))
{
for($i=11; $i<17; $i++)
{
if($data[date] == '20'.$i){
echo '<option value="'.$i.'" selected>20'.$i.'</option>';
}else{
echo '<option value="'.$i.'">20'.$i.'</option>';
}
}
}
?>
</select>

<?php
}
mysql_close();
?>
</td>
</tr>



et quand je regarde le résultat
sur ma page la dans la liste il y a [...] et pas d'autre choix et la valeur rentrée dans ma base et [2011]
Commenter la réponse de prod359
0
Merci
Si j'effectue cette modification une série d’erreur apparais :/

----------------------
Notice: Use of undefined constant date - assumed 'date' in C:\wamp\www\BDD test\change.php on line 48
----------------------
Notice: Undefined index: date in C:\wamp\www\BDD test\change.php on line 48
----------------------
Notice: Use of undefined constant date - assumed 'date' in C:\wamp\www\BDD test\change.php on line 48
----------------------
....


j'avais déjà testé mais en vain :/
Commenter la réponse de prod359
0
Merci
Yeahhhhh !!!

nicotontige Je te remercie grandement !!! ça fonctionne :p

puis-je me permettre de poser une autre petite question :)


Voila si la liste déroulante n'est pas des années mais par exemple des noms de personne
Commenter la réponse de prod359
0
Merci
cette erreur veut dire qu'il ne connait pas la valeur "date".
Est-ce que tu l'as mis entre guillemets comme je l'ai marqué plus haut ?
Est-ce que c'est bien le nom de ta colonne (majuscule, ...) ?
Commenter la réponse de nicotontige
0
Merci
il y a un petit temps de décalage entre nos réponses :)

je n'avais pas fait attention au guillemets :/
Commenter la réponse de prod359
0
Merci
Merci beaucoup je regarde ça :)
Commenter la réponse de prod359
0
Merci
tu entends quoi par :

echo '<select name="ton_form">';//création du select
name et ton_form

et pour champ_personne c'est le nom de la colonne dans la base ?
Commenter la réponse de prod359
0
Merci
name="ton_form" => tu donnes le nom que tu veux à ton select

et champ_personne est bien le nom de la colonne dans la base où se trouve les personnes
Commenter la réponse de nicotontige

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.