Bonjour, j'ai un formulaire qui ne marche pas j'arrive pas à trouver le probleme, je debute, je teste en local rien ne marche et chez mon hebergeur c'est pareil, aui ovh il me dit que la version du php de mon compte est php 5.4.
voici mon code php
<?php

//Recuperation des variables
$name=$_POST['name'];
$telephone=$_POST['telephone'];
$email=$_POST['email'];
$adresse=$_POST['adresse'];
$etage=$_POST['etage'];

$ascenceur=$_POST['ascenceur'];
$message=$_POST['message'];

// Envoi du mail normal
//-----------------------
$texte_message .="Bonjour, demande de ramassage remplie sur le site web de .\r\n";
$texte_message .="Notre demande :". $name."\r\n";
"Notre message :" . $message."\r\n";
$texte_message .="------------------------------------------\r\n";
$texte_message .="Notre adresse :" . $adresse."\r\n";
$texte_message .="Téléphone :" . $telephone."\r\n";
$texte_message .="etage :" . $etage."\r\n";
$texte_message .="------------------------------------------\r\n".
$texte_message .="Je vous remercie pour votre confiance et votre visite sur notre site.\r\n";
$texte_message .="A très bientôt.\r\n";

$ok_mail = mail("in@merci.es","Demande venant du site web ","$texte_message");

// Envoi du mail client
//-----------------------

$texte .="Bonjour" . "\r\n";
$texte .="Nous avons bien enregistré votre demande.\r\n";
$texte .="Celle-ci va être réceptionnée.\r\n";
$texte .="\r\n";
$texte .="Je vous remercie .\r\n";
$texte .="A très bientôt sur notre site.\r\n";
$texte .="\r\n";
$texte .="Nhésitez pas à nous contactez directement :\r\n";
$texte .="\r\n";
$texte .="Contacts : in@merci.es \r\n";

$mail_ok = mail("$adresse","Votre demande ",$texte);

if ($ok_mail) {
echo "mail parti";
} else {
echo "mail, pas parti";
}

if ($mail_ok) {
echo "mail client parti";
} else {
echo "mail client pas parti";
}

?>

Merci d'avance pour votre aide.

34 réponses


qui ne marche pas

pas très précis, erreur/problème exact ?

Donne nous l'erreur renvoyé

Lima
Auteur

Désolé pour le manque de precision, sur ohv, il n'ecrit l'ecran reste vide, ni message enovyé rien, mais en local j'utilise wamp, il affiche ca
( ! ) Notice: Undefined index: name in C:\wamp\www\Formulaire\formulairemail.php on line 5

Call Stack

Time Memory Function Location

1 0.0130 152840 {main}( ) ..\formulairemail.php:0

( ! ) Notice: Undefined index: telephone in C:\wamp\www\Formulaire\formulairemail.php on line 6
Call Stack

Time Memory Function Location

1 0.0130 152840 {main}( ) ..\formulairemail.php:0

( ! ) Notice: Undefined index: email in C:\wamp\www\Formulaire\formulairemail.php on line 7
Call Stack

Time Memory Function Location

1 0.0130 152840 {main}( ) ..\formulairemail.php:0

( ! ) Notice: Undefined index: adresse in C:\wamp\www\Formulaire\formulairemail.php on line 8
Call Stack

Time Memory Function Location

1 0.0130 152840 {main}( ) ..\formulairemail.php:0

( ! ) Notice: Undefined index: etage in C:\wamp\www\Formulaire\formulairemail.php on line 9
Call Stack

Time Memory Function Location

1 0.0130 152840 {main}( ) ..\formulairemail.php:0

( ! ) Notice: Undefined index: ascenceur in C:\wamp\www\Formulaire\formulairemail.php on line 11
Call Stack

Time Memory Function Location

1 0.0130 152840 {main}( ) ..\formulairemail.php:0

( ! ) Notice: Undefined index: message in C:\wamp\www\Formulaire\formulairemail.php on line 12
Call Stack

Time Memory Function Location

1 0.0130 152840 {main}( ) ..\formulairemail.php:0

( ! ) Notice: Undefined variable: texte_message in C:\wamp\www\Formulaire\formulairemail.php on line 19
Call Stack

Time Memory Function Location

1 0.0130 152840 {main}( ) ..\formulairemail.php:0

( ! ) Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\wamp\www\Formulaire\formulairemail.php on line 34
Call Stack

Time Memory Function Location

1 0.0130 152840 {main}( ) ..\formulairemail.php:0
2 0.0170 155056 mail ( ) ..\formulairemail.php:34

( ! ) Notice: Undefined variable: texte in C:\wamp\www\Formulaire\formulairemail.php on line 41
Call Stack

Time Memory Function Location

1 0.0130 152840 {main}( ) ..\formulairemail.php:0

( ! ) Warning: mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\wamp\www\Formulaire\formulairemail.php on line 52
Call Stack

Time Memory Function Location

1 0.0130 152840 {main}( ) ..\formulairemail.php:0
2 1.0631 154952 mail ( ) ..\formulairemail.php:52
mail, pas partimail client pas parti

