option d'insertion dans liste déroulante ; blème

option d'insertion dans liste déroulante ; blème - PHP - Programmation

Marsh Posté le 14-12-2005 à 16:48:35    

Bonjour à tous !
 
petit blème de débutant...
 
Dans un form, je crée une liste déroulante pour que le client insère sa ville. Mais j'y insère aussi une ligne "input" si sa ville n'est pas dans ma liste. Je teste avec un "if" pour voir s'il n'a pas sélectionné une ville de ma liste.
 
 
Voici le code que j'a tenté :  
 
<form action="" method="post" >  
  <p>  
    Choisissez votre ville :  
      <select name="choix1" id="choix1">  
      <option value="">Choisissez</option>  
      <option value="ville1">ville1</option>  
      <option value="ville2">ville2</option>  
      <option value="ville3">ville3</option>  
    </select>  
</p>  
  <p>ou entrez le nom de votre ville :  
    <input name="choix2" type="text" id="choix2">  
</p>  
  <p>  
    <input type="submit" name="Submit" value="Envoyer">  
</p>  
  <p>&nbsp; </p>  
  <p>&nbsp;  </p>  
  <?php  
 $rep=$_POST['choix1'];  
 $rep2=$_POST['choix2'];  
 if ($rep=="" )  
 {  
 ?>  
 <input type="hidden" name="ville" value="<? echo $rep2; ?>">  
 <?  
 echo $rep1;  
 echo $rep2;  
 
 }  
 ?>  
</form>  
 
j'ai mis des "échos" pour voir ce qui se passait... mais à première vue, la ligne "input type = "hidden"...." n'est pas prise en compte par la condition "if" du php, et le champ "ville" arrive vierge de tout nom dans ma BD.
 
Bon, j'ai sûrement fait de grosses boulettes, entre l'html et le php, pourtant je me ruine mes nuits sur les bouquins de programmation...  
 
Y-a-til une bonne âme qui tolérerait mon ignorance ? ;-)
 
Amitiés et bonne prog' à tous

Reply

Marsh Posté le 14-12-2005 à 16:48:35   

Reply

Marsh Posté le 15-12-2005 à 00:58:08    

Bonjour Gernouille,
 
Merci de ta réponse, de ton aide et de ta courtoisie (ça fait plaisir d'obtenir une réponse sans se faire incendier parce quon n'est pas très doué ! ) ;-)
 
J'ai essayé ton code, mais ça foire ; je pense qu'il manque une condition à la ligne "isset", un "==" ou un "!=" ou qqch comme ça (remarque je n'y connais rien à la fonction isset, juste la if).
 
J'ai essayé ce code en m'inspirant du tien :

Code :
  1. <form action="" method="POST" name="formtry" id="formtry" >
  2.   <p>
  3.     Choisissez votre ville :
  4.       <select name="choix1" id="choix1" >
  5.       <option value="">Choisissez</option>
  6.       <option value="ville1">ville1</option>
  7.       <option value="ville2">ville2</option>
  8.       <option value="ville3">ville3</option>
  9.       </select>
  10. </p>
  11.   <p>ou entrez le nom de votre ville :
  12.     <input name="choix2" type="text" id="choix2">
  13. </p>
  14.   <p>
  15. </p>
  16.   <p>&nbsp; </p>
  17.   <p>&nbsp;  </p>
  18.   <?php
  19.  
  20.  
  21. $rep1=$_POST['choix1'];
  22. $rep2=$_POST['choix2'];
  23. ?>
  24.   <p>
  25.     <input type="hidden" name="ville" value="<? if ($rep2=="" ) echo $rep1; else echo $rep2; ?>">
  26.  
  27.      <input type="submit" name="Submit" value="Envoyer">
  28.   </p>
  29.   <p>
  30.     <?
  31. $resu=$_POST['ville'];
  32. echo "rÈponse : ";
  33. echo $resu;
  34. ?>
  35.     </p>
  36. </form>


 
Mais là je n'obtiens la bonne valeur dans la variable "ville" qu'aprè avoir cliqué DEUX fois sur submit ; ça fait un peu désordre...
 
Faudrait un truc qui "pré-valide" les valeurs choix1 et choix2 ; j'ai potassé ce soir, peut-être un "OnBLur" ? Mais je connais pas la syntaxe...
 
merci, amitiés

Reply

Marsh Posté le 15-12-2005 à 13:09:13    

Bonjour Gernouille
J'ai rerentré ton code, et ça fonctionne, mais en fait à moitié ; ce n'est qu'après avoir submité deux fois que la bonne valeur est injectée. Je l'ai testé en local et en distant.
 
Si j'essaie de faire ça, c'est pour que le client, s'il ne trouve pas le nom de sa ville dans ma liste, puisse rentrer le nom de sa propre ville.
est-ce qu'on peut insérer un "input" dans une liste déroulante, à ton avis ?
 
Merci, amitiés

Reply

Marsh Posté le 15-12-2005 à 13:28:59    

tristus a écrit :

Bonjour Gernouille
J'ai rerentré ton code, et ça fonctionne, mais en fait à moitié ; ce n'est qu'après avoir submité deux fois que la bonne valeur est injectée. Je l'ai testé en local et en distant.
 
Si j'essaie de faire ça, c'est pour que le client, s'il ne trouve pas le nom de sa ville dans ma liste, puisse rentrer le nom de sa propre ville.
est-ce qu'on peut insérer un "input" dans une liste déroulante, à ton avis ?
 
Merci, amitiés


Oui mais là c'est du javascript telle que tu le dis mais cela ne servira à rien. Autant faire un champ text qui quand il le valide il l'insere dans ta base (je pense) et au final sera listé dans ton menu.

Reply

Marsh Posté le 15-12-2005 à 15:05:50    

dac avec Berceker,  
soit il le visiteur choisi dans la liste, soit il ne trouve pas dans la liste et rentre la ville dans le champs input text.
 
quand tu traitera le formulaire à sa réception, si il a fait la saisi en manuel, ben tu insere la nouvelle ville dans la BDD, comme ça le prochain visiteur de la meme ville n'aura pas besoin de se taper la saisie (et biensur tu vérifie avant d'insérer, paske un visiteur polio des yeux peut avoir saisie une ville qui était pourtant présente dans la liste ;))


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed