Pb de formulaire mail lié à une variable GET

Résolu
melanijasmin Messages postés 4 Date d'inscription vendredi 24 novembre 2000 Statut Membre Dernière intervention 26 août 2005 - 24 août 2005 à 21:26
melanijasmin Messages postés 4 Date d'inscription vendredi 24 novembre 2000 Statut Membre Dernière intervention 26 août 2005 - 26 août 2005 à 00:09
salut à tous !
Je fais appel à vos lumières expertes, car je bloque depuis plusieurs jours sur un "%@!!& " de formulaire auquel je ne comprends plus rien !!!
Je pars d'une variable id transmise par GET, et qui me permet de récupérer un email dans ma bdd pour expédier le message du formulaire à son destinataire. Le formulaire indique à chaque fois que le message est bien parti, mais en réalité, il n'arrive en général pas dans la messagerie (il est quand même arrivé 3 fois sur 50 essai, c ce qui m'intrigue le plus !) Je n'y comprends plus rien du tout : pourtant, j'ai testé avec echo, et l'email est bien reconnu. Par ailleurs, le formulaire fonctionne si je rentre une adresse. Alors quel est le pb ???? Si vous pouviez jeter un petit coup d'oeil à mon code, histoire de voir....Voici mon code dernière version (mais j'ai testé plein plein de trucs ):

<?php
include("fonction/connection_data.php4");
include("fonction/mysql_func.php4");


connect();
$table="annonce";
$annonce=addslashes($annonce);


$id= $_GET["id"];// je récupère l'id


$sql2="SELECT email FROM $table WHERE nbrann='$id'"; //je sélectionne l'email correspondant à l'ID transmise par GET
$res2=mysql_query($sql2);



while ($affiche = mysql_fetch_array($res2))
$email=$affiche['email'];
{
if($Click == 'on') { // On a donc cliqué sur "Envoyer" dans le formulaire
$MonEmail = '$email';//C là qu'est le pb !!! L'email devrait apparaître là, mais apparemment ce n'est pas le cas. Pourtant, avec echo, ça marche !??
}
if (ereg ([mailto:'@' '@'], $mail)) { // Vérification de l'email
$domaine = split ([mailto:'@' '@'], $mail, 2);
$domaine = str_replace('>', '', trim ($domaine[1])); if (!checkdnsrr($domaine) OR $domaine '') $Erreur["mail"] 'L\'email saisie n\'existe pas !' ;
}
else $Erreur['mail'] = 'Veuillez saisir votre email correctement' ;


if(!isset($Erreur)) { // il n'y a pas d'erreur
$SujetEmail = "Réponse à votre annonce" ; // sujet du formulaire
$MsgEmail = "Bonjour,\n" // contenu du email
."Un visiteur vient de répondre à votre annonce \n"
."------------------ Contenu ------------------\n"
."Pseudo : ".$pseudo."\n"
."Email : ".$mail."\n"
."Message : ".$message."\n"
."----------------------------------------------\n"
."" ;
$HeaderEmail = "From: ".$mail."" ;
mail($MonEmail, $SujetEmail, $MsgEmail, $HeaderEmail); //envoi d'un email au client
$Confirmation= TRUE ; // création pour écrire un message de confirmation
} // fermeture de (il n'y a pas d'erreur)
} // fermture de (On a donc cliqué sur "Envoyer")
?>
<small style="font-family:verdana, arial; font-size:1px; font-weight:bold;">
<FORM ACTION="<?php echo $PHP_SELF ; ?>" METHOD="post" NAME="formulaire">

<?php
if($Confirmation == TRUE) { // Il y a une confirmation
echo '----
'
.'Votre message a bien été envoyé, merci !, '
.'' ;
}
if($Erreur['mail'] !='') { // le champ email est vide
echo '----
'
.', '
.''.$Erreur['mail'].', '
.'' ;
}
?>
----

Email :&nbsp;,
,

<?php
if($Erreur['message'] !='') { // le champ message est vide
echo '----
'
.', '
.''.$Erreur['message'].', '
.'' ;
}
?>
----