désole pour la longueur du message§

Lima
Auteur

Je ne recois rien à partir du serveur. Aussi l'ensemble du site est fait en html et un jsscript.

Merci

Regarde les erreurs, toutes tes variables n'éxiste pas. Quand tu as un problème avec php il suffit de regarder les erreurs et les corriger une par une. Il est très clair que tu as fais un copier coller d'un formulaire sur internet. De plus en local il te faut un serveur SMTP pour pouvoir envoyer des emails. Le seul conseil que je peux te donner c'est apprend à développer avec php.

Bonjour

Déjà le message indique que ces variables

$email=$_POST['email'];
$adresse=$_POST['adresse'];
$etage=$_POST['etage'];

$ascenceur=$_POST['ascenceur'];
$message=$_POST['message'];

ne sont pas définies soit qu'elle sont vide ce qui fait que tu ne doit pas récupérer correctement les variable en post.
Assures toi que les nom de tes champ (input) soit identique au nom des variable qui sont vide.
Ensuite

$texte_message .="Bonjour, demande de ramassage remplie sur le site web de .\r\n";

quand tu te sers de ".=" ça implique que tu remplie une variable au fur et à mesure. Or pour la remplir il faut d'abord la définir donc remplace cette ligne par

$texte_message ="Bonjour, demande de ramassage remplie sur le site web de .\r\n";

tu fais la même chose pour cette ligne la

$texte .="Bonjour" . "\r\n";

tu enlève le "." laisse juste "=" .

Corriges déjà tout ça et revien avec ton nouveau mesage d'erreur.
Tu n'en aura peut être pas mais je t'avoue que j'ai survolé tous les messages d'erreur donc je peux en avoir zappé.

Bon courage et bonne journée

Lima
Auteur

Merci pour les conseils. je vais m'y mettre tout de suite

Lima
Auteur

Re bonsoir, il n'y a pas de changement toujours les memes erreurs. J'ai verifié les noms de variables ligne par ligne et tout est identique.

Merci d'avance

Bonsoir.
Question :

  • Est-ce que le code que tu nous montre se situe sur la même page que ton formulaire ?

Si c'est le cas, il te faut faire une condition sur ce code, pour qu'il ne soit interprété que lorsqu'il intercepte des données postées via le formulaire.
Sinon, c'est sur que tu auras toujours ces erreurs, même si les index de $_POST correspondent entre le code PHP et le formulaire.

Salut Bintou Soumaoro. Stp, pour mieux regler ton problème, il faudra que tu nous montres le code du formulaire qui envoie les informations car apparemment c'est à ce niveau que se situe ton problème à mon avis.

Pour faire simple, supposons que tu aies deux pages formulaire.html et envoi-mail.php. Dans formulaire.html tu mets :

<form action="envoi-mail.php" method="POST"> //tes input avec l'attribut name ayant pour valeur le nom de la variable à poster.</form>

Puis tu sais quoi faire dans envoi-mail.php.... ;)

Lima
Auteur

D'accord, voici le code html , pour repondre à la question de Lartak oui, quand je finis de remplir le form et je clique sur envoyer donc c'est l'erreur qui s'affiche sur la page traitement.php

<form method="post" action="formulairemail.php" name="FormMail" enctype="text/plain">
<label>Nom et Prénom:</label>
<input name="name" size="50" type="text" autofocus placeholder="Votre nom complet">

                <label>Téléphone (mobile et/ou fixe):</label>
                <input name="telephone" size="50" type="text" placeholder="Votre numéro téléphone">
                <label>Email:</label>
                <input name="email" size="50" type="email" placeholder="Votre email ">

                <label> Adresse (N˚, Voie): </label>
                <input name="adresse"  type="text" size="50"> <br/>
                Etage <input name="etage" size="2" type="text">

    Ascenceur Oui <input name="ascenceur" value="OUI" type="radio"> Non <input name="ascenceur" value="NON" type="radio">
                <label height="5">A vous la parole :</label>
                <textarea name="message" placeholder="......"></textarea>
                <br> 
                &nbsp; &nbsp; &nbsp;
                <br/>
                                      <br />
    &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;   <input name="envoi" type="submit" Value="Envoyez" "50">
                                              <br />
                                              </form>

Il est où le code?

Lima
Auteur

tu dis traitement.php mais tu valide ton form sur formulairemail.php tu changes bien le bon fichier avec les modifs ?

Lima
Auteur

C'etait bien evidement traitement mais suite a tes suggestions j'ai renommée les é fichier source pour voir si ca allait avoir une difference. J'ai renommée le dossier contenant, mais c toujours les meme erreurs

Verifie bien la valeur de l'attribut action du formulaire. C'est formulairemail.php au lieu de traitement.php

Lima
Auteur

Oui c'est verifié toutes les lignes, si l'erreur s'affiche ce qu'il ya bien un accès sinon il allait mettre not found.

Ok. Je sais pas toi mais je viens de refaire lemême code et tout est OK

Lima
Auteur

Ok Santo, est ce tu as fait sur hebergeur particulier

le soucis vient pas de ton hébergeur mais de ton code .

