France Hardware : Forums de discussion
Retrouvez les prix près de chez vous :  
Index du forum | Liste des membres | Liste des groupes | Inscription | F-A-Q | Recherche
Pseudo :    Password :     
22 382 membres enregistrés - 1 874 207 posts - 95 268 topics
Index des forums FH  | Index des forums DegroupNews
      Programmation
           Langages Web
                [PHP/JS]Petit problème avec les formulaires
41 connectés dont 1 modérateur (zesquale)(record : 207 le 05 juin 2007 - 05 h 23)

Vous devez vous connecter pour répondre au topic.
[PHP/JS]Petit problème avec les formulaires

H.Filbert
Newbie Forever

Messages : 212
Inscrit le 19/08/02
Ville : Grenoble
Non connecté
  Posté le 13 décembre 2005 - 22 h 14 m 52 s
Salut à tous ^^

Voilà, j'ai fais une vingtaine d'heures de cours en html/php/javascript et maintenant je dois créer un formulaire avec 2 boutons: "Envoyer" et "Mise à jour"
Le formulaire doit contenir:
- Un champ texte
- Un champ textarea
- Des boites à cocher
- Des boutons radio
- Une boite à selection avec une seule ligne à selectionner

La gestion des boutons est faite avec un script PHP:
Le bouton "Envoyer" permet de stocker les données des champs, séparées par le caractère £, dans un fichier sous forme d'une chaine.
Lorsqu'on clique sur "Mise à jour", le script lit le fichier et assigne les valeurs aux différents champs du formulaires.

Pour cela j'ai crée 2 fichiers: formulaire.html et formulaire.php. J'arrive à sauvegarder et retrouver ce que j'ai mis dans les champs textes mais je suis incapable de sauvegarder les clicks des boutons radio/des boîtes à cocher/boîte à selection.

Ce serai génial si quelqu'un arrive à retrouver mon erreur car je ne vois pas du tous où je fais faux.

Merci d'avance.

