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 31/08/2007, 14h54   #1
Membre à l'essai
 
Avatar de bogsy15
 
Inscription : mai 2006
Messages : 147
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 147
Points : 24
Points : 24
Par défaut Réaffichage menu déroulant après validation

Bonjour tout le monde,

J'ai un menu déroulant qui est rempli grâce à une lecture dans une table de la base de données. Ceci fontionne très bien.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
<select name="select_auto2" style="width:167px; font-weight:bold;">
<?php
  include('Include/connexion.php');
  $sql = "SELECT distinct automate FROM automate ORDER BY automate"; 
  $resultat = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
  while ( $ligne = mysql_fetch_array($resultat) ) 
  {  
    $cmt = $ligne['automate']; 
    echo '<option value="'.$cmt.'" >'.$cmt.'</option>'; 
  } 
  include('Include/connexion.php');
?>
</select>
Maintenant ce que je voudrai, c'est qu'après la validation de mon formulaire la valeur sélectionnée dans le menu déroulant reste sélectionnée.
J'ai fait pas mal de recherche mais sans résultats jusqu'à présent.

Voici ce que j'ai essayé de faire :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<select name="select_auto" style="width:167px; font-weight:bold;">
<?php
include('Include/connexion.php');
$sql = "SELECT distinct automate FROM automate ORDER BY automate"; 
$resultat = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
while ( $ligne = mysql_fetch_row($resultat) ) 
{  
  if($ligne[0]=='$selec') 
    echo "<option value=".$ligne[0]." selected>".$ligne[0];
  else 
    echo "<option value=".$ligne[0]." >".$ligne[0]; 
} 
include('Include/connexion.php');
?>
</select>
La variable '$selec' correspond à la valeur sélectionnée et envoyée par le formulaire.

Pouvez-vous m'aider à résoudre mon problème ?
Merci
bogsy15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2007, 15h00   #2
Membre actif
 
Homme
Développeur Web
Inscription : juillet 2007
Messages : 194
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juillet 2007
Messages : 194
Points : 189
Points : 189
Citation:
if($ligne[0]=='$selec')
retire les simple quote ça marchera mieux.
de la façon que tu l'a acrit il évalue $ligne avec la chaine de caractère $selec
metfan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2007, 20h22   #3
Membre à l'essai
 
Avatar de bogsy15
 
Inscription : mai 2006
Messages : 147
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 147
Points : 24
Points : 24
Désolé pour le retard, j'ai enlevé les simples quotes comme tu as dis mais ça ne marche toujours pas.
bogsy15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2007, 22h23   #4
jnore
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Bonsoir,
Mets nous plus de code, notamment les paramètres de ton formulaire ainsi que la récupération de ta variable $selec.
  Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2007, 23h14   #5
Membre à l'essai
 
Avatar de bogsy15
 
Inscription : mai 2006
Messages : 147
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 147
Points : 24
Points : 24
Le formulaire dans lequel se trouve le bout de code du premier post :
Code :
<form method="POST" action="index.php?page=Recherche/recherche&sel=$auto_select" name="frm"></form>
Au moment de la validation du formulaire :
Code :
1
2
3
4
if(isset($_POST['select_auto']))      
	$auto_select=$_POST['select_auto'];
else      
	$auto_select="";
En haut de la page :
Code :
1
2
3
4
if(isset($_GET['sel']))
{      
	$selec=$_GET['sel']; 
}
bogsy15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2007, 09h28   #6
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<select name="select_auto" style="width:167px; font-weight:bold;">
<?php
include('Include/connexion.php');
$sql = "SELECT distinct automate FROM automate ORDER BY automate"; 
$resultat = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
while ( $ligne = mysql_fetch_row($resultat) ) 
{  
  if($ligne[0]==$selec) 
    echo "<option value=".$ligne[0]." selected=\"selected\">".$ligne[0]."</option>";
  else 
    echo "<option value=".$ligne[0]." >".$ligne[0]."</option>"; 
} 
include('Include/connexion.php');
?>
</select>
j'ai refermé les options qui n'étaient pas terminées, enlevé les quote, dis nous si ca marche. Si non, il faut que tu essaies d'afficher $selec pour vérifier ce qu'il y a dedans.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2007, 09h54   #7
Membre à l'essai
 