fais un var_dump($_post) voir cequ'il te sort en faisant un die() juste après.
tout en haut de ton fichier de traitement.
S'il ne te met rien c'est que tu n'ai pas sur le bon fichier.

Lima
Auteur

J'ai une seule ligne maintenant = ( ! ) Parse error: syntax error, unexpected 'die' (T_EXIT) in C:\wamp\www\Formulaire\formulairemail.php on line 3

Lima
Auteur

J'ai corrigé la ligne et une autre erreur - ( ! ) Parse error: syntax error, unexpected '$name' (T_VARIABLE) in C:\wamp\www\Formulaire\formulairemail.php on line 9 alors qu'il n'ya aucune erreur de nom

Comme ceci :

var_dump($_POST);
die();

Et montres nous ce qu'il te retourne le var_dump (dans la balise code si possible : </>).

Lima
Auteur

J'ai mis var_dump($_POST);
die ();
L'erreur qui s'affiche est -
array (sise=0)
empty

L'erreur qui s'affiche est -
array (sise=0)
empty

Ce n'est pas une erreur, c'est le résultat/retour du var_dump.
S'il est vide, c'est que tu n'as aucune donnée postée.
Dans ton code de traitement, tu devrais faire une vérification au tout début pour vérifier si des données ont bien été postées, du genre :

if (empty($_POST)) {
    die('Aucune donnée récupérée !');
}

Le die pendant les tests bien sûr.

Lima
Auteur

C'est un peu bizarre car j'ai des données à l'interieur, j'ai rempli toutes les cases. Mais toujours le meme message

array (size=0)
  empty

T'es là Lima? Juste pour savoir si ton problème est reglé?

Lima
Auteur

Salut Santo ... Nop c'est oas reglé... je galère je vais refaire le code, le simplié, je verrai ce que ca donnera

Lima
Auteur

Coucou je reviens vers vous avec la version simple

Mon code html

<fieldset size="150" width="200px"> <legend> NOTRE FORMULAIRE</legend>
<form name="FormMail" action="formulairemail.php" method="POST" enctype="text/plain" >
<label> Nom Complet </label>
<input type="text" name="nom" size="30" autofocus placeholder="Nom svp">
<label> Téléphone </label>
<input type="text" name="telephone" size="30" autofocus placeholder="Téléphone svp">
<label> Email </label>
<input type="text" name="email" size="30" autofocus placeholder="votre email svp">
<label> Adresse </label>
<input type="text" name="adresse" size="30" autofocus placeholder="votre adresse svp">
<label> Etage </label>
<input type="text" name="etage" size="10" autofocus placeholder="">
Ascenceur Oui <input name="ascenceur" value="OUI" type="radio"> Non <input name="ascenceur" type="radio" value="NON"> <br/>
<textarea name="message" ></textarea>
<br/> <input name="envoie" type="submit" value="Envoyez">
</form>
</fieldset>

et le php la partie traitement

<?php
$nom=$_POST['nom'];
$telephone=$_POST['telephone'];
$adresse=$_POST['adresse'];
$email=$_POST['email'];
$etage=$_POST['etage'];
$ascenceur=$_POST['ascenceur'];
$message=$_POST['message'];

$headers = 'From: ' . "\r\n" .
'Reply-To: moi@moi.es' . "\r\n" .
'X-Mailer: PHP/' . phpversion();

"Le voici  :" . $message."\r\n";
$texte_message .="Notre adresse :" . $adresse."\r\n";

$texte_message .="Téléphone  :" . $telephone."\r\n";
$texte_message .="etage :" . $etage."\r\n";
$texte_message .="A très bientôt.\r\n";
 $ok_mail = mail("moi@moi.es","Demande venant du site ","$texte_message");
  $mail_ok = $mail("$adresse","Votre demande ",$texte);
 if ($ok_mail) {
echo "mail parti";
} else {
echo "mail,  pas parti";
}
if ($mail_ok) {
echo "mail client parti";
} else {
echo "mail client  pas parti";
}
?>
Lima
Auteur

Dans le resultat du traitement j'ai l'erreur sur la ligne 3 à 9 et puis 18? Sachant aue j'ai remplie la zone correctement. Et quand je fais un simple teste echo rien ne s'affiche sur le form.

Merci d'avance pour votre aide

Lima
Auteur

Merci Virax, est ce tu l'as fait sur un seul fichier.

Lima
Auteur

ca me donne cet erreur, je suppose que cela veut dire que c'est bon.

 Warning: mail(): Failed to connect to mailserver at &quot;localhost&quot; port 25, verify your &quot;SMTP&quot; and &quot;smtp_port&quot; setting in php.ini or use ini_set() in C:\wamp\www\Formulaire\formulairemail.php on line 38
Call Stack
#   Time    Memory  Function    Location
1   0.2050  150736  {main}( )   ..\formulairemail.php:0
2   0.3330  151920  mail ( )    ..\formulairemail.php:38
Lima
Auteur

TROP TOP mon probleme est resolu .. , merci a vous tous., il ne reste plus qu'a resoudre le probleme de d'accent.