[php] garder historique champs d'un formulair

Résolu/Fermé
cathy_9999 Messages postés 129 Date d'inscription mercredi 13 juin 2007 Statut Membre Dernière intervention 24 janvier 2012 - 26 juin 2007 à 09:37
 ka52 - 3 juin 2008 à 23:24
Bonjour,

Dans un formulaire j'ai rendu obligatoire deux champs, le titre et le texte. Si l'un des deux est pas rempli, cela le dit a l'utilisateur. J'aimerais qu'a l'aide d'un lien "retour", il retourne sur la page rajouter le champ qu'il a ommis de remplir sans effacer ce qu'il avait déja écrit pour les autres. comment faire? quel fonction en php?
A voir également:

21 réponses

cathy_9999 Messages postés 129 Date d'inscription mercredi 13 juin 2007 Statut Membre Dernière intervention 24 janvier 2012 22
26 juin 2007 à 10:32
cela ne marche pas car mes champs sont affectés a une requete
2
Je t'avais fait il y a une heure une grande réponse mais le site CCM a planté !

Mets une seulle page, au debut tu mets ton code php, puis ensuite ton code HTML du formulaire.

Tu testes si le formulaire a ete posté par
$valide="nok";
if(isset($_POST['Envoyer'])){
Tu testes tes deux champs si ok -> $valide="ok";
sinon tu charges des variables par ex $titre=$_POST['titre']; etc..


}else{

tu charges les variables par ex $titre avec ta requette à la base
}

if($valide=="ok") tu traites et enregistres dans ta base etc..
if ($valide="nok") tu réaffiches le formulaire avec le message echo "Veuillez replir le champ..."


et dans le formulaire
action="nom_de_la_page_formulaire.php"

<input name="titre" value="$titre"> etc...

la première fois ça t'affichera les valeurs lues dans la base,

lorsqu'elle se recharge tu as les valeurs saisies par l'utilisateur

plus besoin du bouton retour
2
Je suppose que tu verifie que ton champ est rempli par le PHP.

Le plus simple est de verifier ça par javescript, la page ne part pas au serveur, donc ne s'efface pas.
Cherches sur Google ou autre : "verification champs de formulaire"

Sinon tu peux mettre dans la pge dans laquelle tu va mettre ton bouton retour des champs cachés
dans une form
<input type="hidden" name="nom_champ1" value="<?php echo $_POST[nom_champ1] ?>" >

et dans ton formulaire de départ tu mets dans les input value="<?php echo $_POST[nom_champ1] ?>"

et ton bouton retour devra appeller ce fromulaire avec la metthode POST
1
Sois plus précise, qu'est ce qui ne marche pas: le javascript ou les champs cachés.


Si tu veux verifier en Javascript, mets dans la balise <form onSubmit="return verif_vides('nom_formulaire');"

et tu cree une fonction JS en t'inspirant de ça:

que tu mets entre les balises<head> et </head> de ta page formulaire
<script language="javascript" type text/javascript>
function verif_vides(formulaire) {
if(formulaire.societe.value.length < 1) {
alert('Le champ societe doit etre rempli !');
formulaire.societe.focus();
return false;
}
if(formulaire.adresse.value.length < 1) {
alert('Le champ adresse doit etre rempli !');
formulaire.adresse.focus();
return false;
}
var exp=new RegExp("^[0-9]{2,}$", "g");
if(formulaire.cp.value.length < 1) {
alert('Le champ code postal doit etre rempli !');
formulaire.cp.focus();
return false;
}
else if (!exp.test(formulaire.cp.value) ) {
alert(" E R R E U R !\n\nLa saisie ("+formulaire.cp.value+") contient des caracteres non autorises !");
formulaire.cp.focus();
return false;
}
if(formulaire.ville.value.length < 1) {
alert('Le champ ville doit etre rempli !');
formulaire.ville.focus();
return false;
}
if(formulaire.nom.value.length < 1) {
alert('Le champ nom doit etre rempli !');
formulaire.nom.focus();
return false;
}
if(formulaire.prenom.value.length < 1) {
alert('Le champ prenom doit etre rempli !');
formulaire.prenom.focus();
return false;
}
if(formulaire.telephone.value.length < 1) {
alert('Le champ telephone doit etre rempli !');
formulaire.telephone.focus();
return false;
}
else if (!exp.test(formulaire.cp.value) ) {
alert(" E R R E U R !\n\nLa saisie ("+formulaire.telephone.value+") contient des caracteres non autorises !");
formulaire.telephone.focus();
return false;
}
var exp2=new RegExp("^[\\w\\-]+(\\.[\\w\\-]+)*@[\\w\\-]+(\\.[\\w\\-]+)*\\.[\\w\\-]{2,}$", "i");
if(formulaire.email.value !="" && !exp2.test(formulaire.email.value)){
alert("Adresse mail ("+formulaire.email.value+") non valide !");
formulaire.email.focus();
return false;
}
if(formulaire.mdp.value.length < 1) {
alert("Le champ mot de passe doit etre rempli !");
formulaire.mdp.focus();
return false;
}
return true;
}
</script>

