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&eacute;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&eacute;l&egrave;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>&nbsp;</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&eacute;l&egrave;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 ?