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 04/03/2008, 18h30   #1
Invité de passage
 
Inscription : novembre 2002
Messages : 17
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 17
Points : 1
Points : 1
Par défaut Formulaire en 2 parties

bonjour,
voici mon petit probleme :
je ne suis pas developpeur du tout mais j'utilise un script php pour recuperer les infos d'un formulaire.
(pour comprendre : http://www.ventdautan.net/inscription.html)
ce 1er formulaire utilise le fichier nadform0.php
ce dernier affiche une page qui permet à l'internaute de corriger le 1er formulaire si il n'a pas rempli certains champs.
Si non il lui permet d'accéder a la seconde partie du formulaire (inscription_suite.html) en actionnant un bouton "suite du formulaire"

j'aimerais pouvoir éviter à l'utilisateur de passer par cette phase transitoire si il a correctement remplit le 1er formulaire.
l'internaute remplit tout les champs, en validant il accede de suite a la suite du formulaire, si non il a le message de mauvaise saisie et se doit de corriger ses champs.

Si vous pouvez m'aider , par avance merci.
jfbidul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 18h40   #2
Membre éprouvé
 
Développeur Web
Inscription : avril 2005
Messages : 395
Détails du profil
Informations personnelles :
Âge : 28

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 395
Points : 479
Points : 479
Salut,

il faut ajouter une redirection dans le fichier de contrôle 'nadform0.php'
#concepts_redirection

c'est normal que même si rien n'est remplis dans le premier formulaire on peut accéder au second ?
__________________
Zend PHP5 Certification
MySQL 4 Core Certification
Gats est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 18h42   #3
Invité de passage
 
Inscription : novembre 2002
Messages : 17
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 17
Points : 1
Points : 1
Citation:
Envoyé par Gats Voir le message
Salut,

il faut ajouter une redirection dans le fichier de contrôle 'nadform0.php'
#concepts_redirection

c'est normal que même si rien n'est remplis dans le premier formulaire on peut accéder au second ?
merci pour cette rapide information,
par contre au sujet de ta question .. non c'est pas normal, j'ai du merdouiller quelque part !
je suis preneur de solutions
jfbidul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 18h50   #4
Membre éprouvé
 
Développeur Web
Inscription : avril 2005
Messages : 395
Détails du profil
Informations personnelles :
Âge : 28

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 395
Points : 479
Points : 479
Pour t'aider plus il faudrait un bout de code du fichier. (bien sûr masque les informations sensible si ya)
__________________
Zend PHP5 Certification
MySQL 4 Core Certification
Gats est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 18h56   #5
Invité de passage
 
Inscription : novembre 2002
Messages : 17
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 17
Points : 1
Points : 1
Par défaut voici le fichier

rien de bien secret donc voici le contenu de mon nadform0 :

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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head></head>
<body>
<div align="center">
  <?
$MailTo = "A@B.C"; //adresse à laquelle sera envoyé le contenu du formulaire
$MailCc = "X@Y.Z"; // adresse à laquelle sera envoyé un communiqué
$MailSubject = "prise d'option page 1, $REMOTE_ADDR"; //texte qui va figurer dans le champ "sujet" du email
$MailHeader = "From: $champD"; //adresse email qui va figurer dans le champ "expéditeur" du email et qui peut être remplacé par la variable "$champx" ("$champ3").
 
/* Les routines suivantes permettent à chacune des variables de prendre la valeur des champs du formulaire et de les stocker ensuite dans la variable globale MailBody qui constituera le corps du message */
 
$Envoi = 1; //initialisation de la variable envoi à 1
 
if ($champA == ""){ //nom du champ1
echo("<font face=verdana size=2>Vous n'avez pas complété le nom du responsable.</font><br>"); //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "Nom du responsable : $champA\n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
 
if ($champB == ""){ //nom du champ1
echo("<font face=verdana size=2>Vous n'avez pas complété l'adresse.</font><br>"); //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "Adresse du responsable : $champB\n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
 
if ($champD == ""){ //nom du champ1
echo("<font face=verdana size=2>Vous n'avez pas complété l'adresse mail.</font><br>"); //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "adresse mail : $champD\n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
 
if ($champE == ""){ //nom du champ1
echo("<font face=verdana size=2>Vous n'avez pas complété le code postal.</font><br>"); //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "code postal : $champE\n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
if ($champF == ""){
echo("<font face=verdana size=2>Vous n'avez pas complété la ville.</font><br>");
$Envoi = 0;
}
else {
$MailBody .= "Ville : $champF\n";
}
if ($champ14 == "0"){
echo("");
$Envoi = 1;
}
else {
$MailBody .= "connu par : $champ14\n";
}
if ($champ15 == "0"){
echo("");
$Envoi = 1;
}
else {
$MailBody .= "remarques : $champ15\n";
}
 
if ($Envoi == 0) echo("<p>&nbsp;</p><p>&nbsp;</p><p align=\"center\"><a href=\"inscription.html\"><strong>Retour</strong></a></p>"); 
//Envoi du message
 
if ($Envoi == 1) { //vérification que la variable envoi est bien à 1
mail($MailTo, $MailSubject, $MailBody, $MailHeader); //envoi du message
mail($MailCc, $MailSubject, $MailBody, $MailHeader); //envoi du communiqué (enlever // pour le rendre opérationnel
echo("<p><font face=verdana size=2>Votre demande d'option a bien été envoyé.<br>Merci de poursuivre l'inscription.</font>"); 
echo("<p>&nbsp;</p><p>&nbsp;</p><p align=\"center\"><a href=\"inscription_suite.html\"><strong>Suite de l'inscription</strong></a></p>"); //affichage d'un message de confirmation.
?><?
}
?>
  <A HREF="Javascript:history.go(-1)">En cliquant sur ce bouton retour, vous conservez les données saisies sur la page précédente. </A></div>
 
</body>
</html>

voilà j'ai juste enlever le script du tracker de google analytics en fin de code avant la balise /body

concernant la redirection qu'est ce que tu me conseille ? je ne peux pas utiliser de header ? je pense ? non ?
jfbidul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 19h26   #6
Membre éprouvé
 
Développeur Web
Inscription : avril 2005
Messages : 395
Détails du profil
Informations personnelles :
Âge : 28

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 395
Points : 479
Points : 479
Pour le problème que j'évoquais :


Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
if ($champ14 == "0"){
	echo("");
	$Envoi = 1;
}
else {
	$MailBody .= "connu par : $champ14\n";
}
if ($champ15 == "0"){
	echo("");
	$Envoi = 1;
}
else {
	$MailBody .= "remarques : $champ15\n";
}

cela devrait être $Envoi = 0;

pour la redirection :
Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
// $text = "";
	// ICI tes différentes vérification
	// sauf que tu n'affiches pas directement par echo tu assignes dans une variable
	// pour ne pas envoyer d'en-tete
	// donc dans tes vérification tu trouveras
	// $text .= "<font face=verdana size=2>Vous n'avez pas complété le nom du responsable.</font><br>";
 
 
	if($Envoi)
	{
                mail($MailTo, $MailSubject, $MailBody, $MailHeader); //envoi du message
		mail($MailCc, $MailSubject, $MailBody, $MailHeader); //envoi du communiqué (enlever // pour le rendre opérationnel
                header('Location: inscription_suite.html');
		exit;
	}
	else
	{
		echo $text;
		echo("<p>&nbsp;</p><p>&nbsp;</p><p align=\"center\"><a href=\"inscription.html\"><strong>Retour</strong></a></p>"); 
	}

j'ai pas le temps de faire plus ou mieux...je dois filer désolé.


Tu as bien précisé que tu n'es pas développeur donc je te passerais les critiques négative, pour des soucis de sécurité évidente il y a pas mal de chose à revoir.
__________________
Zend PHP5 Certification
MySQL 4 Core Certification
Gats est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2008, 10h35   #7
Invité de passage
 
Inscription : novembre 2002
Messages : 17
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 17
Points : 1
Points : 1
Par défaut je n'avance pas

Bon désolé mais c'est plus compliqué que je ne le pensais.
voici ce que j'ai essayé

j'ai simplifié au maximum mon formulaire pour faire les tests
il y a une version là :

http://www.ventdautan.net/tests/inscription.html
et le fichier php suivant :
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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- DEBUT DU SCRIPT nadform.php-->
<html>
<head></head>
<body>
<div align="center">
  <p>
    <?
    /* Ce script a été développé par Nadine Gaine.
Modifications et ajouts par Daniel Maleville
Vous pouvez l'utiliser gratuitement à des fins NON-COMMERCIALES seulement, et le modifier à votre convenance.
Trouvé sur <a href="http://www.toulouse-renaissance.net/c_outils/" target="_blank">http://www.toulouse-renaissance.net/c_outils/</a>
*/
//
 
$MailTo = "info@assovda.com"; //adresse à laquelle sera envoyé le contenu du formulaire
$MailSubject = "test page 1, $REMOTE_ADDR"; //texte qui va figurer dans le champ "sujet" du email
$MailHeader = "From: $champ1"; //contenu du champ qui va figurer dans le champ "expéditeur" du email et qui peut être remplacé par la variable "$champx" ("$champ3").
 
 
$text = "";
$Envoi = 1; //initialisation de la variable envoi à 1
 
/* Pour enlever une condition de vérification de champ (vide ou non), enlever, par exemple au champ 1 :
*
if ($champ1 == ""){ //nom du champ1
echo("Vous n'avez pas complété le champ 1.<br>"); //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
}
et ne laisser que :
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
 
$MailBody .= "Question 1 : $champ1\n";
 
*/
//
if ($champ1 == ""){ //nom du champ1
$text .= "Vous n'avez pas complété le champ 1.<br>"; //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "Question 1 : $champ1\n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
 
if ($Envoi == 0) { //vérification que la variable envoi est bien à 1
echo("<p><a href=\"Javascript:history.go(-1)\"><center><strong>RETOUR</strong></center></a></p>");
//Pas d'envoi du message et retour au formulaire
}
 
//Envoi du message
if(!$Envoi)
	{
		header('Location: inscription_suite.html');
		exit;
	}
	else
	{
		echo $text;
		mail($MailTo, $MailSubject, $MailBody, $MailHeader); //envoi du message
		mail($MailCc, $MailSubject, $MailBody, $MailHeader); //envoi du communiqué (enlever // pour le rendre opérationnel
		echo("<p><font face=verdana size=2>Votre demande d'option a bien été envoyé.<br>Merci de poursuivre l'inscription.</font>"); 
		echo("<p>&nbsp;</p><p>&nbsp;</p><p align=\"center\"><a href=\"inscription_suite.html\"><strong>Suite de l'inscription</strong></a></p>");
	}
?>
</body>
</html>
<!-- FIN DU SCRIPT nadform.php-->
malheureusement celà ne ffonctionne pas
Si je ne remplis pas le champ du formulaire j'ai cette réponse :
RETOUR

Warning: Cannot modify header information - headers already sent by (output started at /home13/eq11955/html/tests/nadform0.php3:8) in /home13/eq11955/html/tests/nadform0.php3 on line 55

et si je remplis je retombe sur ma page php mais qui ne se redirige pas vers la suite de mon formulaire :

"Votre demande d'option a bien �t� envoy�.
Merci de poursuivre l'inscription.

Suite de l'inscription"

donc je me suis certainement planté ! si vous y comprenez quelque chose ????
merci
jfbidul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2008, 10h51   #8
Membre éprouvé
 
Développeur Web
Inscription : avril 2005
Messages : 395
Détails du profil
Informations personnelles :
Âge : 28

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 395
Points : 479
Points : 479
il ne faut pas écrire du html avant le header.


Tu peux placer les tests et le header au tout début de ta page.
__________________
Zend PHP5 Certification
MySQL 4 Core Certification
Gats est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2008, 11h12   #9
Invité de passage
 
Inscription : novembre 2002
Messages : 17
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 17
Points : 1
Points : 1
Par défaut pas mieux ! quel boubourse je fais

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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- DEBUT DU SCRIPT nadform.php-->
<?
$text = "";
$Envoi = 1; //initialisation de la variable envoi à 1
if ($champ1 == ""){ //nom du champ1
$text .= "Vous n'avez pas complété le champ 1.<br>"; //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
$MailBody .= "Question 1 : $champ1\n"; //si le champ1 contient de l'information, elle est stockée dans la variable MailBody
}
 
if ($Envoi == 0) { //vérification que la variable envoi est bien à 1
echo("<p><a href=\"javascript:history.go(-1)\"><center><strong>RETOUR</strong></center></a></p>");
//Pas d'envoi du message et retour au formulaire
}
 
//Envoi du message
if(!$Envoi)
{
header('Location: inscription_suite.html');
exit;
}
else
{
echo $text;
mail($MailTo, $MailSubject, $MailBody, $MailHeader); //envoi du message
mail($MailCc, $MailSubject, $MailBody, $MailHeader); //envoi du communiqué (enlever // pour le rendre opérationnel
echo("<p><font face=verdana size=2>Votre demande d'option a bien été envoyé.<br>Merci de poursuivre l'inscription.</font>");
echo("<p>&nbsp;</p><p>&nbsp;</p><p align=\"center\"><a href=\"inscription_suite.html\"><strong>Suite de l'inscription</strong></a></p>");
}/* Ce script a été développé par Nadine Gaine.
Modifications et ajouts par Daniel Maleville
Vous pouvez l'utiliser gratuitement à des fins NON-COMMERCIALES seulement, et le modifier à votre convenance.
Trouvé sur <a href="http://www.toulouse-renaissance.net/c_outils/" target="_blank">http://www.toulouse-renaissance.net/c_outils/</a>
*/
//
 
$MailTo = "info@assovda.com"; //adresse à laquelle sera envoyé le contenu du formulaire
$MailSubject = "test page 1, $REMOTE_ADDR"; //texte qui va figurer dans le champ "sujet" du email
$MailHeader = "From: $champ1"; //contenu du champ qui va figurer dans le champ "expéditeur" du email et qui peut être remplacé par la variable "$champx" ("$champ3").
 
 
 
 
/* Pour enlever une condition de vérification de champ (vide ou non), enlever, par exemple au champ 1 :
*
if ($champ1 == ""){ //nom du champ1
echo("Vous n'avez pas complété le champ 1.<br>"); //message qui s'affiche si le visiteur n'a pas rempli ce champ
$Envoi = 0; //si le champ1 n'a pas été rempli, la variable envoi prend la valeur de 0
}
else {
}
 
et ne laisser que :
 
$MailBody .= "Question 1 : $champ1\n";
 
*/
//
 
?>
<!-- FIN DU SCRIPT nadform.php-->
j'ai réellement besoin d'une bonne formation !
jfbidul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2008, 11h53   #10
Membre éprouvé
 
Développeur Web
Inscription : avril 2005
Messages : 395
Détails du profil
Informations personnelles :
Âge : 28

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 395
Points : 479
Points : 479
quelque chose du genre :


Code php :
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
 
<?php
// les vérifications
// sans echo
 
if($Envoi)
{
        mail($MailTo, $MailSubject, $MailBody, $MailHeader); //envoi du message
	mail($MailCc, $MailSubject, $MailBody, $MailHeader); //envoi du communiqué (enlever // pour le rendre opérationnel
        header('Location: inscription_suite.html');
	exit;
}
?>
	<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
	<html>
	<head></head>
	<body>
	        <div align="center">
		<?php echo $text; ?>
		<p>&nbsp;</p><p>&nbsp;</p><p align="center"><a href="inscription.html"><strong>Retour</strong></a></p>
		<a href="javascript:history.go(-1)">En cliquant sur ce bouton retour, vous conservez les données saisies sur la page précédente. </a>
		  </div>
 
	</body>
	</html>
__________________
Zend PHP5 Certification
MySQL 4 Core Certification
Gats est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2008, 12h11   #11
Invité de passage
 
Inscription : novembre 2002
Messages : 17
Détails du profil
Informations forums :
Inscription : novembre 2002
Messages : 17
Points : 1
Points : 1
Par défaut hourra !


Je ne peux que m'incliner devant ce résultat !

Il ne me reste plus qu'a reprendre celà sur mon formulaire avec la totalité des champs !

merci pour ce temps passer sur mes déboires

je me remettrai au boulot sur le form cet après midi en attendant, d'autres facettes de mon métier m'appellent !

une fois le résultat abouti, je viendrais l'annoncer mais je pense que ce post peut déjà être classé en résolu !

j'en profite pour ajouter une petite question de +
si tu as vu mon site, je présente des séjours pour enfants et ados, les internautes naiguent sur les différentes descriptions des séjours, mais quand ils sont intéressés par un séjour et qu'ils remplissent le formulaire ils sont obligés de choisir encore le titre du séjour qu'ils ont consulté à la page précèdente, (qui est également le titre de la page html)

ma question est la suivante : existe t'il un moyen pour récupérer ce titre de page html dans le formulaire d'inscription , ainsi l'inscription serait automatiquement sur le séjour que l'internaute aurait consulter avant de passer au formulaire ?
j'espère que je suis assez clair dans mes explications.
jfbidul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2008, 12h25   #12
Membre éprouvé
 
Développeur Web
Inscription : avril 2005
Messages : 395
Détails du profil
Informations personnelles :
Âge : 28

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 395
Points : 479
Points : 479
Pour ta petite question avec pour seul code du html, je pense que tu t'en doute déjà, tu ne pourras pas récupérer les informations lié à ta page précédente. Pour rendre possible cela, revoir ta page et à la passer en php sera nécessaire.
__________________
Zend PHP5 Certification
MySQL 4 Core Certification
Gats est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h36.


 
 
 
 
Partenaires

Hébergement Web