voila mon form envoie des donnees dans une base .
j aimerai savoir si c est possible de vider le formulaire apres envoi pour eviter que les donnees soient renvoyees une deuxieme fois quand on clique sur le bouton actualiser du navigateur.
merci
Version imprimable
voila mon form envoie des donnees dans une base .
j aimerai savoir si c est possible de vider le formulaire apres envoi pour eviter que les donnees soient renvoyees une deuxieme fois quand on clique sur le bouton actualiser du navigateur.
merci
:idea:Code:document.forms[0].reset()
Je pense que la technique pour empecher l'actualisation ne se fait pas au niveau client mais plutot au niveau serveur.
Si tu utilise PHP ... j'ai une solution.
oui j utilise PHP pout renseigner la base
est ce que je peux avoir ta solution?
meerci
ben niveau javascript il suffit de vider le formulaire et de masque le bouton submit ...
comment tu veux faire cela
parce que moi je l ai fait mais cela ne fonctionne pas du tout
parce que j envoie les donnees sur la base
j aimerai bien que tu m explique comment tu t y prends pour ça?
Au niveau PHP,
tu créée un champ caché dans ton formulaire, qur tu initialise avec le datetime du moment.
Puis dans ton php qui receptionne le formulaire tu fais :Code:<input type="hidden" name="verif_post" value="<? time(); ?>" />
Code:
1
2
3
4 session_start(); if($_SESSION['verif_post'] == $_POST['verif_post']) die('Rafraichissement interdit'; $_SESSION['verif_post'] = $_POST['verif_post'];
Don si ta page de de validation de formulaire est actualisée ... il y aura une erreur de rafraichissement.
fais voir la tête de ton form ...
en simplifié (pas 18000 lignes ...)
voici leCode:
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 <html> <head> <script language="javascript" type="text/javascript" src="controle.js"></script> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><style type="text/css"> <!-- body,td,th { color: #993333; font-weight: bold; font-family: Verdana, Arial, Helvetica, sans-serif; } body { background-color: #FFCC33; } --> </style></head> <body> <form id="identifiant" action="index.php" method="POST" align="center" valign="middle" onSubmit="return controle();"> <table align="center" bordercolor="#FF6633"> <tr><td>Identifiant</td><td> <input name="login" type="text" maxlength="40"> </td> </tr> <tr><td>Mot de Passe</td><td> <input type="password" name="mpasse" maxlength="32" ></td></tr> <tr><td>E-Mail</td><td> <input name="email" type="text" maxlength="50"></td></tr> <tr><td><input type="submit" name="JesuisLa" value="Envoyer"></td><td> <input type="reset" name="saluton" value="Annuler"></td></tr> </table> </form> </body> </html>
j essai ton code AurelBUD
Et je te dis ce qu il en est .
et tu le rend visible à nouveau si la focntin test sur le onsubmit te retourne false...Code:<input type="submit" id="JesuisLa" value="Envoyer" onclick='this.style.visibility='hidden' >
et dans le onload de la page
ça devrait faire l'affaire ...Code:<body onload="document.forms[0].reset()" >
SpaceFrog ton code ne fonctionne pas .
il en est de meme pour AurtelBUD
Montre comment tu l'as implémenté parce que chez moi ca fonctionne ...
AurelBUD ton second je l'inserer où?
parce que j ai essaye trois niveau differents et c est toujours un parse error
Oui j ai oublié une parenthèse à la fin du die ...
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 <?php // connection a la base en local include ("../Configuration/connexionIdentifiant.php"); if (isset($_POST['login']) && isset($_POST['mpasse']) && isset($_POST['email']) ) { $login= $_POST['login']; $mpasse= $_POST['mpasse']; $email= $_POST['email']; if (empty($login) || empty($mpasse) || empty($email)) { echo "Veillez remplir les champs s'il vous plait";} else{ mysql_query(" INSERT INTO identifiant SET login='$login',mpasse='$mpasse',email='$email'"); //header("Location: http://127.0.0.1/controle/index.php"); //exit; echo mysql_error(); } } session_start(); if($_SESSION['verif_post'] == $_POST['verif_post']) die('Rafraichissement interdit'; $_SESSION['verif_post'] = $_POST['verif_post']; $resultat=mysql_query("SELECT DISTINCT login,mpasse,email FROM identifiant ORDER BY login"); echo mysql_error(); mysql_close(); ?> <html> <head> <style type="text/css"> <!-- body,td,th { font-family: Verdana, Arial, Helvetica, sans-serif; color: #993333; font-weight: bold; font-size: 10px; } body { background-color: #FFCC66; } .Style1 {color: #CC0000} --> </style> <title>Liste des Utilisateurs</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script language="text/javascript" src="controle.js" ></script> <!-- <meta http-equiv="refresh" content="2; url=http://127.0.0.1/Amis/contacts.php"> --> </head> <body onLoad="document.forms[0].reset()"> <a href="formIdentifiant.php">Ajouter un Utilisateur</a> <table width="334" height="37" border="1" align="center" bordercolor="#FF0066" bgcolor="#FFFFFF"> <tr bgcolor="#FFFFFF"> <td width="30" height="31"><span class="Style1">Login</span></td> <td width="47"><span class="Style1">Mot de Passe</span></td> <td width="33"><span class="Style1">E-Mail</span></td> <?php while ($ligne =mysql_fetch_array($resultat)) { $login = $ligne["login"]; $mpasse = $ligne["mpasse"]; $email = $ligne["email"]; echo "<tr>"; echo "<td>".$login."</td>"; echo "<td>".$mpasse."</td>"; echo "<td><a href='<?php echo $email; ?>'> Ecrire à $login<td width='196'></td>"; echo "</tr>"; } ?> </table> <a href="form_Identifiant.thml">Ajout un Utilisateur</a> </body> </html> <?php mysql_free_result($resultat); ?>
Il manque toujours la parenthes à la fin du die !!!
super man
La je te dis Chapeau
je ne sais pas si tu fan de bob marley ou pas
YEAH RASTAFARI
je crois que je me suis emflamme un peu vite mais ça ne fonctionne toujours pas .
c est quand je suis retourne sur la gestion de base données il m a enregistrer dix fois le meme tuple
mais comme dans ma requete de SELECT j ai mis distinct je ne pouvais pas voir ça .
en fait il remplit la base mais cela ne se voit pas sur la page qu on renvoie.
je pense que je vais rester sur mon ancien code qui consiste a faire un header("Location: nom_du_site/nom_de_la_page.php");
merci en tout cas d avoir essayer c etait sympa de votre part .
slaut et bonne fin de matinee
Oui c est normal que ton code ne fonctionne pas car tu fais ta requete INSERT avant de tester ta variable POST.
Le test est la premiere chose que tu dois faire. Avant meme la connexion à la base.
je me souviens t avoir dit plus haut que je l'ai essaye au debut au mileu et a la fin du code mais rien .
montre moi la ou je dois le mettre comme tu as le code sous les yeux .
a tout
oui mais c etait avant que tu corriges le pb de parenthese ...
Pour info, le die permet d'arreter le code.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 <?php session_start(); if($_SESSION['verif_post'] == $_POST['verif_post']) die('Rafraichissement interdit'); $_SESSION['verif_post'] = $_POST['verif_post']; // connection a la base en local include ("../Configuration/connexionIdentifiant.php"); if (isset($_POST['login']) && isset($_POST['mpasse']) && isset($_POST['email']) ) { $login= $_POST['login']; $mpasse= $_POST['mpasse']; $email= $_POST['email']; if (empty($login) || empty($mpasse) || empty($email)) { echo "Veillez remplir les champs s'il vous plait";} else{ mysql_query(" INSERT INTO identifiant SET login='$login',mpasse='$mpasse',email='$email'"); //header("Location: http://127.0.0.1/controle/index.php"); //exit; echo mysql_error(); } } $resultat=mysql_query("SELECT DISTINCT login,mpasse,email FROM identifiant ORDER BY login"); echo mysql_error(); mysql_close(); ?> <html> <head> <style type="text/css"> <!-- body,td,th { font-family: Verdana, Arial, Helvetica, sans-serif; color: #993333; font-weight: bold; font-size: 10px; } body { background-color: #FFCC66; } .Style1 {color: #CC0000} --> </style> <title>Liste des Utilisateurs</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <script language="text/javascript" src="controle.js" ></script> <!-- <meta http-equiv="refresh" content="2; url=http://127.0.0.1/Amis/contacts.php"> --> </head> <body onLoad="document.forms[0].reset()"> <a href="formIdentifiant.php">Ajouter un Utilisateur</a> <table width="334" height="37" border="1" align="center" bordercolor="#FF0066" bgcolor="#FFFFFF"> <tr bgcolor="#FFFFFF"> <td width="30" height="31"><span class="Style1">Login</span></td> <td width="47"><span class="Style1">Mot de Passe</span></td> <td width="33"><span class="Style1">E-Mail</span></td> <?php while ($ligne =mysql_fetch_array($resultat)) { $login = $ligne["login"]; $mpasse = $ligne["mpasse"]; $email = $ligne["email"]; echo "<tr>"; echo "<td>".$login."</td>"; echo "<td>".$mpasse."</td>"; echo "<td><a href='<?php echo $email; ?>'> Ecrire à $login<td width='196'></td>"; echo "</tr>"; } ?> </table> <a href="form_Identifiant.thml">Ajout un Utilisateur</a> </body> </html> <?php mysql_free_result($resultat); ?>
voici mon erreur
Code:Notice: Undefined index: verif_post in d:\developpement\developpmentweb\php\exosperso\controle\teste\index.php on line 3
Remplacer le debut par :
Code:
1
2
3
4
5 session_start(); if(!isset($_POST['verif_post'])) die("Page non valide"); if(isset($_SESSION['verif_post']) && $_SESSION['verif_post'] == $_POST['verif_post']) die('Rafraichissement interdit'); $_SESSION['verif_post'] = $_POST['verif_post'];
sinon je viens de penser à un truc...
dans le onsubmit juste après verification des champs, il te suffit de tout basculer dans des champs hidden et de vider les champs de saisie ...
comment parce que quand tu verifie les champs en envoie c est pas toujours evident avec les merdes que les gens peuvent mettre de dans.
ou tu veux que je cree une autre fonction de ramasse miette?
tu as une focntion de verification que tu lances dans le onsubmit de ton form ...
si les champs sont corrects et avant de faire un return true, tu bascules tous les contenus des champs dans des champs hidden et tu vide les champs de saisie.
cote php tu ne récupères que les champs hidden ...
Pourquoi tu ne mets jamais de code .
ce que tu expliques tu le mets sur le site tout le monde en profitera.
j ai du mal a y croire mais ta sitation te va bien.
j aimerai au moins tu me mets le code comme il y a mon code sur le post .
excuses mais je trouve que tu es un peu avare en code
meme si a cote que tu es genial parce que je vois tes post sur ce site souvent.
sans plus
étant assez pris je n'ai pas beaucoup de temps pour mettre du code partout ...
Mais à la demande générale voici un petit exemple :
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 <script type='text/javascript'> function verif(formulaire){ if(formulaire.input_1.value.length>0 && formulaire.input_2.value.length>0){ formulaire.hidden_1.value=formulaire.input_1.value; formulaire.hidden_2.value=formulaire.input_2.value; formulaire.input_1.value=''; formulaire.input_2.value=''; return true; } else {alert ('saisie douteuse') return false;} } </script> </head> <body onload="document.forms['myform'].reset()"> <form name="myform" action="javascript:alert('j\'envoie '+ document.forms['myform'].hidden_1.value + ' et ' + document.forms['myform'].hidden_2.value)" onsubmit="return verif(document.forms['myform'])"> <input name="input_1" type="text" /> <input name="hidden_1" type="hidden" /> <input name="input_2" type="text" /> <input name="hidden_2" type="hidden" /> <input name="go" type="submit" value="envoyer" /> </form> </body> </html>
Génial ça je ne savais pas qu on pouvait proceder de la sorte
merci pour se petit bout de code
avec un tant soit peu d'imagination on peut faire beaucoup de choses avec javascript ... :wink: