Pb dans la vérification du formulaire
dams
-
Laurent G Messages postés 35 Statut Membre -
Laurent G Messages postés 35 Statut Membre -
bonjour,
je suis en train de faire un livre d'or et j'aimerais que lorsque tous les champs ne sont pas remplis, la page de formulaire se réouvre et indique les champs oubliés.
j'ai du mal dans la conception de la vérification.
Pouvez-vous m'aider svp
je suis en train de faire un livre d'or et j'aimerais que lorsque tous les champs ne sont pas remplis, la page de formulaire se réouvre et indique les champs oubliés.
j'ai du mal dans la conception de la vérification.
Pouvez-vous m'aider svp
A voir également:
- Pb dans la vérification du formulaire
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook compte désactivé - Guide
- Formulaire de reclamation instagram - Guide
- Confirmer le nouvel envoi du formulaire err_cache_miss - Forum Google Chrome
- Verification windows 11 - Guide
15 réponses
il te faut faire une fonction (soit php soit javascript) qui est appelée lorsque l'utilisateur clique sur submit.
je te conseille le javascript.
Si tu veux des que j'ai 5 minutes je te donnes le code a suivre.
je te conseille le javascript.
Si tu veux des que j'ai 5 minutes je te donnes le code a suivre.
merci pour ton aide, cependant je préfèrerais en php.
dans le style :
if (!empty($pseudo) && !empty($email) && !empty($message)) {
echo '<noscript>Merci de remplir tout les champs.
} else {
$sql = "INSERT INTO livre (numero_message, pseudo, email, message) VALUES('','$pseudo','$email','$message')";
En fait, c'est ma 1ere partie du if qui plantouille.
Quand je clique sur le submit, il m'envoie la page de la requête. En cas d'erreur, j'aimerais qu'il revienne sur la page du formulaire.
Ou alors, je vais peut-être juste dire :
-Votre message n'as pas été pris en compte car vous n'avez pas tout rempli + un lien de retour.
Mais ça obligera la personne a retaper ce qu'elle avait mis en 1ere intention.
dans le style :
if (!empty($pseudo) && !empty($email) && !empty($message)) {
echo '<noscript>Merci de remplir tout les champs.
} else {
$sql = "INSERT INTO livre (numero_message, pseudo, email, message) VALUES('','$pseudo','$email','$message')";
En fait, c'est ma 1ere partie du if qui plantouille.
Quand je clique sur le submit, il m'envoie la page de la requête. En cas d'erreur, j'aimerais qu'il revienne sur la page du formulaire.
Ou alors, je vais peut-être juste dire :
-Votre message n'as pas été pris en compte car vous n'avez pas tout rempli + un lien de retour.
Mais ça obligera la personne a retaper ce qu'elle avait mis en 1ere intention.
c pour ça qu'avec du javascript c mieux :
lorsque l'utilisateur clique sur le bouton submit :
tu exécute ta fonction javascript, s'il y a une erreur => popup erreur, le client la ferme et n'a pas à reécrire tous les champs.
en revanche, s'il n'y a pas d'erreur, du exécute un submit sur ton formulaire
lorsque l'utilisateur clique sur le bouton submit :
tu exécute ta fonction javascript, s'il y a une erreur => popup erreur, le client la ferme et n'a pas à reécrire tous les champs.
en revanche, s'il n'y a pas d'erreur, du exécute un submit sur ton formulaire
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
surtout si tu a un problème n'hésite pas à me le faire savoir, j'ai déjà codé ce genre de chose, je devrai m'en souvenir...
bonne chance
a plus.
bonne chance
a plus.
en fait, ne connaissant que très peu le javascript, j'ai un peu de mal à le faire, quel évènement utiliser?
mettons que la fonction s'appelle VerifChampsVide.
soit avant la balise <html>, soit apès la balise </html>
tu mets :
nom de ton formulaire = nomForm (il te faudra le remplacer nomForm par le vrai nom de ton formulaire)
nom de tes champs = nomChamps(idem)
Si tu n'y arrive pas, prévient moi
soit avant la balise <html>, soit apès la balise </html>
tu mets :
nom de ton formulaire = nomForm (il te faudra le remplacer nomForm par le vrai nom de ton formulaire)
nom de tes champs = nomChamps(idem)
<script langage="javascript">
function VerifChampsVide( )
{
if (document.nomForm.nomChamps == "")
alert("Le champ nomChamps est vide. Veuillez le remplir");
else
document.nomForm.submit( );
}
</script>
Si tu n'y arrive pas, prévient moi
en fait, j'ai réussi à créer le pop-up avec la fonction alert.
cependant, j'ai un petit soucis :
j'ai mon formulaire, quand je clique sur submit, j'ai demandé d'ouvire une autre page pour la requète sql d'insertion, et c'est aussi à ce moment qu'il vérifie si les champs sont vides ou pas.
S'ils sont vides, le pop-up s'ouvre, mais je suis sur l'autre page :'(
cependant, j'ai un petit soucis :
j'ai mon formulaire, quand je clique sur submit, j'ai demandé d'ouvire une autre page pour la requète sql d'insertion, et c'est aussi à ce moment qu'il vérifie si les champs sont vides ou pas.
S'ils sont vides, le pop-up s'ouvre, mais je suis sur l'autre page :'(
J'ai oublié de te préciser une chose :
le bouton qui appelle la fonction de doit plus etre de type submit mais de type button.
car le submit est fait maintenant par la fonction.
le bouton qui appelle la fonction de doit plus etre de type submit mais de type button.
car le submit est fait maintenant par la fonction.
en fait, j'ai voulu mettre un simple truc :
<?
if (empty($_POST['pseudo'])) {
echo'<script language="JavaScript">';
echo'alert(\'formulaire imcomplet.\')';
echo'</script></body></html>';
}
?>
tout simple.
Le pb, c'est que ça fonctionne quand j'appuie sur envoyer, mais ça fonctionne aussi quand le formulaire apparait. Comment contrer ce pb? c'est-à-dire vérifier le if que lorsque que j'appuis sur envoyer?
<?
if (empty($_POST['pseudo'])) {
echo'<script language="JavaScript">';
echo'alert(\'formulaire imcomplet.\')';
echo'</script></body></html>';
}
?>
tout simple.
Le pb, c'est que ça fonctionne quand j'appuie sur envoyer, mais ça fonctionne aussi quand le formulaire apparait. Comment contrer ce pb? c'est-à-dire vérifier le if que lorsque que j'appuis sur envoyer?
il faut que dans ton formulaire tu mette :
de sorte que lorsque tu fait le submit la variable verif vale 1.
Dans ce cas la, tu fait ton test :
<input type=hidden name=verif value=1>
de sorte que lorsque tu fait le submit la variable verif vale 1.
Dans ce cas la, tu fait ton test :
<?
if (verif=1)
{
if (empty($_POST['pseudo'])) {
echo'<script language="JavaScript">';
echo'alert(\'formulaire imcomplet.\')';
echo'</script></body></html>';
}
}
tu risque d'avoir une erreur lorsque tu arrive pour la première fois sur ta page car il ne connait pas la variable verif.
si c le cas, passe la variable à la page (mets verif à 0 pour ne pas passer dans le test)
en fait, c'est ce que j'essayais de faire car j'ai vu un site comme ça.
par contre, tjs le même bug.
en fait j'ai déclaré :
$verif=0;
puis dans le questionnaire : <input type="hidden" name=$verif value=1>
et dans la boucle : if($verif=1){
et tjs l'apparition du pop-up dès l'ouverture de la page :/ bizarre
par contre, tjs le même bug.
en fait j'ai déclaré :
$verif=0;
puis dans le questionnaire : <input type="hidden" name=$verif value=1>
et dans la boucle : if($verif=1){
et tjs l'apparition du pop-up dès l'ouverture de la page :/ bizarre
salut,
voici une script je ne sais pas si ca te convient :
<html>
<head>
<SCRIPT language=JavaScript type=text/JavaScript>
function MM_findObj(n, d) {
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function YY_checkform() {
var args = YY_checkform.arguments; var myDot=true; var myV=''; var myErr='';var addErr=false;var myReq;
for (var i=1; i<args.length;i=i+4){
if (args[i+1].charAt(0)=='#'){myReq=true; args[i+1]=args[i+1].substring(1);}else{myReq=false}
var myObj = MM_findObj(args[i].replace(/\[\d+\]/ig,""));
myV=myObj.value;
if (myObj.type=='text'||myObj.type=='password'||myObj.type=='hidden'){
if (myReq&&myObj.value.length==0){addErr=true}
if ((myV.length>0)&&(args[i+2]==1)){
var myMa=args[i+1].split('_');if(isNaN(myV)||myV<myMa[0]/1||myV > myMa[1]/1){addErr=true}
} else if ((myV.length>0)&&(args[i+2]==2)){
var rx=new RegExp("^[\\w\.=-]+@[\\w\\.-]+\\.[a-z]{2,4}$");if(!rx.test(myV))addErr=true;
} else if ((myV.length>0)&&(args[i+2]==3)){
var myMa=args[i+1].split("#"); var myAt=myV.match(myMa[0]);
if(myAt){
var myD=(myAt[myMa[1]])?myAt[myMa[1]]:1; var myM=myAt[myMa[2]]-1; var myY=myAt[myMa[3]];
var myDate=new Date(myY,myM,myD);
if(myDate.getFullYear()!=myY||myDate.getDate()!=myD||myDate.getMonth()!=myM){addErr=true};
}else{addErr=true}
} else if ((myV.length>0)&&(args[i+2]==4)){
var myMa=args[i+1].split("#"); var myAt=myV.match(myMa[0]);if(!myAt){addErr=true}
} else if (myV.length>0&&args[i+2]==5){ // check this 2
var myObj1 = MM_findObj(args[i+1].replace(/\[\d+\]/ig,""));
if(myObj1.length)myObj1=myObj1[args[i+1].replace(/(.*\[)|(\].*)/ig,"")];
if(!myObj1.checked){addErr=true}
} else if (myV.length>0&&args[i+2]==6){
var myObj1 = MM_findObj(args[i+1]);
if(myV!=myObj1.value){addErr=true}
}
} else
if (!myObj.type&&myObj.length>0&&myObj[0].type=='radio'){
var myTest = args[i].match(/(.*)\[(\d+)\].*/i);
var myObj1=(myObj.length>1)?myObj[myTest[2]]:myObj;
if (args[i+2]==1&&myObj1&&myObj1.checked&&MM_findObj(args[i+1]).value.length/1==0){addErr=true}
if (args[i+2]==2){
var myDot=false;
for(var j=0;j<myObj.length;j++){myDot=myDot||myObj[j].checked}
if(!myDot){myErr+='* ' +args[i+3]+'\n'}
}
} else if (myObj.type=='checkbox'){
if(args[i+2]==1&&myObj.checked==false){addErr=true}
if(args[i+2]==2&&myObj.checked&&MM_findObj(args[i+1]).value.length/1==0){addErr=true}
} else if (myObj.type=='select-one'||myObj.type=='select-multiple'){
if(args[i+2]==1&&myObj.selectedIndex/1==0){addErr=true}
}else if (myObj.type=='textarea'){
if(myV.length<args[i+1]){addErr=true}
}
if (addErr){myErr+='- '+args[i+3]+'\n'; addErr=false}
}
if (myErr!=''){alert('Erreur(s) de saisie:\t\t\n\n'+myErr)}
document.MM_returnValue = (myErr=='');
}
//-->
</SCRIPT>
</head>
<body>
<form action=script.php name=form1>
<input name="var1" type="text">
<input name="var2" type="text">
<input name="submit" value="envoyer" type="submit" onclick="YY_checkform('form1','var1','#q','0','il faut taper la 1er valeur','var2','#q','0','il faut taper la 2eme valeur');return document.MM_returnValue">
</form>
</body>
</html>
voici une script je ne sais pas si ca te convient :
<html>
<head>
<SCRIPT language=JavaScript type=text/JavaScript>
function MM_findObj(n, d) {
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function YY_checkform() {
var args = YY_checkform.arguments; var myDot=true; var myV=''; var myErr='';var addErr=false;var myReq;
for (var i=1; i<args.length;i=i+4){
if (args[i+1].charAt(0)=='#'){myReq=true; args[i+1]=args[i+1].substring(1);}else{myReq=false}
var myObj = MM_findObj(args[i].replace(/\[\d+\]/ig,""));
myV=myObj.value;
if (myObj.type=='text'||myObj.type=='password'||myObj.type=='hidden'){
if (myReq&&myObj.value.length==0){addErr=true}
if ((myV.length>0)&&(args[i+2]==1)){
var myMa=args[i+1].split('_');if(isNaN(myV)||myV<myMa[0]/1||myV > myMa[1]/1){addErr=true}
} else if ((myV.length>0)&&(args[i+2]==2)){
var rx=new RegExp("^[\\w\.=-]+@[\\w\\.-]+\\.[a-z]{2,4}$");if(!rx.test(myV))addErr=true;
} else if ((myV.length>0)&&(args[i+2]==3)){
var myMa=args[i+1].split("#"); var myAt=myV.match(myMa[0]);
if(myAt){
var myD=(myAt[myMa[1]])?myAt[myMa[1]]:1; var myM=myAt[myMa[2]]-1; var myY=myAt[myMa[3]];
var myDate=new Date(myY,myM,myD);
if(myDate.getFullYear()!=myY||myDate.getDate()!=myD||myDate.getMonth()!=myM){addErr=true};
}else{addErr=true}
} else if ((myV.length>0)&&(args[i+2]==4)){
var myMa=args[i+1].split("#"); var myAt=myV.match(myMa[0]);if(!myAt){addErr=true}
} else if (myV.length>0&&args[i+2]==5){ // check this 2
var myObj1 = MM_findObj(args[i+1].replace(/\[\d+\]/ig,""));
if(myObj1.length)myObj1=myObj1[args[i+1].replace(/(.*\[)|(\].*)/ig,"")];
if(!myObj1.checked){addErr=true}
} else if (myV.length>0&&args[i+2]==6){
var myObj1 = MM_findObj(args[i+1]);
if(myV!=myObj1.value){addErr=true}
}
} else
if (!myObj.type&&myObj.length>0&&myObj[0].type=='radio'){
var myTest = args[i].match(/(.*)\[(\d+)\].*/i);
var myObj1=(myObj.length>1)?myObj[myTest[2]]:myObj;
if (args[i+2]==1&&myObj1&&myObj1.checked&&MM_findObj(args[i+1]).value.length/1==0){addErr=true}
if (args[i+2]==2){
var myDot=false;
for(var j=0;j<myObj.length;j++){myDot=myDot||myObj[j].checked}
if(!myDot){myErr+='* ' +args[i+3]+'\n'}
}
} else if (myObj.type=='checkbox'){
if(args[i+2]==1&&myObj.checked==false){addErr=true}
if(args[i+2]==2&&myObj.checked&&MM_findObj(args[i+1]).value.length/1==0){addErr=true}
} else if (myObj.type=='select-one'||myObj.type=='select-multiple'){
if(args[i+2]==1&&myObj.selectedIndex/1==0){addErr=true}
}else if (myObj.type=='textarea'){
if(myV.length<args[i+1]){addErr=true}
}
if (addErr){myErr+='- '+args[i+3]+'\n'; addErr=false}
}
if (myErr!=''){alert('Erreur(s) de saisie:\t\t\n\n'+myErr)}
document.MM_returnValue = (myErr=='');
}
//-->
</SCRIPT>
</head>
<body>
<form action=script.php name=form1>
<input name="var1" type="text">
<input name="var2" type="text">
<input name="submit" value="envoyer" type="submit" onclick="YY_checkform('form1','var1','#q','0','il faut taper la 1er valeur','var2','#q','0','il faut taper la 2eme valeur');return document.MM_returnValue">
</form>
</body>
</html>
salut ephp,
merci de ton aide, mais je souhaiterais pouvoir le redémonter derrière et avoir juste la boucle de vérification.
meri quand même
merci de ton aide, mais je souhaiterais pouvoir le redémonter derrière et avoir juste la boucle de vérification.
meri quand même
salut dams ! me revoici
j'ai vu que tu avais fait ça :
le problème (je pense), vient du fait que name=$verif est incorrect : tu doit mettre name=verif.
par la suite, lorsque tu es dans un bloc php, tu utilise ta variable comme ceci : $verif, mais pas dans le input.
bon courage
j'ai vu que tu avais fait ça :
<input type="hidden" name=$verif value=1>
le problème (je pense), vient du fait que name=$verif est incorrect : tu doit mettre name=verif.
par la suite, lorsque tu es dans un bloc php, tu utilise ta variable comme ceci : $verif, mais pas dans le input.
bon courage