Avatar de bogsy15
 
Inscription : mai 2006
Messages : 147
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 147
Points : 24
Points : 24
ca ne marche toujours pas. Je viens de remarquer ceci dans l'adresse :
Code :
http://localhost/fiche_de_vie_automate/index.php?page=Recherche/recherche&sel=$automate_select
Mais je ne comprend pas pourquoi j'ai cela. Après la validation du formulaire, je me sert de cette variable dans des requêtes. Le problème viendrai du passage du paramètre ?
bogsy15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2007, 09h58   #8
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
parce que tu es surement hors balise php quand tu fais cette adresse et la variable n'est pas interprétée.
Code :
<form method="POST" action="index.php?page=Recherche/recherche&sel=<?php echo $auto_select; ?>" name="frm"></form>
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2007, 12h23   #9
Membre à l'essai
 
Avatar de bogsy15
 
Inscription : mai 2006
Messages : 147
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 147
Points : 24
Points : 24
L'adresse est devenue bizarre :
Code :
http://localhost/fiche_de_vie_automate/index.php?page=Recherche/recherche&sel=<br%20/><b>Notice</b>:%20%20Undefined%20variable:%20%20auto_select%20in%20<b>c:\program%20files\easyphp1-8\www\fiche_de_vie_automate\Recherche\recherche.php</b>%20on%20line%20<b>37</b><br%20/>
Et j'ai l'impression qu'en haut de la page il ne rentre pas dans la boucle if car rien de s'affiche
Code :
1
2
3
4
5
6
7
<?php 
if(isset($_POST['sel']))
{      
	$selec=$_POST['sel']; 
	echo 'valeur'.$selec;
}
?>
bogsy15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2007, 12h57   #10
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
J'ai raté mon copier coller mais l'erreur etait explicite. Ca te disait que la variable n'existait pas, tu aurais pu la corriger facilement
Code :
<form method="POST" action="index.php?page=Recherche/recherche&sel=<?php echo $automate_select; ?>" name="frm"></form>
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2007, 13h40   #11
Membre à l'essai
 
Avatar de bogsy15
 
Inscription : mai 2006
Messages : 147
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 147
Points : 24
Points : 24
ca ne change rien de toute façon, ca donne toujours une adresse bizarre. Au nouveau chargement de ma page, le programme n'arrive pas a récupérer la valeur qui est dans l'adresse
bogsy15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2007, 13h44   #12
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Code :
1
2
3
4
5
if(isset($_GET['sel']))
{      
	$selec=$_GET['sel']; 
	echo 'valeur'.$selec;
}
sera mieux, les paramètres passés dans l'url sont récupérés en GET et pas en POST
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2007, 14h39   #13
Membre à l'essai
 
Avatar de bogsy15
 
Inscription : mai 2006
Messages : 147
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 147
Points : 24
Points : 24
ca ne marche pas toujours. Il met un Undefined variable: auto_select dans le action du formulaire

P.S : c'est bien la variable $auto_select que je me sert dans ma page
bogsy15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2007, 14h41   #14
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Tu m'as perdu en route la.
Peux-tu remettre le code exact des deux fichiers (s'il y en a deux) ?
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2007, 15h39   #15
Membre à l'essai
 
Avatar de bogsy15
 
Inscription : mai 2006
Messages : 147
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 147
Points : 24
Points : 24
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
<?php 
if(isset($_GET['sel']))
{      
    $selec=$_GET['sel']; 
    echo 'valeur'.$selec;
}
?>
 
<form method="POST" action="index.php?page=Recherche/recherche&sel=<?php echo $automate_select; ?>" name="frm">
  <table style="font-family:'Times New Roman', Times, serif;">    
    <tr>
      <td width="165">Sélection automate</td>
      <td width="190"><select name="select_auto" style="width:225px; font-weight:bold;">
        <?php
          include('Include/connexion.php');
          $sql = "SELECT distinct automate 
                    FROM automate ORDER BY automate"; 
                    $resultat = mysql_query($sql) or die('Erreur SQL  !'.$sql.'<br>'.mysql_error());
                    while ( $ligne = mysql_fetch_row($resultat) ) 
                    {  
                       if($ligne[0]==$selec) 
                          echo "<option value=".$ligne[0]."                             selected=\"selected\">".$ligne[0]."</option>";
                       else 
                          echo "<option value=".$ligne[0]." >".$ligne[0]."</option>"; 
                    } 
          include('Include/deconnexion.php');
        ?>
</select></td>
    </tr>  
      <td><input type="submit" value="Rechercher" name="rechercher"></td>
    </tr>                     
  </table>                  
</form>
 
if (isset($_POST['rechercher']))
{
    if(isset($_POST['select_auto']))      
        $auto_select=$_POST['select_auto'];
    else      
        $auto_select="";  
}
bogsy15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2007, 15h50   #16
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
JE comprends pas du tout ce que ton code fait ou est censé faire là. Pourquoi est ce que tu passes la valeur sélectionnée en GET ? Tu n'as aucune idée de la valeur qui sera choisie par l'utilisateur a l'avance donc j'avoue que je m'y perds.

Je ferai plutot un truc comme ca:
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
<?php 
if (isset($_POST['select_auto']))
	$auto_select=$_POST['select_auto'];
else      
	$auto_select="";  
?>
<form method="POST" action="index.php?page=Recherche/recherche" name="frm">
  <table style="font-family:'Times New Roman', Times, serif;">    
    <tr>
      <td width="165">Sélection automate</td>
      <td width="190"><select name="select_auto" style="width:225px; font-weight:bold;">
        <?php
          include('Include/connexion.php');
          $sql = "SELECT distinct automate 
                    FROM automate ORDER BY automate"; 
                    $resultat = mysql_query($sql) or die('Erreur SQL  !'.$sql.'<br>'.mysql_error());
                    while ( $ligne = mysql_fetch_row($resultat) ) 
                    {  
                       if($ligne[0]==$auto_select) 
                          echo "<option value=".$ligne[0]."                             selected=\"selected\">".$ligne[0]."</option>";
                       else 
                          echo "<option value=".$ligne[0]." >".$ligne[0]."</option>"; 
                    } 
          include('Include/deconnexion.php');
        ?>
</select></td>
    </tr>  
      <td><input type="submit" value="Rechercher" name="rechercher"></td>
    </tr>                     
  </table>                  
</form>
J'ai completement retiré de l'url d'action du formulaire le &sel machin parce que deja $automate_select n'existe pas et en plus je comprends pas du tout ce que ca vient faire la
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/09/2007, 21h05   #17
Membre à l'essai
 
Avatar de bogsy15
 
Inscription : mai 2006
Messages : 147
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 147
Points : 24
Points : 24
Merci ca marche. Je crois que je me suis compliqué la vie.
Par contre j'ai l'impression que ca ne marche pas quand dans la variable $auto_select il y a un espace.
As-tu une idée pour résoudre ce problème ?
bogsy15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2007, 09h15   #18
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Oui le probleme vient du fait que tu ne mets pas de " " autour de la valeur
ta balise devrait ressembler a ca
Code :
<option value="ma valeur"> valeur affichée </option>
donc il faut ca
Code :
1
2
3
4
5
6
7
while ( $ligne = mysql_fetch_row($resultat) ) 
{  
if($ligne[0]==$auto_select) 
     echo "<option value=\"".$ligne[0]."\"                             selected=\"selected\">".$ligne[0]."</option>";
else 
      echo "<option value=\"".$ligne[0]."\" >".$ligne[0]."</option>"; 
}
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2007, 09h22   #19
Membre à l'essai
 
Avatar de bogsy15
 
Inscription : mai 2006
Messages : 147
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 147
Points : 24
Points : 24
merci beaucoup, ca marche niquel
bogsy15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h56.


 
 
 
 
Partenaires

Hébergement Web