Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/07/2007, 12h32   #1
Membre confirmé
 
Avatar de mLk92
 
Inscription : mars 2006
Messages : 522
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 522
Points : 249
Points : 249
Par défaut Garder ces informations après envoi du formulaire

Hi all,

Alors j'ai petit souci, qui est sûrement l'un des plus simples dans les formulaires, mais je bloque et après plusieurs tests, je deviens fou

Je vous explique, j'ai un formulaire de contact dans lequel on rentre son nom, prénom, mail, tel, pays, etc. Ce formulaire envoi ensuite un mail.

Au départ j'avais fais ce formulaire en 2 fichiers (+ facile) mais lorsqu'il y a une informations qui n'avait pas été spécifiée, j'envoyais une alert javascript et redirigeais vers le formulaire, et là toutes les données étaient remises à zéro, CE QUE JE NE VEUX PAS !!

Donc je l'ai mis en 1 fichier avec un test au début qui soit affiche le formulaire soit fait les test pour vérifier les champs pour ensuite envoyer le mail.

voici en gros 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
 
 
<?
if(isset($_POST['valid'])){
 
// Récupération des entrées.
 
$Prenom=$_POST['firstname'];
$Nom = $_POST['name'];
$email = $_POST['email'];
$idPays = $_POST['f_Pays'];
$Tel = $_POST['tel'];
 
if((empty($Nom))||(empty($email))||(empty($Tel))||(empty($Country)))
	{
		print("<SCRIPT language=\"Javascript\">
			<!--
			alert(\"L\une des informations obligatoires n\'a pas &eacute;t&eacute; sp&eacute;cifi&eacute;e !\");
			// -->
		</SCRIPT>");
	}
	else{
		if(!valid_tel($Tel))
		{
			print("<SCRIPT language=\"Javascript\">
			<!--
			alert(\"Le num&eacute;ro de t&eacute;l&eacute;phone n\'a pas &eacute;t&eacute; sp&eacute;cifi&eacute;e !\");
			// -->
			</SCRIPT>");
		}elseif(!is_email($email)){
			print("<SCRIPT language=\"Javascript\">
			<!--
			alert(\"L\adresse mail n\'a pas &eacute;t&eacute; sp&eacute;cifi&eacute;e !\");
			// -->
			</SCRIPT>");
		}
		else{
			//Envoi du mail
		}
	}
}
else{
 
?>
<form action="contactfr.php" method="post">
	<p>
		<label for="name" class="FormInputTitle"><span>Nom<span class="RequiredField">*</span></span></label>
		<span class="FormInputField"><input type="text" name="name" size="25" border="0" id="name"></span>
	</p>
	<br/>
	<p>
		<label for="firstname" class="FormInputTitle"><span>Pr&eacute;nom</span></label>
		<span class="FormInputField"><input type="text" name="firstname" size="25" border="0" id="firstname"></span>
	</p>
	<p>
		<span class="FormInputField"><input type="submit" name="valid" value="Submit" border="0"></span>
	</p>
</form>
<?
}
?>
Et donc le problème est que je n'ai pas le code html lors d'une alerte javascript, je voudrais savoir comment faire mes test et envoi de mail, en ayant le message d'alert direct sur la page du formulaire ?

j'avais pensé à des évènement du style " onSubmit" ou des trucs du genre, auriez vous des idées ?

Merci pour vos réponses !!
__________________
Citation:
" Can't take your slogans no more, no more sweet talk from the hypocrits " by Robert Nesta Marley
mLk92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2007, 12h54   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Lorsqu'une alerte est déclenchée est-ce que tu la vois à l'écran ?
Parce qu'en fait on dirait que tu la "commentes" en html donc je me demande si ton erreur ne vient pas de la:
Code :
1
2
3
4
5
print("<SCRIPT language=\"Javascript\">
<!--
alert(\"L\adresse mail n\'a pas &eacute;t&eacute; sp&eacute;cifi&eacute;e !\");
// -->
</SCRIPT>");
La deuxieme ligne ouvre un commentaire html/xml et la 4e ligne (censée fermer ce commentaire) est commentée en javascript, du coup je pense que tout le reste de ton document est marqué en commentaire et n'apparait pas.

En faisant ca:
Code :
1
2
3
print("<SCRIPT language=\"Javascript\">
alert(\"L\adresse mail n\'a pas &eacute;t&eacute; sp&eacute;cifi&eacute;e !\");
</SCRIPT>");
est ce que ca marche mieux?
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2007, 13h35   #3
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
: Contrôler et réafficher un formulaire avec les valeurs déjà saisies
On ne sait jamais, ça peut servir
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2007, 14h20   #4
Membre confirmé
 
Avatar de mLk92
 
Inscription : mars 2006
Messages : 522
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 522
Points : 249
Points : 249
l'alerte s'affiche bien

Justement Celira, l'exemple que tu m'a gentillement passer, repasse le formulaire sur les test, j'ai près de 6 test, je ne me vois pas remettre 6 fois 400 lignes

Ce que j'aimerai c'est afficher une alerte (tjr après clik sur le bouton submit) sans avoir quitté la page du formulaire, ainsi en cliquant sur le bouton "Ok" de l'alerte, il n'y a pas de redirection ou besoin de cliquer sur "précédent".
__________________
Citation:
" Can't take your slogans no more, no more sweet talk from the hypocrits " by Robert Nesta Marley
mLk92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2007, 14h35   #5
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
As-tu essayé de retirer les lignes qui "commentent" le html ?
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2007, 14h43   #6
Membre confirmé
 
Avatar de mLk92
 
Inscription : mars 2006
Messages : 522
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 522
Points : 249
Points : 249
Citation:
Envoyé par koopajah
As-tu essayé de retirer les lignes qui "commentent" le html ?
Oui j'ai essayé et c'est pareil
__________________
Citation:
" Can't take your slogans no more, no more sweet talk from the hypocrits " by Robert Nesta Marley
mLk92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2007, 14h44   #7
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
et quand tu fais clic-droit afficher la source tu n'as rien a part le javascript ?
Se pourrait-il que ca vienne de l'absence des <html><head>.....</html> qui font que lorsque tu as des balises <script> tu dois avoir les autres balises?
Je propose des idées mais je ne sais pas du tout si c'est lié.

EDIT : autre piste essaies en remplacant tes messages d'erreur par un simple aaa (ou autre texte mais sans caractères spéciaux du style ' ou ", parce que les échappements sont fait au niveau du php puis du javascript et par le passé ca m'a causé des erreurs. Donc autant éliminer cette possibilité avant d'aller plus loin
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/07/2007, 14h52   #8
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Citation:
Envoyé par mLk92
Justement Celira, l'exemple que tu m'a gentillement passer, repasse le formulaire sur les test, j'ai près de 6 test, je ne me vois pas remettre 6 fois 400 lignes
Oui, évidemment vu comme ça...
Citation:
Envoyé par mLk92
Ce que j'aimerai c'est afficher une alerte (tjr après clik sur le bouton submit) sans avoir quitté la page du formulaire, ainsi en cliquant sur le bouton "Ok" de l'alerte, il n'y a pas de redirection ou besoin de cliquer sur "précédent".
Tu peux sans doute faire quelque chose avec une fonction javascript que tu placerais dans ton bouton et qui ferais la soumission du formulaire uniquement si il n'y a pas de problèmes...
Faq jascript : Comment vérifier que l'utilisateur a renseigné un champ d'un formulaire ?
Mais là on sort de mon domaine
Bon courage !
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/07/2007, 14h12   #9
Membre confirmé
 
Avatar de mLk92
 
Inscription : mars 2006
Messages : 522
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 522
Points : 249
Points : 249
Celira, merci , ce que tu m'a filé fonctionne parfaitement

Mais .. parce qu'il y a toujours un "Mais", comment je fais par rapport à mes test par rapport au "$_POST", plus besoin d'en faire ?

D'autre part, je faisais un test sur l'adresse mail après avoir posté , et s'il y a une erreur --> Alert(); et donc perte des données inscrite en cliquand "Ok", comment faire pour que le test de mails soit fait lui aussi ?

Sinon est-ce que vous pensez que je peux mettre un renvoi vers la page précédente (avec une balise meta ou autre) et ainsi ne pas perdre les données ?
__________________
Citation:
" Can't take your slogans no more, no more sweet talk from the hypocrits " by Robert Nesta Marley
mLk92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2007, 12h55   #10
Inscrit
 
Inscription : septembre 2005
Messages : 260
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 260
Points : 98
Points : 98
Essaye la methode cookie, mais attention c'est du brute force,

Code :
<input type=text class="memorize" size=7 name="toto" value=""   style="border-color:rgb(255,102,255); border-style:dotted;">
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
 
<script>
var memoryduration="100 days"
function setformobjects(){
var theforms=document.forms
memorizearray=new Array()
for (i=0; i< theforms.length; i++){
for (j=0; j< theforms[i].elements.length; j++){
if (theforms[i].elements[j].className.indexOf("memorize")!=-1 && theforms[i].elements[j].type=="text")
memorizearray[memorizearray.length]=theforms[i].elements[j]
}
}
var retrievedvalues=get_cookie("mvalue"+window.location.pathname)
if (retrievedvalues!=""){
retrievedvalues=retrievedvalues.split("|")
if (retrievedvalues[retrievedvalues.length-1]!=parseInt(memoryduration)) //reset cookie if var memoryduration has changed
resetcookie("mvalue"+window.location.pathname)
else{
for (i=0; i<memorizearray.length; i++){
if (retrievedvalues[i]!="empty_value")
memorizearray[i].value=retrievedvalues[i]
}
}
}
}
function get_cookie(Name) {
  var search = Name + "="
  var returnvalue = "";
  if (document.cookie.length > 0) {
    offset = document.cookie.indexOf(search)
    if (offset != -1) { // if cookie exists
      offset += search.length
      end = document.cookie.indexOf(";", offset);
      if (end == -1)
         end = document.cookie.length;
      returnvalue=unescape(document.cookie.substring(offset, end))
      }
   }
  return returnvalue;
}
function resetcookie(id){
var expireDate = new Date()
expireDate.setDate(expireDate.getDate()-10)
document.cookie = id+"=;path=/;expires=" + expireDate.toGMTString()
}
function saveformvalues(){
var formvalues=new Array(), temp
for (i=0; i<memorizearray.length; i++){
temp=memorizearray[i].value!=""? memorizearray[i].value : "empty_value"
formvalues[formvalues.length]=escape(temp)
}
formvalues[formvalues.length]=parseInt(memoryduration)
formvalues=formvalues.join("|")
var expireDate = new Date()
expireDate.setDate(expireDate.getDate()+parseInt(memoryduration))
document.cookie = "mvalue"+window.location.pathname+"="+formvalues+"; path=/;expires=" + expireDate.toGMTString()
}
if (window.addEventListener)
window.addEventListener("load", setformobjects, false)
else if (window.attachEvent)
window.attachEvent("onload", setformobjects)
else if (document.getElementById)
window.onload=setformobjects
if (document.getElementById)
window.onunload=saveformvalues
</script>
Akim13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h15.


 
 
 
 
Partenaires

Hébergement Web