Fichier Formulaire.php
    Code php    
 1. 
 2. <?php
 3. if (isset($ecrire) )
 4. {
 5. $fichier = fopen("dj","r+");
 6. $chaine=$champ1."£".$champ2."£".$Radio1."£".$Radio2."£".$Choix1."£".$Choix2."£".$Choix3;
 7. fputs($fichier,$chaine);
 8. 
 9. print <<<FIN
10. <FORM NAME="FormuTotu" METHOD="Post" ACTION ="formulaire10.php" >
11. 	
12. 	<INPUT TYPE="TEXT" NAME="champ1" value=$tab[0] >
13. 	<BR>
14. 	<TEXTAREA NAME="champ2" ROWS="5"  COLS="65">$tab[1]</TEXTAREA>
15. 	<BR>
16. 	<INPUT TYPE="RADIO" NAME="Radio1" VALUE="Radio1" >Radio 1
17. 	<INPUT TYPE="RADIO" NAME="Radio1" VALUE="Radio2" >Radio 2
18. 	<BR>
19. 	<INPUT TYPE="CHECKBOX" NAME="Check1" VALUE ="Choix1">Choix 1
20. 	<INPUT TYPE="CHECKBOX" NAME="Check2" VALUE ="Choix2">Choix 2
21. 	<INPUT TYPE="CHECKBOX" NAME="Check3" VALUE ="Choix3">Choix 3
22. 	<BR>
23. 	<SELECT NAME="un_menu_deroulant">
24.     <BR>
25. 	<OPTION VALUE="Université1" >Université Joseph-Fourier</OPTION>
26.     <OPTION VALUE="Université2" >Université Pierre Mendès</OPTION>
27. 	<OPTION VALUE="Université3" >Université Stendhal</OPTION>
28.     <BR>
29. <INPUT TYPE="submit" name="ecrire" value="ENVOI">
30. <INPUT TYPE="submit" name="maj" value="Mise a jour">
31. <INPUT TYPE="submit" name="sup" value="supprimer">
32. </FORM>
33. FIN;
34. echo "$champ1";
35. echo"<BR>";
36. echo "$champ2";
37. echo"<BR><BR><BR>";
38. echo $chaine;
39. 
40. }
41. 
42. if(isset($maj)) {
43. $ressource = fopen("dj","r+");
44. $ligne = fgets($ressource);
45. $tab = explode("£" , $ligne);
46. for ($i=0; $i<count($tab) ; $i++)
47. {
48. echo $tab[$i]."<BR>";
49. }
50. if (!$tab[4]) { $CH1 = CHECKED;}
51. 
52. 
53. if (!$tab[5]) { $CH2 = CHECKED; }
54. 
55. if (!$tab[6]) { $CH3 = CHECKED; }
56. 
57. 
58. if ($tab[2]) $R1 = CHECKED;
59. else if ($tab[3]) $R2 = CHECKED;
60.    
61. 
62. print <<<FIN
63. <FORM NAME="FormuTotu" METHOD="Post" ACTION ="formulaire10.php" >
64. 	
65. 	<INPUT TYPE="TEXT" NAME="champ1" value=$tab[0] >
66. 	<BR>
67. 	<TEXTAREA NAME="champ2" ROWS="5"  COLS="65">$tab[1]</TEXTAREA>
68. 	<BR>
69. 	<INPUT TYPE="RADIO" NAME="Radio1" VALUE="Radio1" $R1>Radio 1              <!-- tab[2] -->
70. 	<INPUT TYPE="RADIO" NAME="Radio1" VALUE="Radio2" $R2>Radio 2              <!-- tab[3] -->
71. 	<BR>
72. 	<INPUT TYPE="CHECKBOX" NAME="Check1" VALUE ="Choix1" $CH1>Choix 1         <!-- tab[4] -->
73. 	<INPUT TYPE="CHECKBOX" NAME="Check2" VALUE ="Choix2" $CH2>Choix 2         <!-- tab[5] -->
74. 	<INPUT TYPE="CHECKBOX" NAME="Check3" VALUE ="Choix3" $CH3>Choix 3         <!-- tab[6] -->
75. 	<BR>
76. 	<SELECT NAME="un_menu_deroulant">
77.     <BR>
78. 	<OPTION VALUE="Université1" >Université Joseph-Fourier</OPTION>
79.     <OPTION VALUE="Université2" >Université Pierre Mendès</OPTION>
80. 	<OPTION VALUE="Université3" >Université Stendhal</OPTION>
81.     <BR>
82. <INPUT TYPE="submit" name="ecrire" value="ENVOI">
83. <INPUT TYPE="submit" name="maj" value="Mise a jour">
84. <INPUT TYPE="submit" name="sup" value="supprimer">
85. </FORM>
86. FIN;
87. }?>
Fichier Formulaire.html
    Code html    
 1. <body>
 2. <FORM NAME="FormuTotu" METHOD="Post" ACTION ="formulaire10.php" >
 3. 	
 4. 	<INPUT TYPE="TEXT" NAME="champ1" value="" >
 5. 	<BR>
 6. 	<TEXTAREA NAME="champ2" ROWS="5"  COLS="65"></TEXTAREA>
 7. 	<BR>
 8. 	<INPUT TYPE="RADIO" NAME="Radio1" VALUE="Radio1">Radio 1
 9. 	<INPUT TYPE="RADIO" NAME="Radio1" VALUE="Radio2" >Radio 2
10. 	<BR>
11. 	<INPUT TYPE="CHECKBOX" NAME="Check1" VALUE ="Choix1">Choix 1
12. 	<INPUT TYPE="CHECKBOX" NAME="Check2" VALUE ="Choix2">Choix 2
13. 	<INPUT TYPE="CHECKBOX" NAME="Check3" VALUE ="Choix3">Choix 3
14. 	<BR>
15. 	<SELECT NAME="un_menu_deroulant">
16.     <BR>
17. 	<OPTION VALUE="Université1" >Université Joseph-Fourier</OPTION>
18.     <OPTION VALUE="Université2" >Université Pierre Mendès</OPTION>
19. 	<OPTION VALUE="Université3" >Université Stendhal</OPTION>
20. 	<BR>
21. <INPUT TYPE="submit" name="ecrire" value="ENVOI">
22. <INPUT TYPE="submit" name="maj" value="Mise a jour">
23. </FORM>
24. </body>


