PB de Reception d'Email Forumlaire PHP

Signaler
Messages postés
17
Date d'inscription
lundi 20 septembre 2004
Statut
Membre
Dernière intervention
21 septembre 2009
-
Messages postés
17
Date d'inscription
lundi 20 septembre 2004
Statut
Membre
Dernière intervention
21 septembre 2009
-
bonjour les gens ^^
Je rencontre un probleme vraiment curieux avec mon formulaire . :

j'envoie des variables via un formulaire HTML (contact.html)
vers un script php (result.php)

j'ai un probleme avec le composant Select :
Quand je teste la page en ligne je coche " question " en motif de message, et tout marche comme il faut La page resul saffiche correctement et lemail m'est envoyé.
MAIS quand je clique sur "remarque", la page result s'affiche correctement, MAIS je ne RECOIS PAS l'EMAIL !!!!

Voici le lien :
http://musekyo.free.fr/bg/pages/contact.html

ps : notez au passage que la variable $prevenir ne sert a rien (dans result.php), jaimerais l'enlever mais quand je le fais, ca fait tout clocher

et voici le code php de la page result.php :
**********************************************************

PHP :


<? 
  $nom=trim($nom); 
  $email=trim($email); 
  $prenom=trim($prenom); 
  $commentaires=trim($commentaires); 
  $sortes=trim($sortes); 
  $adresse=trim($adresse); 
  $adresse2=trim($adresse2); 
   
  if (empty($email)) //test pour savoir si le champ mail est vide 
      { 
      $texte= "Vous devez remplir le champ email, Retournez &#224; la page pr&#233;c&#233;dente merci"; 
      } elseif (!ereg("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $email)) //test le contenu de mail pour conformit&#233; ereg pour expression reguli&#232;re 
      { 
         $texte= "Vous n'avez pas entr&#233; une adresse email valide. Retournez &#224;" 
                 ." la page pr&#233;c&#233;dente et essayez &#224; nouveau."; 
      } 
    else 
    { 

  //adresse &#224; laquelle le message sera exp&#233;di&#233;e 
  $toaddress = "mon_email@machin.com";  // l'email ou sera expedi&#233; le formulaire 

  //sujet du message 
  $subject = "Commentaires"; 
  //corps du message 
    if (! isset($prevenir)) //correspond &#224; si la variable prevenir n'est pas affect&#233; 
                            //le ! devant correspond &#224; la n&#233;gation 
  { 
        $prevenir="non"; //alors on la cr&#233;e et on lui donne la valeur "non" 
  } 
  $mailcontent = "Sorte de commentaires: ".$sortes."\n" 
              ."Sujet: ".$sujet."\n" 
              ."Nom: ".$nom."\n" 
              ."Pr&#233;nom: ".$prenom."\n" 
              ."email: ".$email."\n" 
              ."Adresse: ".$adresse."\n" 
              ."Adresse2: ".$adresse2."\n" 
              ."Commentaires: \n".$commentaires."\n" 
              ."Le prevenir: \n".$prevenir."\n"; 
  //adresse du serveur 
  $fromaddress = "webserver@bg.com"; 

  mail($toaddress, $subject, $mailcontent, $fromaddress);   
$texte="Merci, votre email a bien &#233;t&#233; envoy&#233;. Nous vous r&#233;pondrons tr&#232;s bient&#244;t"; 

  } 
?> 


************************************************** ***
En esperant qu'il y aura un genie pour trouver la solution, je vous remercie d'avance !!!

kiarah

30 réponses

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,



tu devrais relire des tutos sur les formulaires et php, ton code manque
de beaucoup de choses. Notamment, on recupere les variables d'un
formulaire POST avec ces variables :

$_POST['email'] (par exemple).

Il faut aussi tester la soumission de ton formulaire.

Enfin, ton select n'a aucune valeur (<option value="...?">blabla</option>)
Messages postés
17
Date d'inscription
lundi 20 septembre 2004
Statut
Membre
Dernière intervention
21 septembre 2009

Euh....merci pour tes conseils mais ca m'aide pas bcp... car je suis pas une pro du php, et je vois tjs pas comment resoudre mon pb. Je sais meme pas comment faire ce que tu a ecrit, etc...Tout est flou dans mon esprit... Je suis nulle hein? mais je demande qu'à apprendre !

kiarah
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Je pense que tu devrais commencer par mettre les valeurs correctes a
tes balises <option> dans ton <select> (en bref, tu laisses
comme c'est, et tu ajoues value="remarque" pour l'une, et
value="question" pour l'autre.
Messages postés
17
Date d'inscription
lundi 20 septembre 2004
Statut
Membre
Dernière intervention
21 septembre 2009

euh..je veux bien mais c koi la syntaxe pour la value? Oou dois-je la mettre ?
[php]
<select name="sortes" id="select3">
<option>remarque</option>
<option>question</option>
</select>
/PHP
kiarahkiarah
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Bah je te l'ai mise, tu n'y mets pas du tien ;-)




<select name="sortes" id="select3">


<option value="remarque">remarque</option>


<option value="question">question</option>

</select>
Messages postés
17
Date d'inscription
lundi 20 septembre 2004
Statut
Membre
Dernière intervention
21 septembre 2009

lol, si mais j't'ai di, j'suis pommée et jai tellement peur que ca marche pas.
jai rajouté value comme tu a ecris...Malheuresement, pas de changement :
Quand je clique sur "question" : tout va bien et je recois l'email
Mais quand je clique "remarque", je ne recois pas l'email...c dingue !

Tu a une autre idée?

kiarah
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hmmm, je ne les vois pas, la, les value= "...", sur ta page ?



Ensuite...dans ton code php, plusieurs choses :

ON utilise $_POST['variable'] pour recuperer les variables provenant
d'un formulaire envoye avec la methode post. Je veux dire par la que
ceci :

$nom=trim($nom); 

n'est pas bon. Ce doit etre :

$_POST['nom'] = trim (
$_POST['nom']);

Ou si tu tiens a avoir des variables plus simples :

$nom = 
= trim 
($_POST['nom']);


Avant tout, on teste le submit, et enleve les espaces dans le name de
ton submit, ainsi que dans sa value (pour centrer avoir un espacement,
lol, utilise encore des styles : margin: 5px; par exemple) :

if (isset ($_POST[' ok ']) && $_POST['ok'] =='Envoyez') {

tout ton code

}



Et le principe est le meme pour toutes variables, teste les avant de les utiliser. Donc avant de te servir de $sortes:

if (isset ($_POST['sortes'])) {

}



Tu peux utiliser directement les $_POST['machin'] sans passer par des variables intermediaires
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Heu g mis un = en trop ici :

 $nom = 
= trim 
($_POST['nom']);

evidemment ;-)

ce doit etre :

 $nom =
 trim 
($_POST['nom']);
Messages postés
17
Date d'inscription
lundi 20 septembre 2004
Statut
Membre
Dernière intervention
21 septembre 2009

Alors,
- jai remi comme ta dit les
$nom =
 trim 

($_POST['nom']); 
dans result

- et enlever les espace du submit dans contact

Par contre, ca :

if (isset ($_POST[' ok ']) && $_POST['ok'] = ='Envoyez') {
tout mon code
}
Jai essayé de le mettre mais qd je teste, result marche meme plus....j'men sort pas :'(

kiarah
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Bon remets ton result completement ici, je corrige.
Messages postés
17
Date d'inscription
lundi 20 septembre 2004
Statut
Membre
Dernière intervention
21 septembre 2009

[PHP]
<?
$nom = trim ($_POST['nom']);
$email = trim ($_POST['email']);
$prenom = trim ($_POST['prenom']);
$commentaires = trim ($_POST['commentaires']);
$sortes = trim ($_POST['sortes']);
$adresse = trim ($_POST['adresse']);
$adresse2 = trim ($_POST['adresse2']);

if (empty($email)) //test pour savoir si le champ mail est vide
{
$texte= "Vous devez remplir le champ email, Retournez à la page précédente merci";
} elseif (!ereg("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $email)) //test le contenu de mail pour conformité ereg pour expression regulière
{
$texte= "Vous n'avez pas entré une adresse email valide. Retournez à"
." la page précédente et essayez à nouveau.";
}
else
{


//adresse à laquelle le message sera expédiée
$toaddress = "[mailto:kiarah27@aol.com kiarah27@aol.com]"; // l'email ou sera expedié le formulaire


//sujet du message
$subject = "Commentaires";
//corps du message
if (! isset($prevenir)) //correspond à si la variable prevenir n'est pas affecté
//le ! devant correspond à la négation
{
$prevenir="non"; //alors on la crée et on lui donne la valeur "non"
}
$mailcontent = "Sorte de commentaires: ".$sortes."\n"
."Sujet: ".$sujet."\n"
."Nom: ".$nom."\n"
."Prénom: ".$prenom."\n"
."email: ".$email."\n"
."Adresse: ".$adresse."\n"
."Adresse2: ".$adresse2."\n"
."Commentaires: \n".$commentaires."\n"
."Le prevenir: \n".$prevenir."\n";
//adresse du serveur
$fromaddress = "[mailto:webserver@bg.com webserver@bg.com]";


mail($toaddress, $subject, $mailcontent, $fromaddress);
$texte="Merci, votre email a bien été envoyé. Nous vous répondrons très bientôt." ;


}
?>/PHP

kiarahkiarah
Messages postés
17
Date d'inscription
lundi 20 septembre 2004
Statut
Membre
Dernière intervention
21 septembre 2009

je reve, ca met meme plus la mise en page ave les couleurs du script !! beurk !

kiarah
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
<?
if (isset ($_POST['ok']) && $_POST['ok'] === 'Envoyer') { // ici, il faut remplacer ok par les bons noms et valeur : ok est le nom du bouton submit, Envoyer est sa valeur
if (isset ($_POST['nom']))
$nom = trim ($_POST['nom']);
if (isset ($_POST['email']))
$email = trim ($_POST['email']);
if (isset ($_POST['prenom']))
$prenom = trim ($_POST['prenom']);
if (isset ($_POST['commentaires']))
$commentaires = trim ($_POST['commentaires']);
if (isset ($_POST['sortes']))
$sortes = trim ($_POST['sortes']);
if (isset ($_POST['adresse']))
$adresse = trim ($_POST['adresse']);
if (isset ($_POST['adresse2']))
$adresse2 = trim ($_POST['adresse2']);

if (empty($email)) //test pour savoir si le champ mail est vide
{
$texte= "Vous devez remplir le champ email, Retournez à la page précédente merci";
}
elseif (!ereg("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $email)) //test le contenu de mail pour conformité ereg pour expression regulière
{
$texte= "Vous n'avez pas entré une adresse email valide. Retournez à"
." la page précédente et essayez à nouveau.";
}
else
{
//adresse à laquelle le message sera expédiée
$toaddress = "[mailto:kiarah27@aol.com kiarah27@aol.com]"; // l'email ou sera expedié le formulaire


//sujet du message
$subject = "Commentaires";
//corps du message
if (!isset($_POST['prevenir'])) //correspond à si la variable prevenir n'est pas affecté
//le ! devant correspond à la négation
{
$prevenir="non"; //alors on la crée et on lui donne la valeur "non"
}
$mailcontent = "Sorte de commentaires: ".$sortes."\n"
."Sujet: ".$sujet."\n"
."Nom: ".$nom."\n"
."Prénom: ".$prenom."\n"
."email: ".$email."\n"
."Adresse: ".$adresse."\n"
."Adresse2: ".$adresse2."\n"
."Commentaires: \n".$commentaires."\n"
."Le prevenir: \n".$prevenir."\n";
//adresse du serveur
$fromaddress = "[mailto:webserver@bg.com webserver@bg.com]";


mail($toaddress, $subject, $mailcontent, $fromaddress);
$texte="Merci, votre email a bien été envoyé. Nous vous répondrons très bientôt." ;


}
}
?>

essaye ca...mais c'est complique, la page est longue lol. J'espere ne rien avoir oublie.
Messages postés
17
Date d'inscription
lundi 20 septembre 2004
Statut
Membre
Dernière intervention
21 septembre 2009

bon...merci de ton code
Je lai testé mais malheuresement la page result n'affiche plus de message et biensur...en plus, ca n'envoie pas de mail...

so ?????? (qu'est ce que c enervanttttt !!)

kiarahkiarah
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Bon, un tuto rapide lol :



<?php

echo '<form method ="post" action ="',$_SERVER['PHP_SELF'],'">';

echo '<select name="nomListe">';

echo '<option value="note">par note</option>';

echo '<option value="vote">par vote</option>';

echo '</select>';

echo '';

echo '</form>';



if (isset ($_POST['submit']) && $_POST['submit'] === 'trier') {

if (isset ($_POST['nomListe'])) {


$select_all=mysql_query('SELECT note, vote FROM '.$table.' ORDER BY
'.$_POST['nomListe'].'');

}

}

?>



Voici comment on doit traiter un formulaire en php.

Essaye d'adapter
Messages postés
17
Date d'inscription
lundi 20 septembre 2004
Statut
Membre
Dernière intervention
21 septembre 2009

kiarahkiarah
Messages postés
17
Date d'inscription
lundi 20 septembre 2004
Statut
Membre
Dernière intervention
21 septembre 2009

kiarahkiarah
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
lol...ouiiii ? Probleme avec le forum...?
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
La requete etait juste un exemple d'utilisationb des variables recuperees depuis un formulaire :-)





Bon, j'ai repris, et effectue qques modifications (sans plus hein)
juste pour voir: cela fonctionne. La j'ai juste mis ca sur la meme page
(d'ou l'action du formulaire qui a change), et je fais un echo au lieu
du mailto :





Messages postés
17
Date d'inscription
lundi 20 septembre 2004
Statut
Membre
Dernière intervention
21 septembre 2009

euh.....j'ai du mal, ca veut dire que je dois tout mettre sur une meme page?

Au depart, jai mis ton code FORM ds mon contact et le php ds mon RESULT...mais le resultat en ligne c'est du n'importe quoi, donc jai pas du faire ca comme il faut ....
pffffff

kiarah