Pages :
Bonjour à tous !

Je viens de créer un site web et aimerait y ajouter un formulaire de devis en ligne. Pour cela, j'ai créer une page devis.php à l'aide de kompozer. Après l'avoir mis sur le serveur, la page apparaît parfaitement. Problème, je n'arrive pas à traiter le formulaire en php pour qu'il arrive directement sur ma boîte mail.
Lors de la création du formulaire sur Kompozer, j'ai renseigné les champs suivants :

- Methode : POST
- URL de l'action : envoi.php

J'ai donc ensuite créer ma page envoi.php et l'ai mise sur le serveur.

Mais quand on clique sur "envoyer", voici ce que cela affiche : Parse error: syntax error, unexpected '<' in /homez.713/energiebb/www/envoi.php on line 45


Je pense donc que le problème vient de ma page envoi.php. Voici le code que j'ai inséré :

<?php 
if(isset($_POST['submit'])) { 
$to = "didier.cognard2@wanadoo.fr"; 
$subject = "Devis en ligne"; 
$nom = $_POST['nom']; 
$prenom = $_POST['prenom']; 
$adresse = $_POST['adresse']; 
$cp = $_POST['cp']
$ville = $_POST['ville']
$@ = $_POST['@']
$tel = $_POST['tel']
$produit = $_POST['produit']
$qté = $_POST['qté']
$rem = $_POST['rem']

$body = "From: $nom\n @: $@\n prenom: $prenom\n adresse: $adresse\n 
echo "<center><font color=green><br><br><br><h2>Nous vous remercions pour votre demande et vous répondrons dans les meilleurs délais</h2></font><br><a href=/>Cliquez ici pour revenir à l'accueil</a></center>"; 
mail($to, $subject, $body); 
} else { 
echo "blarg!"; 
} 
?>


Merci par avance pour votre aide
Bonjour,
Il te manque plein de point-virgules:
$cp = $_POST['cp']
$ville = $_POST['ville']
$@ = $_POST['@']
$tel = $_POST['tel']
$produit = $_POST['produit']
$qté = $_POST['qté']
$rem = $_POST['rem']

et je pense que ton echo n'a rien à faire là, supprime ce que j'ai surligné en gras (c'est ce qui te fait ton problème de guillemet):
$body = "From: $nom\n @: $@\n prenom: $prenom\n adresse: $adresse\n 
[b]echo "[/b]<center><font color=green><br><br><br><h2>Nous vous remercions pour votre demande et vous répondrons dans les meilleurs délais</h2></font><br><a href=/>Cliquez ici pour revenir à l'accueil</a></center>";


EDIT: et je te déconseille fortement d'employer des accents dans les noms de variables PHP, je suis même pas sûr que ce soit correct
$qté = $_POST['qté']

je le changerais en :
$qte = $_POST['qté']


EDIT2: pareil pour les arobases, je suis pas sûr que ce soit autorisé, à vérifier:
$@ = $_POST['@']--> perso je ferais un truc genre: $adresse_mail = $_POST['adresse_mail'];
Modifié par GroquikMLV (02 Jul 2013 - 12:45)
Merci sincèrement pour votre aide. Malheuresement après modification des éléments que vous m'avez signalé comme incorrect, cela ne fonctionne toujours pas.
Oui bien sûr !

<?php 
if(isset($_POST['submit'])) { 
$to = "didier.cognard2@wanadoo.fr"; 
$subject = "Devis en ligne"; 
$nom = $_POST['nom']; 
$prenom = $_POST['prenom']; 
$adresse = $_POST['adresse']; 
$cp = $_POST['cp'];
$ville = $_POST['ville'];
$mail = $_POST['mail'];
$tel = $_POST['tel'];
$produit = $_POST['produit'];
$qte = $_POST['qte'];
$rem = $_POST['rem'];

$body = "From: $nom\n @: $@\n prenom: $prenom\n adresse: $adresse\n
<font color=green><br><br><br><h2>Nous vous remercions pour votre demande et vous répondrons dans les meilleurs délais</h2></font><br><a href=/>Cliquez ici pour revenir à l'accueil</a>"; 
mail($to, $subject, $body); 
} else { 
echo "blarg!"; 
} 
?>
Et est-ce que c'est toujours la même erreur ou est ce que ça a changé? Et à quoi correspond la fameuse ligne 45?
De plus, si tu as changé $@ en $mail, il faut aussi que tu le changes là:
$body = "From: $nom\n @:[b] $@[/b]\n prenom: $prenom\n adresse: $adresse\n
Voici le code html de mon formulaire (page enregistrée en .php). Peut-être que l'erreur provient de là.


<form method="post" action="envoi.php" name="Devis">Nom : <input size="80" name="nom" required=""><br>
              <br>
Prénom : <input size="77" name="prenom" required=""><br>
              <br>
Adresse : <input size="76" name="adresse" required=""><br>
              <br>
CP : <input size="5" name="cp" required="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ville : <input size="58" name="ville" required=""><br><br>Téléphone : <input size="10" name="tel" required="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; E-mail : <input size="46" name="mail" required=""><br>

              <br>
Produit souhaité : <input checked="checked" name="produit" value="Bois de chauffage en 0.50 cm" type="radio">Bois de chauffage en 0.50 cm<br>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp; <input name="produit" value="Bois de chauffage en 0.40 cm" type="radio">Bois de chauffage en 0.40 cm<br>

&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp; <input name="produit" value="Bois de chauffage en 0.33 cm" type="radio">Bois de chauffage en 0.33 cm<br>

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp; <input name="produit" value="Granulés" type="radio">Granulés<br>

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp; <input name="produit" value="Plaquette" type="radio">Plaquette forestière<br>

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp; <input name="produit" value="Piquets en Accacia" type="radio">Piquets de clôture en Accacia<br>

&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp; <input name="produit" value="Piquets en Chataîgner" type="radio">Piquets de clôture en Chataîgner<br>

              <br>
Quantité souhaitée : <input size="64" name="qte"><br>
              <br>

Remarques particulières :<br>
&nbsp;<textarea cols="63" rows="3" name="rem"></textarea><br>
              <br>
              <br>
              <br>
              <input name="ok" value="Envoyer" type="submit"><br>

            </form>
Le code de ton formulaire m'a l'air correct, même si apparemment kompozer rajoute plein de trucs inutiles (les &nbsp; partout notamment).

Peux-tu mettre l'intégralité du fichier envoi.php également?
Voici ma page envoi.php

<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
<title>Envoi.php</title>
<style type="text/css"></style>
<link rel="stylesheet" type="text/css" href="style.css" media="all">
<meta http-equiv="content-type"
content="Content-type:text/html;charset=iso-8859-1">
</head>
<body style="background-image: url(fondpage.jpg); width: 951px;"
width:="" margin:="" auto="">
<table style="text-align: left; height: 459px; width: 955px;" border="0"
cellpadding="2" cellspacing="2">
<tbody>
<tr align="center">
<td
style="vertical-align: middle; width: 949px; text-align: center;"> <img
style="width: 818px; height: 137px;"
alt="Exploitation forestière didier cognard" img="" src="header.jpeg"><br>
<big style="color: rgb(0, 184, 0); font-weight: bold;"><big><big><span
style="font-style: italic;">E</span>XPLOITATION
FORESTIERE DIDIER COGNARD</big></big></big><br>
<div
style="text-align: center; color: rgb(43, 183, 52); font-weight: bold; width: 950px;"><big><a
href="index.html"><span style="font-style: italic;">A</span>ccueil&nbsp;</a>&nbsp;
|&nbsp;&nbsp; <a href="NOS%20PRESTATIONS.html"><span
style="font-style: italic;">N</span>os prestations </a>&nbsp;
|&nbsp;&nbsp; <a href="nos%20produits.html"><span
style="font-style: italic;">N</span>os
produits</a>&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; <a
href="notre%20engagement%20bois%20buche.html"><span
style="font-style: italic;">N</span>otre engagement&nbsp; Bois
Bûche</a>&nbsp;&nbsp; |&nbsp;&nbsp;<span
style="font-style: italic; color: rgb(102, 60, 42);"> D</span><span
style="color: rgb(102, 60, 42);">emandez un devis !&nbsp;</span>&nbsp;
| <a href="informations%20pratiques.html"><span
style="font-style: italic; color: rgb(102, 60, 42);">C</span><span
style="color: rgb(102, 60, 42);">ontact</span></a></big><br>
</div>
</td>
</tr>
<tr>
<td style="vertical-align: top; width: 949px;"><br>
</td>
</tr>
<tr>
<td style="vertical-align: top; width: 949px; text-align: center;"><?php <?php
if(isset($_POST['submit'])) {
$to = "didier.cognard2@wanadoo.fr";
$subject = "Devis en ligne";
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$adresse = $_POST['adresse'];
$cp = $_POST['cp'];
$ville = $_POST['ville'];
$mail = $_POST['mail'];
$tel = $_POST['tel'];
$produit = $_POST['produit'];
$qte = $_POST['qte'];
$rem = $_POST['rem'];

$body = "From: $nom\n mail: $mail\n prenom: $prenom\n adresse: $adresse\n
<font color=green><br><br><br><h2>Nous vous remercions pour votre demande et vous répondrons dans les meilleurs délais</h2></font><br><a href=/>Cliquez ici pour revenir à l'accueil</a>";
mail($to, $subject, $body);
} else {
echo "blarg!";
}
?>
?><br>
</td>
</tr>
<tr style="color: rgb(164, 142, 125);">
<td style="vertical-align: top; width: 949px; text-align: center;"><span
style="color: rgb(138, 114, 111);">Exploitation Forestière Didier
COGNARD</span><span style="color: rgb(138, 114, 111);"> - Bel Air -
37340 CLERE
LES PINS</span><br style="color: rgb(138, 114, 111);">
<span style="color: rgb(138, 114, 111);">Tél : 02.47.24.95.17</span><a
style="color: rgb(138, 114, 111); font-style: italic;"
href="mailto:didier.cognard2@wanadoo.fr?subject=Message%20de%20notre%20site%20Internet">
- Nous
contacter par mail</a><br>
</td>
</tr>
<tr>
<td style="vertical-align: top; width: 949px; text-align: center;"><small><a
style="color: black;" href="Plan%20du%20site.html">Plan
du Site</a>&nbsp;&nbsp;&nbsp;&nbsp; | <a style="color: black;"
href="Mentionslegales.html">Mentions légales</a></small><br>
</td>
</tr>
</tbody>
</table>
<br>
<br>
</body>
</html>
Ton problème ne viendrait-il pas de là, avec deux balises PHP:
</tr>
<tr>
<td style="vertical-align: top; width: 949px; text-align: center;"><?php <?php
if(isset($_POST['submit'])) {

Essaie d'en enlever une balise <?php
Voici deux nouvelles fautes de frappes que j'ai relevé. Si cela ne fonctionne toujours pas, il faut que tu regardes la ligne 45 de ton fichier envoi.php et que tu la marques sur le forum pour qu'on puisse la voir, sinon, on ne sait pas d'où vient le problème. (car sur ce que tu as psoté apparemment il y a des sauts de lignes, donc on ne peut pas savoir à quoi cette ligne 45 correspond)

première modification à essayer:
} else {
echo "blarg!";
}
?>      ------> ici il y a une fermeture "?>" en trop sur ces deux lignes
?><br>
</td>
</tr>
<tr style="color: rgb(164, 142, 125);">

Seconde modification à essayer:
modifier le <a href=/> par <a href='#'>
$body = "From: $nom\n mail: $mail\n prenom: $prenom\n adresse: $adresse\n
<font color=green><br><br><br><h2>Nous vous remercions pour votre demande et vous répondrons dans les meilleurs délais</h2></font><br><a href=/>Cliquez ici pour revenir à l'accueil</a>";
Comment puis-je connaître le n° de la ligne ? Dans Kompozer, je n'ai aucun numéro Smiley decu Est-ce une fonctionnalité ou un paramètre à activer ?

Un grand merci pour votre aide.
Oui, un collègue m'a dit que kompozer ne gérait pas les numéro de ligne.
Dans ce cas, ouvre ton fichier envoi.php généré par kompozer avec un bloc note lambda, et compte les lignes une par une... Je sais c'est galère, mais je ne vois que ça... A moins que tu n'aies un autre éditeur qui affiche les lignes, comme par exemple notepad++, dans ce cas ouvre ton fichier avec et tu sauras directement quelle ligne pose problème.
J'ai remplacé mon code php pour voir si cela changeait quelque chose... Et voici mon nouveau message d'erreur : Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /homez.713/energiebb/www/envoi.php on line 55

<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
<title>Envoi.php</title>
<style type="text/css"></style>
<link rel="stylesheet" type="text/css" href="style.css" media="all">
<meta http-equiv="content-type"
content="Content-type:text/html;charset=iso-8859-1">
</head>
<body auto="" margin:="" width:=""
style="background-image: url(fondpage.jpg); width: 951px;">
<table style="text-align: left; height: 459px; width: 955px;" border="0"
cellpadding="2" cellspacing="2">
<tbody>
<tr align="center">
<td
style="vertical-align: middle; width: 949px; text-align: center;"> <img
style="width: 818px; height: 137px;"
alt="Exploitation forestière didier cognard" img="" src="header.jpeg"><br>
<big style="color: rgb(0, 184, 0); font-weight: bold;"><big><big><span
style="font-style: italic;">E</span>XPLOITATION
FORESTIERE DIDIER COGNARD</big></big></big><br>
<div
style="text-align: center; color: rgb(43, 183, 52); font-weight: bold; width: 950px;"><big><a
href="index.html"><span style="font-style: italic;">A</span>ccueil&nbsp;</a>&nbsp;
|&nbsp;&nbsp; <a href="NOS%20PRESTATIONS.html"><span
style="font-style: italic;">N</span>os prestations </a>&nbsp;
|&nbsp;&nbsp; <a href="nos%20produits.html"><span
style="font-style: italic;">N</span>os
produits</a>&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; <a
href="notre%20engagement%20bois%20buche.html"><span
style="font-style: italic;">N</span>otre engagement&nbsp; Bois
Bûche</a>&nbsp;&nbsp; |&nbsp;&nbsp;<span
style="font-style: italic; color: rgb(102, 60, 42);"> D</span><span
style="color: rgb(102, 60, 42);">emandez un devis !&nbsp;</span>&nbsp;
| <a href="informations%20pratiques.html"><span
style="font-style: italic; color: rgb(102, 60, 42);">C</span><span
style="color: rgb(102, 60, 42);">ontact</span></a></big><br>
</div>
</td>
</tr>
<tr>
<td style="vertical-align: top; width: 949px; text-align: center;"><?php $nom = htmlentities($_POST['nom']);
$prenom = htmlentities($_POST['prenom']);
$adresse = htmlentities($_POST['adresse']);
$cp = htmlentities($_POST['cp']);
$ville = htmlentities($_POST['ville']);
$tel = htmlentities($_POST['tel']);
$mail = htmlentities($_POST['mail']);
$choixpdt = htmlentities($_POST['produit']);
$quantite = htmlentities($_POST['qte']);
$rem = htmlentities($_POST['rem']);
$message = " $nom \n ";
$message .= " $prenom \n ";
$message .= " $adresse \n ";
$message .= " $cp \n ";
$message .= " $ville \n";
$message .= " $tel \n ";
$message .= " $mail \n ";
$message .= " $choixpdt \n ";
$message .= " $qte \n ";
$message .= " $rem \n ";
mail ("didier.cognard2@wanadoo.fr", "Devis en ligne", $message, "From: $nom");
echo "Nous vous remercions pour votre demande. Celle ci sera traitée dans les meilleurs délais; <br />";

/?><br>
</td>
</tr>
<tr style="color: rgb(164, 142, 125);">
<td style="vertical-align: top; width: 949px; text-align: center;"><span
style="color: rgb(138, 114, 111);">Exploitation Forestière Didier
COGNARD</span><span style="color: rgb(138, 114, 111);"> - Bel Air -
37340 CLERE
LES PINS</span><br style="color: rgb(138, 114, 111);">
<span style="color: rgb(138, 114, 111);">Tél : 02.47.24.95.17</span><a
style="color: rgb(138, 114, 111); font-style: italic;"
href="mailto:didier.cognard2@wanadoo.fr?subject=Message%20de%20notre%20site%20Internet">
- Nous
contacter par mail</a><br>
</td>
</tr>
</tbody>
</table>
<br>
<br>
</body>
</html>


La ligne 55 correspond, selon NotePad à :
echo "Nous vous remercions pour votre demande. Celle ci sera traitée dans les meilleurs délais; </br>";


Je suis vraiment dans le flou le plus complet !
En cas de parse error, 90% du temps, l'erreur est à la fin de la ligne précédente^^

Idées en vrac :
-> $message ne serait pas sur une seule ligne en faisant plus de 70 caractères ?
-> ton "from:$nom", ça devrait pas être un email à la place du nom ?

au passage, essaye de remplacer "from:$nom" par "from:".$nom. Il est plus prudent de toujours sortir les variables des chaînes de caractères^^
Modifié par Lothindil (02 Jul 2013 - 19:38)
Bonjour,
J'ai peut être une piste:
echo "Nous vous remercions pour votre demande. Celle ci sera traitée dans les meilleurs délais; <br />";

/?><br>              <-------ICI le slash avant le point d'interrogation est en trop, supprime le
</td>

Modifié par GroquikMLV (03 Jul 2013 - 10:00)
Pages :