Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/11/2007, 15h45   #1
Membre régulier
 
Inscription : février 2007
Messages : 509
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 509
Points : 89
Points : 89
Par défaut Liste déroulante vers variable

Bonjour

je vous explique ; j'ai dans un formulaire une zone de texte,

Code :
1
2
<p>Personne : <input type="text" size="30" name="id_personne" value="<?php echo $id_personne; ?>" /></p>
<p>
dans laquelle la valeur rentré correspand à une variable et je souhaiterais remplacer la zone de texte par une liste déroulante qui sélectionne les champs ; Nom, prénom, centre, grade.... de la table news afin de remplir cette meme variable:
j'avai pensé à ce code qui fonctionne mais il ne récupére pas la valeur sélectionné dans la liste déroulante pour la metre dans la variable $id_personne: (alors mais ou placé $id_personne ? )

Code :
1
2
3
4
5
6
7
8
9
10
11
<form>
   <select>
<?
$SQL = "SELECT * FROM news";
$res = mysql_query($SQL);
while($val=mysql_fetch_array($res)) {
   echo "<option>".$val["nom"]."</option>\n";
}
?>
   </select>
</form>
gastoncs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2007, 16h53   #2
LFC
Nouveau Membre du Club
 
Inscription : février 2003
Messages : 88
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 88
Points : 36
Points : 36
Bonjour,

ça t'affiche quoi quand tu regardes le code source de cette partie ?
Code :
1
2
 
echo "<option>".$val["nom"]."</option>\n";
LFC est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2007, 17h00   #3
Membre régulier
 
Inscription : février 2007
Messages : 509
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 509
Points : 89
Points : 89
et bien ça m'affiche les nom qui sont dans ma table news.
gastoncs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2007, 17h06   #4
LFC
Nouveau Membre du Club
 
Inscription : février 2003
Messages : 88
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 88
Points : 36
Points : 36
J'ai un peu de mal à comprendre où se trouve ta liste déroulante...

Ce que tu veux, c'est qu'il y ait, sur une page, une liste déroulante résultant de ta requête et en dessous un bouton "valider".

En qu'en cliquant sur le bouton "valider", ça t'affiche "vous avez sélectionné Mr X Y ?

C'est ça ou je suis à l'Ouest ??

Sinon, postes le code source de toute ta page pour voir...
LFC est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2007, 17h12   #5
Membre régulier
 
Inscription : février 2007
Messages : 509
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 509
Points : 89
Points : 89
Code :
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
 <? include("haut.php");
 ?>
 
<? $ane = $_GET['choix_annee'];
 
?>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
   <head>
       <title>Rédiger une news</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <style type="text/css">
        h3, form
        {
            text-align:center;
        }
 
        a img { 
  border-width : 0; 
}
        </style>
    </head>
 
    <body>
<h3><?php echo '</a><a href="liste_saisie.php?choix_annee=' . $ane . '">'; ?><img src="retour.png"></a></h3>
 
