Placer une condition dans un form ?

Placer une condition dans un form ? - PHP - Programmation

Marsh Posté le 22-11-2005 à 08:44:41    

Bonjour, j'ai besoin d'un peu d'aide pour faire afficher un formulaire. Je voux explique :
Si l'utilisateur choisi l'option "Autre" dans une liste de form, on fait afficher deux nouveaux champs dans le même formulaire pour pouvoir rajouter le nom ou le mdp (par exemple).
Le code donne ceci :  
 

Code :
  1. <html>
  2. <body>
  3. <form method="GET" action="chantieradd.php"> // J'ouvre mon formulaire
  4. <select size='1' name="nomouvrage"> // Je defini la liste
  5. // Connexion et requete pour la la BDD
  6. <?
  7. include('config.php');
  8. @mysql_connect($host,$log,$pass);
  9. @mysql_select_db($dbname);
  10. $rep = @mysql_query("select nom from mouvrage" ); 
  11. $resreq=mysql_query($rep) or die ("Eurreur requete" );
  12. // Ici j'affiche dans ma liste tous les noms que je trouve dans ma BDD.
  13. while ($enreg=mysql_fetch_array($resreq))
  14. echo "<option>".$enreg['nom']."</option>";
  15. mysql_close($connexion);
  16.  ?>
  17. // J'affiche également, dans la liste, un choix "Autre"
  18. <option>Autre</option>
  19. // On ferme les balises
  20. </select>
  21. </form>
  22. </body>
  23. </html>


 
Je sais pas trop comment on peut faire pour savoir si l'option "Autre" est selectionné tout en restant dans la page du formulaire.
Si vous pouviez m'expliquez en gros la marche à suivre, thx.


Message édité par 3tnieS le 22-11-2005 à 09:59:01
Reply

Marsh Posté le 22-11-2005 à 08:44:41   

Reply

Marsh Posté le 22-11-2005 à 10:06:58    

Si tu veux afficher deux champs supplémentaires sans recharger la page, c'est du côté de javascript qu'il faut voir, pas php.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 22-11-2005 à 10:13:34    

Ok je vais aller voir du côté du JS, mais cela va pas foutre le bordel dans le code d'inserer du javascript ?  
(Je comprend pas trop comment le JS & le php font pour fonctionner tout les deux étant donné que l'un est coté client et l'autre serveur.)

Reply

Marsh Posté le 22-11-2005 à 10:23:40    

C'est pas bien de faire ça. Il faut que les champs soient tout de suite là. C'est une règle d'usabilité de ne jamais faire apparaître des choses. Beaucoup d'utilisateurs seront déroutés sinon :(
 
 
Je recherche vite-fait des références parlant de ça

Reply

Marsh Posté le 22-11-2005 à 10:38:53    

Merci pour ta recherche FlorentG, mais l'utilisations de ce formulaire ne sera reservé qu'aux admin (cela les déroutera la première fois, mais on peut penser qu'ils prendront l'habitude).
 
Sinon est-il possible de placer les champs (en grisé) dans le formulaire mais les rendre accessible que si ma condition est verfié ? En clair, j'affiche mon formulaire et si "Autre" n'est pas selectionné dans la liste les 2 champs restent grisés (donc inaccessible :p ) dans mon formulaire.

Reply

Marsh Posté le 22-11-2005 à 11:07:14    

Voilà, il faut les mettre en grisé, c'est mieux.
 
Au chargement de la page, un script les met en grisé (propriété disabled je crois). Puis lors de la sélection de l'option "autre", ils s'activent :)

Reply

Marsh Posté le 22-11-2005 à 11:46:14    

Bon j'ai recherché un peu sur le net pour en savoir plus sur les champs grisés:
J'ai trouvé deux manières différentes, il y a bien la propriété "disabled" mais aussi "readonly".  
Je crois que la difference entre les deux est que la propriété "disabled" ne va pas passer l'info à la page après la validation du formulaire, alors que "readonly" le fait même si les champs sont grisés.
Il faut passer par du JS pr activer/desactiver des champs grisés,--> http://javascript.developpez.com/f [...] r#ReadOnly

Reply

Marsh Posté le 22-11-2005 à 15:30:45    

Voila j'ai trouvé comment faire activer/desactiver la proprieté disabled mais cela ne semble marcher qu'avec les checkbox. En effet je n'arrive pas a activer un "disabled" pour une des valeurs de liste du formulaire.
Voici mon code pour activer un champs si on selectionne l'option "Autre", mais bon ca tourne pas  :pt1cable:  
 

Code :
  1. <HTML>
  2. <head>
  3. //Script JS
  4. <script type="text/javascript">
  5. function ChangeStatut(formulaire) {
  6. if(document.formulaire.nomouvrage.value == "Autre" ) {document.formulaire.new.disabled = false }
  7. if(document.formulaire.nomouvrage.value != "Autre" ) {document.formulaire.new.disabled = true }
  8. }
  9. </script>
  10. </head>
  11. <BODY>
  12. //Début du form
  13. <form method="GET" action="listemp.php">
  14. <select size='1' name="nomouvrage" onClick="ChangeStatut(this.form)">
  15. //Connexion de la BDD
  16. <?
  17. include('config.php'); 
  18. @mysql_connect($host,$log,$pass); 
  19. @mysql_select_db($dbname); 
  20. $rep = @mysql_query("select nom from mouvrage" ); 
  21. $resreq=mysql_query($rep) or die ("Eurreur requete" ); 
  22. // Ici j'affiche dans ma liste tous les noms que je trouve dans ma BDD.  
  23. while ($enreg=mysql_fetch_array($resreq)) 
  24.     echo "<option>".$enreg['nom']."</option>"; 
  25.     mysql_close($connexion);
  26.         ?> 
  27. <option>Autre</option>
  28. </select>
  29. // Le champs disabled par defaut que je veux activer si on selectionne la valeur "Autre" dans la liste.
  30. <input type="text" name="new" size="20" value="Bouh" disabled>
  31. <input type="submit" value="Envoyer">
  32. </form>
  33. </body>
  34. </html>


 
Ca faisait un bout de temps que j'avais pas vu du JS donc je suis pas sur que cela tienne la route

Reply

Marsh Posté le 22-11-2005 à 17:15:25    

Bon, j'ai pas eu le courage d'adapter à ton cas, tu me pardonneras :D

Code :
  1. <script language='JavaScript1.4'>
  2. function change(monselect)
  3. {
  4. if (monselect == 2){
  5. document.getElementById('bouh').disabled = '';
  6. document.getElementById('bouh').focus();
  7. } else {
  8. document.getElementById('bouh').disabled = 'disabled';
  9. }
  10. }
  11. </script>
  12. <body>
  13. <form action="" method="get" name="form">
  14. <input name="bouh" id="bouh" type="text" disabled="disabled" />
  15. <select name="kkwet" onChange="change(this.selectedIndex)">
  16. <option value="Saab">Saab</option>
  17. <option value="Volvo">Volvo</option>
  18. <option value="Autre">Autre</option>
  19. </select>
  20. </form>
  21. </body>


 
doit rendre accessible le champ text (et lui filer le focus) quand Autre est choisi et le rendre inaccessible sinon. (je suis pas pro-js non plus, mais ça doit fonctionner)
 
//edit : script un peu plus valide point de vue xhtml


Message édité par naceroth le 22-11-2005 à 17:18:59
Reply

Marsh Posté le 23-11-2005 à 01:13:53    

naceroth j'ai testé ton script en l'adaptent  à mon cas, ca ne fonctionnait pas. Ensuite je l'ai testé sans changer tes données cette fois ci et ca tourné pas non plus.   :sweat:  
Je suis un peu bloqué, je manipule pas trop le javascript.  Qqn peut m'expliquer la démarche en JS ?

Reply

Marsh Posté le 23-11-2005 à 01:13:53   

Reply

Marsh Posté le 23-11-2005 à 02:16:12    

J'emmerde Internet Explorer :D
 
Bref, même code en remplacant le JavaScript1.4 par JavaScript tout court, et monsieur IE devrait arrêter de faire la tête :)

Reply

Marsh Posté le 23-11-2005 à 10:29:50    

Ouais, le probleme venait bien du JavaScript1.4. Je l'aurais jamais trouvé :p. Merci bcp naceroth

Reply

Marsh Posté le 24-11-2005 à 22:36:54    

Voilà, en codant avec une DTD Strict, tu aurait apprit que l'attribut language n'existe plus, qu'on utilise type, et que la valeur pour du JS est text/javascript :

<script type="text/javascript">
...

Reply

Marsh Posté le 25-11-2005 à 01:51:56    

FlorentG a écrit :

Voilà, en codant avec une DTD Strict, tu aurait apprit que l'attribut language n'existe plus, qu'on utilise type, et que la valeur pour du JS est text/javascript :

<script type="text/javascript">
...



 
Comme je case jamais les rares jscript que j'écris directement dans la page html mais plutot en <link>, je ne l'aurais de toutes manières pas remarqué  :hello:

Reply

Marsh Posté le 25-11-2005 à 11:40:09    

Exemple insertion de javascript dans un code php
if (($etape == 4) && ($attention == 1) && ($erreur != 1))
  {
   echo("<script langage=\"javascript\">\r\n" );
   echo("function attention() {\r\n" );
   echo("url = \"index.php?etape=4&vattention=1\";\r\n" );
   echo("window.location.replace(url);\r\n" );
   echo("}\r\n" );
   echo("</script>\r\n" );
}

Reply

Marsh Posté le 28-11-2005 à 20:58:32    

martialus a écrit :

Exemple insertion de javascript dans un code php
if (($etape == 4) && ($attention == 1) && ($erreur != 1))
  {
   echo("<script langage=\"javascript\">\r\n" );
   echo("function attention() {\r\n" );
   echo("url = \"index.php?etape=4&vattention=1\";\r\n" );
   echo("window.location.replace(url);\r\n" );
   echo("}\r\n" );
   echo("</script>\r\n" );
}


On vient de dire que l'attribut language existe plus :o Faudrait penser à lire. Et langage non plus d'ailleurs. Et c'est quoi ces echos tous moches ?

echo '<script type="text/javascript">', "\r\n",
  ...
  '<script>', "\r\n";

Reply

Sujets relatifs:

Leave a Replay

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