Message édité 3 fois, la dernière par H.Filbert le 14 décembre 2005 - 07 h 17.

:banble: :bannoi: :banora: :banrou: :banson: :banver: :banble: :bannoi: :banora: :banrou: :banson: :banver:

Erel69
206
(¯`·.__[T3aM.L1b3rTe©]__.·´¯)

Messages : 19 449
Inscrit le 07/11/01
Ville : Lyon
Non connecté
  Posté le 13 décembre 2005 - 23 h 45 m 26 s
Ton problème vient de :

    Code     
1. $CH1 = CHECKED;
En faisant ça, tu assignes à $CH1 la valeur de la constante CHECKED Il faut faire :
    Code     
1. $CH1 = 'checked="checked"';


Et pour le menu déroulant il faut un selected="selected"



Obscurité au-delà du crépuscule, pourpre au-delà du sang qui coule, enfoui dans le flot du temps, en ton haut nom, je jure fidélité à l'obscurité. Que les fous qui se dressent devant nous soient détruits, par le pouvoir que toi et moi possédons...

H.Filbert
Newbie Forever

Messages : 212
Inscrit le 19/08/02
Ville : Grenoble
Non connecté
  Posté le 14 décembre 2005 - 06 h 32 m 29 s
Merci Erel, tous marche ^^

J'ai une autre question mnt:

Si je veux vérifier que les 2 champs texte ne contiennent aucun nombre avec un script javascript, quelles sont les modifications à apporter ? Si jamais ça contient des nombres, j'envoie une alerte autrement j'envoie le formulaire au script php.

Voilà des modifications que j'ai apporté pour que ça marche et pourtant ça ne marche pas :???:

    Code html    
 1. <head> 
 2. 
 3. <SCRIPT language="javascript">
 4. function Verif()
 5.   {
 6. 	var i = 0;
 7. 	var PasDeNombre = true
 8. 	while((i<= document.FormuTotu.champ1.value.lenght)&&PasDeNombre)
 9. 	  {
10. 	    var C = document.FormuTotu.champ1.value.charAt(i)
11. 	    if(C >= '0'  || C <='9')
12. 	      {
13. 	        PasDeNombre = faux
14. 	        alert('Ne pas mettre de nombre(s) dans les champs texte')
15. 	      }
16. 	  }
17.         i = 0;
18. 	while((i<= document.FormuTotu.champ2.value.lenght)&&PasDeNombre)
19. 	  {
20. 	    var C = document.FormuTotu.champ2.value.charAt(i)
21. 	    if(C >= '0'  || C <='9')
22. 	      {
23. 	        PasDeNombre = faux
24. 	        alert('Ne pas mettre de nombre(s) dans les champs texte')
25. 	      }
26. 	  }
27. 	
28. 	if(PasDeNombre)
29. 	  formulaire.submit(); 
30. 	
31.   }
32. </SCRIPT>
33. </head> 
34. 
35. 
36. <body>
37. (...)
38. <INPUT TYPE="submit" name="ecrire" value="ENVOI" onClick="Verif";>
39. (...)
40. </body>









:banble: :bannoi: :banora: :banrou: :banson: :banver: :banble: :bannoi: :banora: :banrou: :banson: :banver:

Erel69
206
(¯`·.__[T3aM.L1b3rTe©]__.·´¯)

Messages : 19 449
Inscrit le 07/11/01
Ville : Lyon
Non connecté
  Posté le 14 décembre 2005 - 10 h 14 m 24 s
Tu as mis ta vérification comme évènement sur un bouton de type submit, donc même si tu as l'alerte le submit sera effectué.

Il faut soit utiliser un button, soit utiliser le onsubmit

De plus, je pense pas que

    Code     
1. formulaire.submit();
fonctionne car le script ne va pas connaitre formulaire Donc tu dois faire :
    Code     
1. <form action="...." method="..." onsubmit="javascript:{ return Verif(); }">
Avec cette méthode, si Verif() renvoie TRUE le formulaire est envoyé, sinon il ne l'est pas. Ou alors tu peux faire avec un button :
    Code     
1. <input type="button" onclick="javascript:{ Verif(this.form); }" />
Et là tu dois faire le submit du formulaire dans ta fonction (c'est pourquoi je passe l'objet formulaire comme paramètre). Et Verif() ressemblerait à :
    Code     
 1. function Verif(f)
 2. {
 3.     var PasDeNombre = true;
 4.     var exp = new RegExp('[0-9]');
 5. 
 6.     if( exp.test(f.champ1.value) )
 7.     {
 8.         PasDeNombre = false;
 9.         alert('...');
10.     }
11. 
12.     {...}
13. 
14.     if( PasDeNombre ) f.submit();
15. }



Obscurité au-delà du crépuscule, pourpre au-delà du sang qui coule, enfoui dans le flot du temps, en ton haut nom, je jure fidélité à l'obscurité. Que les fous qui se dressent devant nous soient détruits, par le pouvoir que toi et moi possédons...

H.Filbert
Newbie Forever

Messages : 212
Inscrit le 19/08/02
Ville : Grenoble
Non connecté
  Posté le 14 décembre 2005 - 13 h 51 m 30 s
le script javascript marche, il m'envoie bien une alerte qd il y a des nombres sinon il m'exécute cette ligne
    Code html    
1.     f.submit();  
Mais mon script php ne marche plus, je crois que cette ligne n'est plus exécuté.
    Code php    
1. if (isset($ecrire) ) 
Voilà les modif que j'ai faite au nivo du formulaire et du bouton:
    Code html    
1. <FORM NAME="FormuTotu" METHOD="Post" ACTION ="formulaire10.php" >
2. (...)
3. <INPUT TYPE="button" name="ecrire" value="ENVOI" OnClick="javascript:{ Verif(this.form); }" >



:banble: :bannoi: :banora: :banrou: :banson: :banver: :banble: :bannoi: :banora: :banrou: :banson: :banver:

Erel69
206
(¯`·.__[T3aM.L1b3rTe©]__.·´¯)

Messages : 19 449
Inscrit le 07/11/01
Ville : Lyon
Non connecté
  Posté le 14 décembre 2005 - 14 h 05 m 45 s
Déjà il faut utiliser $_POST['ecrire'] et non $ecrire, car avec $ecrire cema ne fonctionnera que si register_globals est à on



Obscurité au-delà du crépuscule, pourpre au-delà du sang qui coule, enfoui dans le flot du temps, en ton haut nom, je jure fidélité à l'obscurité. Que les fous qui se dressent devant nous soient détruits, par le pouvoir que toi et moi possédons...

H.Filbert
Newbie Forever

Messages : 212
Inscrit le 19/08/02
Ville : Grenoble
Non connecté
  Posté le 15 décembre 2005 - 18 h 51 m 30 s

ça ne marche pas. J'ai essayé plusieurs façons différentes en regardant des scripts sur internet mais rien. Tant pis, je laisse tomber, de toute manière on n'a pas vraiment le niveau pour faire un truc pareil et j'suis déjà content d'arriver jusque là.

Merci pour tous Erel ^^



:banble: :bannoi: :banora: :banrou: :banson: :banver: :banble: :bannoi: :banora: :banrou: :banson: :banver:

Page genérée en 8.1483 secondes par RahForum 2.0 | Gzip off |  Stats |  Metaforums |  RSS
© 2004 Cerbere Systems.
Prix Matériel Informatique | Informatique Lyon | Informatique Grenoble | Informatique Annecy | Informatique Marseille | Informatique Bordeaux | Forum Informatique
ADSL |Actualité ADSL | e-commerce | Commande Au Volant
Creative Commons
Message Boards and Forums Directory