<center><i><font face="Arial" color="#FFFFFF"><b>Saisisez un résultat pour l'année <? echo $_GET["choix_annee"];?></b></font></i>
</center>
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("test");
if (isset($_GET['modifier_news'])) // Si on demande de modifier une personne
{
    // On protège la variable "modifier_news" pour éviter une faille SQL
    $_GET['modifier_news'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier_news']));
    // On récupère les infos de la correspondante
    $retour = mysql_query('SELECT * FROM sport WHERE id=\'' . $_GET['modifier_news'] . '\'');
    $donnees = mysql_fetch_array($retour);
 
    // On place le centre et le matricule dans des variables simples
    $annee = stripslashes($donnees['annee']);
    $id_personne = stripslashes($donnees['id_personne']);
    $seance = stripslashes($donnees['seance']);
    $epreuve = stripslashes($donnees['epreuve']);
    $score = stripslashes($donnees['score']);
    $date = stripslashes($donnees['date']);
    $id_moniteur = stripslashes($donnees['id_moniteur']);
    $id_sport = $donnees['id']; // Cette variable va servir pour se souvenir que c'est une modification
}
else // C'est qu'on rentre une nouvelle personne
{
    // Les variables $centre et $matricule sont vides, puisque c'est une nouvelle news
    $annee = '';
    $id_personne = '';
    $seance = '';
    $epreuve = '';
    $score = '';
    $date = '';
    $id_moniteur = '';
    $id_sport = 0; // La variable vaut 0, donc on se souviendra que ce n'est pas une modification
}
?>
 
<form action="liste_saisie.php?choix_annee=<? echo $ane; ?>" method="post"> 
<p>
<input type="hidden" size="30" name="annee" value="<?php echo $ane; ?>" /></p>
</p>
<p>Personne : <input type="text" size="30" name="id_personne" value="<?php echo $id_personne; ?>" /></p>
<p>
 
 <select>
<?
$SQL = "SELECT * FROM news ORDER BY nom";
$res = mysql_query($SQL);
while($val=mysql_fetch_array($res)) {
   echo "<option>".($val["nom"]) .' '. ($val["prenom"])."</option>\n";
}
?>
   </select>
 
<p>Séance : <input type="text" size="30" name="seance" value="<?php echo $seance; ?>" /></p>
<p>   
<p>Epreuve : <input type="text" size="30" name="epreuve" value="<?php echo $epreuve; ?>" /></p>
<p>   
<p>Score : <input type="text" size="30" name="score" value="<?php echo $score; ?>" /></p>
<p> 
<p>Date : <input type="text" size="30" name="date" value="<?php echo $date; ?>" /></p>
<p>
<p>Moniteur : <input type="text" size="30" name="id_moniteur" value="<?php echo $id_moniteur; ?>" /></p>
<p>
 
    <input type="hidden" name="id_sport" value="<?php echo $id_sport; ?>" />
    <input type="submit" value="Envoyer" />
</p>
</form>
</body>
</html>
Voila ma page, en faite je veux que la valeur séléctionné dans ma liste déroulante soit stocké dans ($id_personne)

comme on peut le voir avant, il s'agissait d'une (textbox) qui stocké le texte écrit par l'utilisateur dans ($id_personne).

je sais pas évident à me faire comprendre ....
gastoncs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2007, 17h18   #6
LFC
Nouveau Membre du Club
 
Inscription : février 2003
Messages : 88
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 88
Points : 36
Points : 36
Ok, alors déjà, ton formulaire est ok.
Par contre, ta liste déroulante a pas de nom... Donc y'a rien qui passe...

ajoutes donc un nom à ta liste déroulante pour voir...

Code :
1
2
3
4
5
 
<select name="id_personne">
<option>Mr X</opton>
<option>Mme Y</option>
</select>
Et lorque tu valideras ton formulaire, tu auras dans $id_personne la valeur que tu auras choisie... A toi après de savoir la récupérer (via un $_GET['id_personne']

Tiens nous au courant.
LFC est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2007, 17h26   #7
Membre régulier
 
Inscription : février 2007
Messages : 509
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 509
Points : 89
Points : 89
Ok ca marche TIP TOP merçi beaucoup pour ton aide, ca ma beaucoup avancé.

mais juste un dernier petit soucis, lorsque je modifie une entrée (cf; le code de la page ci dessus, et bien la liste déroulante prend à chaque fois la premiére personne et nom celle affiché dans ma requéte)

tu vois ce que je veux dire ?
gastoncs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2007, 17h33   #8
LFC
Nouveau Membre du Club
 
Inscription : février 2003
Messages : 88
Détails du profil
Informations forums :
Inscription : février 2003
Messages : 88
Points : 36
Points : 36
De rien, pour ton dernier problème, il faut que tu teste si la valeur actuelle du champ correspond à $id_personne...
Et si tu veux sélectionner par défaut une entrée dans une liste déroulante, il faut que tu mettes <option selected> ou un truc dans le genre...

Ce qui fait :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
<select>
<?
$id_personne_selectionnee = $_GET['id_personne'];
 
$SQL = "SELECT * FROM news ORDER BY nom";
$res = mysql_query($SQL);
while($val=mysql_fetch_array($res)) {
if ($id_personne_selectionnee == "{ici tu mets selon ce que tu recuperes comme valeurs de ta requete...}")
{
   echo "<option selected>".($val["nom"]) .' '. ($val["prenom"])."</option>\n";
}
else
{
echo "<option>".($val["nom"]) .' '. ($val["prenom"])."</option>\n";
}
}
?>
   </select>
LFC est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2007, 17h56   #9
Membre régulier
 
Inscription : février 2007
Messages : 509
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 509
Points : 89
Points : 89
il faudrait que je rajoute ceci dans la partie du code ou "modifier_news" à été séléctionner si j'ai bien compris donc ici :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("test");
if (isset($_GET['modifier_news'])) // Si on demande de modifier une personne
{
    // On protège la variable "modifier_news" pour éviter une faille SQL
    $_GET['modifier_news'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier_news']));
    // On récupère les infos de la correspondante
    $retour = mysql_query('SELECT * FROM sport WHERE id=\'' . $_GET['modifier_news'] . '\'');
    $donnees = mysql_fetch_array($retour);
 
    // On place le centre et le matricule dans des variables simples
    $annee = stripslashes($donnees['annee']);
    $id_personne = stripslashes($donnees['id_personne']);
dois je remplacer donness et mettre select ?
gastoncs est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h31.


 
 
 
 
Partenaires

Hébergement Web