Page 1 sur 2
Formulaire: problème avec les cases à cocher !
Posté : 08 mai 2006, 18:47
par Stegue
Bonjour,
J'ai un soucis avec mon formulaire:
Il comprend:
1 champ texte: email
1 champ texte: pseudo
et 3 cases à cocher correspondant chacun à un texte différent qui sera envoyé à l'email suivant la case cochée.
Le problème c'est que dans chaque texte des cases à cocher, j'appele le champ texte "pseudo", mais ce champ n'apparait pas dans l'email envoyé.
ex: une case à cocher:
<?<input name="texte" type="checkbox" id="texte" value="<?php echo "$texte1"; ?>" />
Et le texte1, c'est ça:
$texte1= "Bonjour,
Bravo, votre citation sera prochainement dans la base de données des citations
perso sous le pseudo ".$_POST["titre"]." .
titre= champ pseudo
Posté : 08 mai 2006, 18:49
par charabia
Il te faut enlever les "" autour de ta variable. A quoi correspond ton <? au début de ton champ input ? Une erreur je pense.
<input name="texte" type="checkbox" id="texte" value="<?php echo $texte1; ?>" />
$texte1= "Bonjour,
Bravo, votre citation sera prochainement dans la base de données des citations
perso sous le pseudo ".$_POST["titre"];
Posté : 08 mai 2006, 19:07
par Stegue
J'ai bein enlevé les guillemets mais c'est toujours pareil.
<?php echo $texte1; ?>
Posté : 08 mai 2006, 19:10
par charabia
As-tu modifié $texte1 aussi ? Si ça ne marche toujours pas, essaies de mettre $texte1="test"; pour tester.
La valeur du pseudo récupéré par POST a t-elle des ' ou " ? C'est une source d'erreur possible.
Posté : 08 mai 2006, 19:36
par Stegue
Ca marche avec test mais même en supprimant tous les ' et " des POST, c'est pareil.
Posté : 08 mai 2006, 20:39
par charabia
Reçois-tu une valeur pour $_POST["titre"]; ?
Si oui, essaies d'enlever les retours chariot :
$texte1= "Bonjour, bravo, votre citation sera prochainement dans la base de données des citations perso sous le pseudo ".$_POST["titre"];
Posté : 08 mai 2006, 20:52
par Stegue
Non, je ne la reçoie pas:
"Bonjour, bravo, votre citation sera prochainement dans la base de données des citations perso sous le pseudo ."
Posté : 08 mai 2006, 20:53
par charabia
Ton problème se situe donc ailleurs.
Montres nous ton code complet.
Posté : 08 mai 2006, 21:00
par Stegue
Le Voilà:
<?php //merci pour votre citation
$email_webmaster = "Citation à la Con";//// indiquer votre adresse email /////
$message = $_POST[texte];
$texte1= "Bonjour,
bravo, votre citation sera prochainement dans la base de données des citations perso sous le pseudo ".$_POST["titre"];
$texte2= "Bonjour,
Désolé, mais votre citation est déjà dans la liste.
Mais, en cherchant bien, nous sommes sûrs que vous allez bientôt faire parti de la grande famille des citateurs perso.";
$texte3= "Bonjour,
Et merci, cette citation de ".$_POST[titre]. " sera prochainement dans la base de données des citations
célèbres.";
// === traitement des données du formulaire ============================================================
if (isset($_POST[envoyer])){
// le formulaire a été soumis
$etat = "erreur";
// Valeur par défaut. Prendra la valeur "ok" s'il n'y a pas d'erreur
// --- mise en forme des champs saisis dans le formulaire lors de sa soumission ---
if (isset($_POST[email_expediteur])) {
$_POST[email_expediteur]=trim(stripslashes($_POST[email_expediteur]));
}
if (isset($_POST[titre])) {
$_POST[titre]=trim(stripslashes($_POST[titre]));
}
// --- test de la validité des champs saisis ---
if (empty($_POST[email_expediteur])) {
// il manque l'email de l'expéditeur
$erreur="Saisissez votre adresse email...";
}
elseif (!eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,3}$",$_POST[email_expediteur])){
// l'adresse e-mail n'est pas valide
$erreur="Votre adresse e-mail n'est pas valide...";
}
else {
// --- tous les champs sont correctement remplis: on pourra envoyer le mail ---
$etat="ok";
}
}
else {
// --- le formulaire n'a pas été soumis ---
$etat="attente";
}
// === fin de traitement des données du formulaire =======================================================
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="fr" lang="fr" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Formulaire de remerciement</title>
</head>
<body>
<div align="center">
<h1> </h1>
<h1> </h1>
<h1> </h1>
<?php
if ($etat!="ok"){// le formulaire n'a pas été soumis, ou soumis avec une erreur
if ($etat=="erreur"){
//le formulaire a été soumis avec une erreur
echo "<p><strong>".$erreur."</strong></p>\n";
// afficher le message d'erreur
}
?>
<form method="post" action="<?php echo $_SERVER[PHP_SELF]; ?>">
<h2>Remerciement de l'expéditeur </h2>
<!-- mettre le nom de votre site ou autre -->
<blockquote>
<p>
<label for="email_expediteur"> E-mail:</label>
<br />
<input name="email_expediteur" type="text" class="minuscule" id="email_expediteur" value="<?php
if (!empty($_POST[email_expediteur])) {
// l'adresse email de l'expéditeur a été saisie: la réafficher
echo htmlspecialchars($_POST[email_expediteur],ENT_QUOTES);
}
?>" size="50" />
</p>
<p>
<label for="titre">Pseudo</label>
ou Auteur célèbre <br />
<input type="text" size="50" name="titre" id="titre" value="<?php
if (!empty($_POST[titre])) {
// le titre du message a été saisi: le réafficher
echo htmlspecialchars($_POST[titre],ENT_QUOTES);
}
?>" />
</p>
<p>
<label></label>
<label>
<input name="texte" type="checkbox" id="texte" value="<?php echo $texte1; ?>" />
Merci pour votre citation</label>
</p>
<p>
<label>
<input name="texte" type="checkbox" id="texte" value="<?php echo $texte2; ?>" />
Désolé, cette citation existe déjà</label>
</p>
<p>
<label>
<input name="texte" type="checkbox" id="texte" value="<?php echo $texte3; ?>" />
Merci pour cette citation de...</label>
</p>
<div align="center">
<p>
<input name="envoyer" type="submit" id="envoyer" value="Envoyer" />
</p>
<p> </p>
</div>
<p><br />
</p>
</blockquote>
</form>
<?php
}
else {
// le formulaire a été soumis sans erreur, on envoie le mail
$entete = "From: \"Citation à la Con\"<[email protected]> \n";
$entete .= "MIME-Version: 1.0";
if (@mail($_POST[email_expediteur],"envoi d'une citation", $message ,$entete)){
// mail envoyé
echo "Votre message a été envoyé.<br />\n";
echo "<a href=\"".$_SERVER[PHP_SELF]."\">Retour...</a>\n";
}
else {
// erreur lors de l'envoi du mail
echo "Un problème s'est produit lors de l'envoi du message.\n";
echo "<a href=\"".$_SERVER[PHP_SELF]."\">Réessayez...</a>\n";
}
}
?>
</body>
</html>
Posté : 08 mai 2006, 21:04
par charabia
Vu rapidement, tu as des erreurs : oublie de ''.
Exemple :
$_POST[titre]
devient
$_POST['titre']
Idem pour les autres déclarations.
Posté : 08 mai 2006, 21:15
par Stegue
J'ai remis les ' mais... nan.
Posté : 08 mai 2006, 21:24
par charabia
Quel est donc le formulaire qui te permet de récupérer $_POST['titre']; ?
Posté : 08 mai 2006, 21:41
par Stegue
Ben celui là. Y'a le même pou l'email et ça marche bien.
<label for="titre">Pseudo</label>
ou Auteur célèbre <br />
<input type="text" size="50" name="titre" id="titre" value="<?php
if (!empty($_POST['titre'])) {
// le titre du message a été saisi: le réafficher
echo htmlspecialchars($_POST['titre'],ENT_QUOTES);
}
Posté : 09 mai 2006, 10:30
par charabia
Lorsque tu fais :
$email_webmaster = "Citation à la Con";//// indiquer votre adresse email /////
if(isset($_POST['texte']))
$message = $_POST['texte'];
else
$message = 'erreur';
if(isset($_POST['titre']))
$titre = $_POST['titre'];
else
$titre = 'erreur';
$texte1= "Bonjour,<br /><br />bravo, votre citation sera prochainement dans la base de données des citations perso sous le pseudo ".$titre;
$texte2= "Bonjour,<br /><br />Désolé, mais votre citation est déjà dans la liste.
Mais, en cherchant bien, nous sommes sûrs que vous allez bientôt faire parti de la grande famille des citateurs perso.";
$texte3= "Bonjour,<br /><br />Et merci, cette citation de ".$titre." sera prochainement dans la base de données des citations
célèbres.";
Les variables n'existent pas au départ.
Quand tu valides ton formulaire, $message et $titre vont bien prendre la valeur de tes champs.
Le problème c'est que lors de ton envoi de mail tu affiches $message qui, à ce moment n'a pas la variable "titre", c'est pour ça que c'est vide.
Si tu affiches $texte1, tu verras bien le pseudo apparaître.
Posté : 09 mai 2006, 18:22
par Stegue
Exact. Avec $texte1, le pseudo apparait bien.
Mais crois-tu qu'il y a une solution pour ce formulaire ou ai-je tout à refaire ?