Pour debuguer ouvre ta page avec Firefox et utilises la console d'erreur Javascript, ça aide beaucoup !!
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
deux petites erreurs: il faut rajouter return true à la fin et mettre la condition dans le on Click et pas besion de mettre javascript: le navigateur comprend. et ne mets pas l'appel de la fonction sur le bouton mais dans la balise form onSubmit (tu as mis le bouton en submit donc ces deux choses font que ça part tout le temps).

function testform(){
if(document.formulaire.titre.value!='') {
document.formulaire.submit();

}else
{
alert('le titre est obligatoire');
document.formulaire.titre.focus();
return false;
}
return true;
}

<form name="...." method="POST" action="......" onSubmit="return testform()">
// le formulaire sera posté seulement si la fonction retourne true !

<input name="bouton" type="submit" value="<?php =$bouton?>" style="font-weight:bold;width:100px;" >

SVP prends l'habitude de ne pas utiliser les shorts tags PHP utilises <?php sinon tu auras des soucis si ton serveur est en PHP5
1
Qu'est ce qui ne marche pas ? la fonction javascript ?

As tu fireFox ? sinon télécharges le c'est un navigateur super et il a une console de debugage Javasscript. Et en plus si tu fais des programmes internet il vaut mieux tester sur plusieurs navigateurs. Tes codes parfois ne marchent pas sur tous.

Lorsque tu fais else echo tu recharges une nouvelle page et les données postées par la précedente sont perdues, à moins que tu les memorises dans des champs cachés comme je te l'ai dit plus haut:

"tu peux mettre dans la page dans laquelle tu va mettre ton bouton retour des champs cachés
dans une form
<input type="hidden" name="nom_champ1" value="<?php echo $_POST[nom_champ1] ?>" >

et dans ton formulaire de départ tu mets dans les input value="<?php echo $_POST[nom_champ1] ?>"

et ton bouton retour devra appeller ce formulaire avec la metthode POST"
1
cathy_9999 Messages postés 129 Date d'inscription mercredi 13 juin 2007 Statut Membre Dernière intervention 24 janvier 2012 22
26 juin 2007 à 14:45
Merci beaucoup, je vais essayer.
Mais je cherche pas a vérifier les champs mais quand on revient sur la page précedente, qu'il y'est toujours l'historique de ce qu'on avait écri, tandis que la, ca m'efface et me positionne le curseur.
0
cathy_9999 Messages postés 129 Date d'inscription mercredi 13 juin 2007 Statut Membre Dernière intervention 24 janvier 2012 22
27 juin 2007 à 15:11
g plus opté pour du javascript, le souci c que une fois que je clique sur "ok" du message d'alerte, ca m'éxécute la requête, comment lui dire stop, reste au focus et au prochain clique sur submit, ca la traite ?

function testform(){
if(document.formulaire.titre.value!='') {
document.formulaire.submit();

}else
{
alert('le titre est obligatoire');
document.formulaire.titre.focus();
return false;
}
}

<input name="bouton" type="submit" value="<?=$bouton?>" style="font-weight:bold;width:100px;" onClick="javascript:testform()";>
0
cathy_9999 Messages postés 129 Date d'inscription mercredi 13 juin 2007 Statut Membre Dernière intervention 24 janvier 2012 22
27 juin 2007 à 16:13
Ne marche tjrs pas