Message :&nbsp;,
<TEXTAREA NAME="message" ROWS="5" COLS="30"><?php echo $message ; ?></TEXTAREA>,

----

,

</FORM>
</small>

6 réponses

melanijasmin Messages postés 4 Date d'inscription vendredi 24 novembre 2000 Statut Membre Dernière intervention 26 août 2005
26 août 2005 à 00:09
Merci mille fois J_G, mais finalement, j'ai pas eu à me servir de ton code : j'étais trés pressée d'avoir la solution aprés 3 jour d'arrachage de cheveux, alors j'ai pris le taureau par les cornes en remettant tout à plat. J'ai refais le formulaire, et apparemment, le pb venait de ce formulaire sans doute trop compliqué. Avec la nouvelle version, ça a marché du premier coup sans pb. Merci encore !
3
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
24 août 2005 à 21:54
$MonEmail = '$email';



Non, non !! ahhh!!!!... nooooooon.

Désolé, mais ça me rappelle des heures d'arrachage de cheuveux pour une erreur de syntaxe.



Dans ce que tu as écris, $MonEmail est une chaine de 6 caractères... C'est caractères sont : $, e, m, a, i et l...

Fais plutôt $MonEmail $email; ou $MonEmail "$email"; (même si c'est débile)

<hr size="2" width="100%"> Sinon, les variables $mail, $pseudo, $sujet ne sont pas définies dans ton code (mais peut-être ailleur?)

<hr size ="2" width= "100%"> $id = $_GET["id"];

!!! ATTENTION !!!

Imagine le cas où aucun id ne soit passé via l'url (sécurité du code)

$id = ( isset($_GET['id']) ? $_GET['id'] : null);

<hr size="2" width="100%">
0
melanijasmin Messages postés 4 Date d'inscription vendredi 24 novembre 2000 Statut Membre Dernière intervention 26 août 2005
24 août 2005 à 22:16
Merci J_G pour ces conseils, je prends note ! Pour les variables pseudo..etc, c vrai que pseudo n'est plus défini ! G tellement tripatouillé mon code !!! Mais bon, c pas ça qui bloque le formulaire.
Heeeelp !
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
24 août 2005 à 22:23
Et à propos de $MonEmail = '$email'; ??? C'est'y correcte ???
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
melanijasmin Messages postés 4 Date d'inscription vendredi 24 novembre 2000 Statut Membre Dernière intervention 26 août 2005
24 août 2005 à 22:35
Ben ça c'est une version parmis tant d'autres. J'avais déjà écrit la formule comme tu me l'as indiqué, mais comme ça marche pas, alors j'ai improvisé plein d'experiences comme ça '$email'; mais aussi comme ça '".$email"'; ou comme ça $email;... J'ai même essayé avec
echo:"$email"; Mais rien à faire !!!!
Pourtant ça ne doit pas être bien compliqué ! L'adresse s'affiche avec echo, alors comment la faire rentrer dans ce scgrodhtodhtqm de formulaire qu'est tout bête et qui me bloque tant !??? Merci pour votre attention ! ;-)
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
25 août 2005 à 00:53
Bon...

Fait un truc comme ça :



// Ta requète SQL

// Je pars du principe que plusiseur email ont banner=id

// et que tu veux faire une diffusion sur ces adresses


$sql = "SELECT email FROM $table WHERE nbrann='$id'";

$res = mysql_query($sql);



// Verifie que la requète est aboutie sur un résultat

// false : erreur mysql (echo mysql_error() serait bien)

// !mysql_num_rows... : pas de resultat correspondant à la requéte


if( $res==false or !mysql_num_rows($res) ) {

echo "BOUM !!! J'ai pas trouvé d'adresse mail dans ma base !?!";

} else {

// Construction des paramètres du message type

$msg = "ICI le corps du message type";

$sub = "ICI le sujet type de mon mail";

$head = "Et puis les entêtes qu'il vous faut";



// Pour chaque adresse mail trouvé par la requète :

while($email = mysql_fetch_assoc($res)) {

// Envois la sauce

mail( $email['email'], $sub, $msg, $head);

}

}
0
Rejoignez-nous