Voilà j'ai eu du mal a trouvé comment faire mon formulaire multi page et on ma bien aidé !
http://www.grafikart.fr/forum/topic/12967
Mais maintenant je l'ai associé à un envoie de mail mais je crois que je m'y suis mal prise... car arrvé au SUBMIT pour l'envoie de mail je devrais soit avoir une erreur soit avoir une redirection et rien, page blanche et en plus le mail n'est pas envoyé bien entendu...
Voici mon code en 5 pages : (alors je l'ai fait avec cakephp donc les fichier sont en ctp et il n'y a pas d'extention dans les actions c'est normal mais ça ne change rien au fonctionnement de base )
devis2.ctp
<?php session_start(); ?>
<div id="gauche">
<form method="POST" action="page2">
Vous êtes : <input name="perso" type="radio" value="Particulier" /> un particulier
<input name="perso" type="radio" value="Professionel" />un professionnel
<input type="SUBMIT" value="OK">
</form>
</div>
page2.ctp
<?php
session_start();
$perso = $_POST'perso'];
$_SESSION'perso'] = $perso;
?>
<div id="gauche">
Vous êtes un <b><?php echo $perso; ?></b>.<br />
<form method="POST" action="page3">
Vous recherchez un : <input name="ordi" type="radio" value="ordinateur portable" /> ordinateur portable
<input name="ordi" type="radio" value="ordinateur de bureau" />ordinateur de bureau
<input name="ordi" type="radio" value="ordinateur de bureau" />indifférent
<input type="SUBMIT" value="OK">
</form>
</div>
page3.ctp
<?php
session_start();
$perso = $_SESSION'perso'];
$ordi = $_POST'ordi'];
$_SESSION'ordi'] = $ordi;
?>
<div id="gauche">
Vous êtes un <b><?php echo $perso; ?></b>.<br />
Et vous cherchez <b><?php echo $ordi; ?></b>.<br />
<form method="POST" action="page4">
Des informations supplémentaires ? <textarea name="info" rows="10" cols="60" placeholder="votre message"></textarea>
<input type="SUBMIT" value="OK">
</form>
</div>
page4.ctp
<?php
session_start();
$perso = $_SESSION'perso'];
$ordi = $_SESSION'ordi'];
$info = $_POST'info'];
$_SESSION'info'] = $info;
?>
<div id="gauche">
Vous êtes un <b><?php echo $perso; ?></b>.<br />
Et vous cherchez <b><?php echo $ordi; ?></b>.<br />
vos info : <b><?php echo $info; ?></b>.<br />
<form method="POST" action="page5">
Nom : <input type="TEXT" name="nom"><br />
Prénom : <input type="TEXT" name="prenom"><br />
Adresse : <textarea name="adresse" rows="10" cols="60" placeholder="votre message"></textarea><br />
Code postale : <input type="TEXT" name="cp"><br />
Ville : <input type="TEXT" name="ville"><br />
Mail : <input type="mail" name="email"><br />
Numéro : <input type="tel" name="tel"><br />
<input type="SUBMIT" value="OK">
</form>
</div>
Et enfin la page d'envoie page5.ctp
<?php
session_start();
$perso = $_SESSION'perso'];
$ordi = $_SESSION'ordi'];
$info = $_SESSION'info'];
$nom = $_POST'nom'];
$_SESSION'nom'] = $nom;
$prenom = $_POST'prenom'];
$_SESSION'prenom'] = $prenom;
$adresse = $_POST'adresse'];
$_SESSION'adresse'] = $adresse;
$cp = $_POST'cp'];
$_SESSION'cp'] = $cp;
$ville = $_POST'ville'];
$_SESSION'ville'] = $ville;
$email = $_POST'email'];
$_SESSION'email'] = $email;
$tel = $_POST'tel'];
$_SESSION'tel'] = $tel;
?>
<?php if(isset($_POST) && isset($_POST'nom'])
&& isset($_POST'prenom'])
&& isset($_POST'email'])
&& isset($_POST'adresse'])
&& isset($_POST'ville'])
&& isset($_POST'cp'])
&& isset($_POST'tel'])
&& isset($_POST'info'])){
if(!empty($_POST'nom'])
&& !empty($_POST'prenom'])
&& !empty($_POST'email'])
&& !empty($_POST'adresse'])
&& !empty($_POST'ville'])
&& !empty($_POST'cp'])
&& !empty($_POST'tel'])){
/*echo "Page de récupération des données :<br><br>";*/
if (isset($_POST"perso"]))
/* la case est cochée */
$perso = $_POST"perso"];
else
$perso = "";
if (isset($_POST"ordi"]))
$ordi = $_POST"ordi"];
else
$ordi = "";
$perso = '0';
$ordi = '0';
$destinataire = "truc@machin.com";
$sujet = '=?UTF-8?B?'.base64_encode('Sujet : DEVIS EN LIGNE- VENTE').'?=';
$message = "
CE MESSAGE ET UN MESSAGE AUTOMATIQUE , ENVOYE DEPUIS LE SITE http://teaminformatique.com POUR LA DEMANDE DE DEVIS EN LIGNE, VEUILLEZ NE PAS REPONDRE. \n
Message de : ".$_POST'nom']." ".$_POST'prenom']." \n
Adresse email : ".$_POST'email']." \n
Adresse :".$_POST'adresse']." \n
Ville : ".$_POST'ville']." \n
Code postale :".$_POST'cp']." \n
Numéro :".$_POST'tel']." \n
Le demandeur est un ou une :".$_POST'perso']." \n
Ce qu'il recherche :".$_POST'ordi']." \n
Informations supplémentaires :".$_POST'info']."
" ;
$entete = 'From: '.$_POST'email']."\r\n".
'Reply-To: '.$_POST'email']."\r\n".
'X-emailer: PHP/'.phpversion();
$entete .='Content-Type: text/plain; charset="utf-8"'." "; // ici on envoie le email au format texte encodé en UTF-8
$entete .='Content-Transfer-Encoding: 8bit'; // ici on précise qu'il y a des caractères accentués
$entete .= "MIME-Version: 1.0";
if (email($destinataire,$sujet,$message,$entete)){
header("location:http://monsite.com/");
} else {
echo "Une erreur est survenue lors de l'envoi du formulaire par email";
}
}
} ?>
J'espère que vous pourrez m'aiguiller... Je pense que la page5.ctp n'est plus du tout adapté à ce système de session... Mais je ne vois pas du tout comment faire autrement :(
1) Tu pourrais déjà mettre un message d'erreur pour les 2 premières condition, si elle ne sont pas respectées
if (email($destinataire,$sujet,$message,$entete)){
header("location:http://monsite.com/");
} else {
echo "Une erreur est survenue lors de l'envoi du formulaire par email";
}
}else{
echo "Erreur 1";
}else{
echo "Erreur 2";
}
?>
2) Il y a une erreur ligne 36
Il n'y a pas de $_POST'info'] , c'est plutôt $_SESSION'info']
Ah je vois aussi une autre erreur :)
Un header('location: ...') ne fonctionne pas si tu as déjà envoyé quelque chose au client.
Et à la ligne 29 il y a un saut de ligne.
Le mieux est de ne pas fermer puis ré-ouvrir <?php / ?>
Ca y est ça fonctionne j'ai le mail mais il ne me prend que les champs nom prenom adresse cp ville email et telephone...
le dernier truc que j'ai valider quoi rien de ce que j'ai fait dans les pages précédentes....
en erreur j'ai eu ça :
Notice (8): Undefined index: perso [APP/View/Pages/page5.ctp, line 74] (boutons radio)
Notice (8): Undefined index: ordi [APP/View/Pages/page5.ctp, line 75] (boutons radio)
Notice (8): Undefined index: info [APP/View/Pages/page5.ctp, line 77] (textarea)
alors il m'envoie le mail mais sans ces info la
revoilà donc mon code :
<?php
session_start();
$perso = $_SESSION'perso'];
$ordi = $_SESSION'ordi'];
$info = $_SESSION'info'];
$nom = $_POST'nom'];
$_SESSION'nom'] = $nom;
$prenom = $_POST'prenom'];
$_SESSION'prenom'] = $prenom;
$adresse = $_POST'adresse'];
$_SESSION'adresse'] = $adresse;
$cp = $_POST'cp'];
$_SESSION'cp'] = $cp;
$ville = $_POST'ville'];
$_SESSION'ville'] = $ville;
$email = $_POST'email'];
$_SESSION'email'] = $email;
$tel = $_POST'tel'];
$_SESSION'tel'] = $tel;
if(isset($_POST) && isset($_POST'nom'])
&& isset($_POST'prenom'])
&& isset($_POST'email'])
&& isset($_POST'adresse'])
&& isset($_POST'ville'])
&& isset($_POST'cp'])
&& isset($_POST'tel'])
&& isset($_SESSION'info'])){
if(!empty($_POST'nom'])
&& !empty($_POST'prenom'])
&& !empty($_POST'email'])
&& !empty($_POST'adresse'])
&& !empty($_POST'ville'])
&& !empty($_POST'cp'])
&& !empty($_POST'tel'])){
/*echo "Page de récupération des données :<br><br>";*/
if (isset($_POST"perso"]))
/* la case est cochée */
$perso = $_POST"perso"];
else
$perso = "";
if (isset($_POST"ordi"]))
$ordi = $_POST"ordi"];
else
$ordi = "";
$perso = '0';
$ordi = '0';
$destinataire = "truc@machin.com";
$sujet = '=?UTF-8?B?'.base64_encode('Sujet : DEVIS EN LIGNE- VENTE').'?=';
$message = "
CE MESSAGE ET UN MESSAGE AUTOMATIQUE , ENVOYE DEPUIS LE SITE http://teaminformatique.com POUR LA DEMANDE DE DEVIS EN LIGNE, VEUILLEZ NE PAS REPONDRE. \n
Message de : ".$_POST'nom']." ".$_POST'prenom']." \n
Adresse email : ".$_POST'email']." \n
Adresse :".$_POST'adresse']." \n
Ville : ".$_POST'ville']." \n
Code postale :".$_POST'cp']." \n
Numéro :".$_POST'tel']." \n
Le demandeur est un ou une :".$_POST'perso']." \n
Ce qu'il recherche :".$_POST'ordi']." \n
Informations supplémentaires :".$_POST'info']."
" ;
$entete = 'From: '.$_POST'email']."\r\n".
'Reply-To: '.$_POST'email']."\r\n".
'X-emailer: PHP/'.phpversion();
$entete .='Content-Type: text/plain; charset="utf-8"'." "; // ici on envoie le email au format texte encodé en UTF-8
$entete .='Content-Transfer-Encoding: 8bit'; // ici on précise qu'il y a des caractères accentués
$entete .= "MIME-Version: 1.0";
if (email($destinataire,$sujet,$message,$entete)){
header("location:http://monsite.com/");
} else {
echo "Une erreur est survenue lors de l'envoi du formulaire par email";
}
}else{
echo "Erreur 1";
}
}else{
echo "Erreur 2";
} ?>
j'ai trouvé est c'est grâce à toi merci !
En fait à ce niveau la :
$sujet = '=?UTF-8?B?'.base64_encode('Sujet : DEVIS EN LIGNE- VENTE').'?=';
$message = "
CE MESSAGE ET UN MESSAGE AUTOMATIQUE , ENVOYE DEPUIS LE SITE http://teaminformatique.com POUR LA DEMANDE DE DEVIS EN LIGNE, VEUILLEZ NE PAS REPONDRE. \n
Message de : ".$_POST'nom']." ".$_POST'prenom']." \n
Adresse email : ".$_POST'email']." \n
Adresse :".$_POST'adresse']." \n
Ville : ".$_POST'ville']." \n
Code postale :".$_POST'cp']." \n
Numéro :".$_POST'tel']." \n
Le demandeur est un ou une :".$_POST'perso']." \n
Ce qu'il recherche :".$_POST'ordi']." \n
Informations supplémentaires :".$_POST'info']."
je remplace par :
$sujet = '=?UTF-8?B?'.base64_encode('Sujet : DEVIS EN LIGNE- VENTE').'?=';
$message = "
CE MESSAGE ET UN MESSAGE AUTOMATIQUE , ENVOYE DEPUIS LE SITE http://teaminformatique.com POUR LA DEMANDE DE DEVIS EN LIGNE, VEUILLEZ NE PAS REPONDRE. \n
Message de : ".$_POST'nom']." ".$_POST'prenom']." \n
Adresse email : ".$_POST'email']." \n
Adresse :".$_POST'adresse']." \n
Ville : ".$_POST'ville']." \n
Code postale :".$_POST'cp']." \n
Numéro :".$_POST'tel']." \n
Le demandeur est un ou une :".$_SESSION'perso']." \n
Ce qu'il recherche :".$_SESSION'ordi']." \n
Informations supplémentaires :".$_SESSION'info']."
Merci mille fois !
ça donne ça ?
<?php
session_start();
$perso = $_SESSION'perso'];
$ordi = $_SESSION'ordi'];
$info = $_SESSION'info'];
$nom = $_POST'nom'];
$_SESSION'nom'] = $nom;
$prenom = $_POST'prenom'];
$_SESSION'prenom'] = $prenom;
$adresse = $_POST'adresse'];
$_SESSION'adresse'] = $adresse;
$cp = $_POST'cp'];
$_SESSION'cp'] = $cp;
$ville = $_POST'ville'];
$_SESSION'ville'] = $ville;
$email = $_POST'email'];
$_SESSION'email'] = $email;
$tel = $_POST'tel'];
$_SESSION'tel'] = $tel;
if(isset($_POST) && isset($_POST'nom'])
&& isset($_POST'prenom'])
&& isset($_POST'email'])
&& isset($_POST'adresse'])
&& isset($_POST'ville'])
&& isset($_POST'cp'])
&& isset($_POST'tel'])
&& isset($_SESSION'info'])){
if(!empty($_POST'nom'])
&& !empty($_POST'prenom'])
&& !empty($_POST'email'])
&& !empty($_POST'adresse'])
&& !empty($_POST'ville'])
&& !empty($_POST'cp'])
&& !empty($_POST'tel'])){
/*echo "Page de récupération des données :<br><br>";*/
if (isset($_POST"perso"]))
/* la case est cochée */
$perso = $_POST"perso"];
else
$perso = "";
if (isset($_POST"ordi"]))
$ordi = $_POST"ordi"];
else
$ordi = "";
$perso = '0';
$ordi = '0';
$destinataire = "truc@machin.com";
$sujet = '=?UTF-8?B?'.base64_encode('Sujet : DEVIS EN LIGNE- VENTE').'?=';
$message = "
CE MESSAGE ET UN MESSAGE AUTOMATIQUE , ENVOYE DEPUIS LE SITE http://teaminformatique.com POUR LA DEMANDE DE DEVIS EN LIGNE, VEUILLEZ NE PAS REPONDRE. \n
Message de : ".$_POST'nom']." ".$_POST'prenom']." \n
Adresse email : ".$_POST'email']." \n
Adresse :".$_POST'adresse']." \n
Ville : ".$_POST'ville']." \n
Code postale :".$_POST'cp']." \n
Numéro :".$_POST'tel']." \n
Le demandeur est un ou une :".$_POST'perso']." \n
Ce qu'il recherche :".$_POST'ordi']." \n
Informations supplémentaires :".$_POST'info']."
" ;
$entete = 'From: '.$_POST'email']."\r\n".
'Reply-To: '.$_POST'email']."\r\n".
'X-emailer: PHP/'.phpversion();
$entete .='Content-Type: text/plain; charset="utf-8"'." "; // ici on envoie le email au format texte encodé en UTF-8
$entete .='Content-Transfer-Encoding: 8bit'; // ici on précise qu'il y a des caractères accentués
$entete .= "MIME-Version: 1.0";
if (email($destinataire,$sujet,$message,$entete)){
header("location:http://monsite.com/");
} else {
echo "Une erreur est survenue lors de l'envoi du formulaire par email";
}
}else{
echo "Erreur 1";
}else{
echo "Erreur 2";
}
}
} ?>
Par contre j'ai utiliser cette envoie de mail avec un autre système et la redirection fonctionnais bien :/
Oui sauf pour la fin
if (email($destinataire,$sujet,$message,$entete)){
header("location:http://monsite.com/");
} else {
echo "Une erreur est survenue lors de l'envoi du formulaire par email";
}
}else{
echo "Erreur 1";
}
}else{
echo "Erreur 2";
} ?>
Je te remercie jo-jo (je te le remet au cas ou tu n'ai pas vu car mon messge et remonté) tu m'a été d'une grande aide !
Bonjour.
Ouch, j'ai failli m'arracher les yeux en lisant tout ça.
Qu'est-ce que tout ces session_start() , cet envoi de mail et tout le reste tout en utilisant CakePHP ?
Il n'y a plus aucune logique d'utiliser un Framework sans en utiliser les outils de bases fournis.