dans ma page d'execution j'ai mis :

} else {
echo "<strong>Erreur, les champs obligatoires n'ont pas été tous renseignés</strong>.<br />".mysql_error($stmt_sql);
?>
<input type="button" value="Retour arrière" name="Retour" onclick = "history.back()"/><?

C'est quand on clique sur le bouton retour que je souhaite voir apparaitre ce qu'il avait déja saisi, sans que ce soi effacer
0
cathy_9999 Messages postés 129 Date d'inscription mercredi 13 juin 2007 Statut Membre Dernière intervention 24 janvier 2012 22
27 juin 2007 à 16:45
dans ma page de traitement :


<input type="button" value="Retour arrière" name="Retour" onclick ="?????????"/>
<input type="hidden" name="titre" value="<?php echo $_POST["titre"] ?>" />
<input type="hidden" name="texte" value="<?php echo $_POST["texte"] ?>" />

dans ma page de base formulaire :

<input name="titre" type="text" size="70" value="<?php echo $_POST['titre'] ?>"/>
<textarea name="textarea" id="textarea" rows="25" cols="80"onKeyDown="textCounter(this.form.textarea,this.form.remLentext,4000);" onKeyUp="textCounter(this.form.textarea,this.form.remLentext,4000);"><?php echo $_POST['texte'] ?></textarea>
0
1 ière solution

Dans bouton retour :
onclick ="Submit()" et dans la balise <form action="formulaire_de_base.php"
(ne marche pas avec tous les navigateurs ?)

2 ieme solution:

bouton retour type="submit" et dans la balise <form action="formulaire_de_base.php"
0
cathy_9999 Messages postés 129 Date d'inscription mercredi 13 juin 2007 Statut Membre Dernière intervention 24 janvier 2012 22
27 juin 2007 à 22:05
pardonnez moi si je suis debutante mais je compred pas touit
dans ma page ou j'ai realisé mon fomulaire, la ou se trouve le form

<form action = formexec.php method=post name = formulaire etc...
<input name="titre" type="text" size="70" value="<?$titre?>"/>


<textarea name="textarea" id="textarea" rows="25" cols="80"onKeyDown="textCounter(this.form.textarea,this.form.remLentext,4000);" onKeyUp="textCounter(this.form.textarea,this.form.remLentext,4000);"><?$texte?></textarea>

et donc dans ma page de traitement : formexec.php je met donc cela ?

<input type="hidden" name="titre" value="<?php echo $_POST["titre"] ?>" />
<input type="hidden" name="texte" value="<?php echo $_POST["texte"] ?>" />
<input type="button" value="Retour arrière" name="Retour" onclick ="formulaire"/>

cela ne me garde rien du tout !
ca me remet la page toute blanche, que je fasse avec le bouton retour ou avec e bouton precendent de ie!
0
dans ta page de formulaire: formulaire.php

<form action = formexec.php method=post name = formulaire etc...
<input name="titre" type="text" size="70" value="<?php echo $_POST[titre]; ?>"/>


<textarea name="textarea" id="textarea" rows="25" cols="80"onKeyDown="textCounter(this.form.textarea,this.form.remLentext,4000);" onKeyUp="textCounter(this.form.textarea,this.form.remLentext,4000);"><?php echo $_POST[texte]; ?>
0
cathy_9999 Messages postés 129 Date d'inscription mercredi 13 juin 2007 Statut Membre Dernière intervention 24 janvier 2012 22
27 juin 2007 à 22:28
mais dans le onclick je dois juste ettre formulaire?
j'esssayerais demain alors! car j'ai pa les fichiers a la maison
0
J'ai des soucis pour te répondre çela fait deux fois que je recommence, les ecrans de CCM interpretent le code et ton bouton retour apparait en dessous de l'écran, et la moité de mon code est bouffé/

dans formexec.php
Mets balise < form method="post" action="formulaire.php" tu rappelles le fromulaire du départ

et tu mets le bouton retour en type submit plus de onClick !!!
0
cathy_9999 Messages postés 129 Date d'inscription mercredi 13 juin 2007 Statut Membre Dernière intervention 24 janvier 2012 22
28 juin 2007 à 09:33
Bonjour,

Je suis obligé de garder cela sinon ça beugue pour mes autres requetes !!
alors comment pusi je faire avec cette synthaxe?

<form id="formulaire" name="formulaire" action="execform.php" enctype="multipart/form-data" method="post">

<input name="titre" type="text" size="70" value="<?=$titre?>"/>


page execform.php
<form method="post" action="formulaire.php"
<input type="hidden" name="titre" value="<?php echo $_POST['$titre'] ?> />
<input type="submit" value="Retour arrière" name="Retour"/>
0
cathy_9999 Messages postés 129 Date d'inscription mercredi 13 juin 2007 Statut Membre Dernière intervention 24 janvier 2012 22
28 juin 2007 à 10:27
C'est bon c'est résolu, j'avais oublié de mettre en haut de ma page :

if ($_POST['titre'] == "") {
$titre = "";
} else {
$titre = $_POST['titre'];
}
0
yozine Messages postés 11 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 2 juillet 2007 2
28 juin 2007 à 10:38
Bonjour, tu peux utiliser une session.

Tu l'ouvres avec session_start(), voir le lien:
http://www.manuelphp.com/php/function.session-start.php

Il faut verifier que ton hebergeur accepte les sessions, il me semble

L'autre possibilité est de placer un cookie sur l'ordi qui appelle le script PHP, mais cette solution est un peu plus lourde et si les cookies sont desactives sur le navigateur du client ca marchera pas.
0
Bonjour,

Petite question je debute, et donc quelques explications me parraissent trop complexes...Je cherche a dupliquer par exemple ( nom adresse date de naissance tel adresse mail) lorsque je remplis des formulaires simultanement.Plutot que de tout reecrire j aimerais savoir s il y a un moyen de garder ces infos en memoire, ou d avoir juste par exemple a taper les premieres lettres.
Merci d avance pour vos reponses :-) AUDREY
0
Salut!
quand la lumière soit, dans l'évolution du monde!!!!!

je suis pas membres mais au moins, j'ai besoin de votre contribution!
je veux afficher un div, un layer quand un champ reçois le curseur!
SVP veuillez m'aider!
0