8797 sujets

Développement web côté serveur, CMS

Bonjour à Tous voila, j'ai récupéré un code pour faire un formulaire contact en php, il marchait trés bien, mais j'ai voulu rajouter quelques champs (société, Nom, Prénom, téléphone) alors que je ni connait presque rien en php. Le formulaire ne marche plus il me dit, Un problème s'est produit lors de l'envoi du message.
Voici le code merci de votre aide.
Si vous avez un autre code à me donner plus complet, pour récuperer les contacts d'un société, je suis preneur !!!!
Merci à tous
<table width="200" border="0">
  <tr>
    <td><?php
// Dans la ligne qui suit, remplacer webmaster@domaine.tld par l'adresse email du webmaster, à laquelle les messages devront être envoyés
$email_webmaster = "nicolas.sartorius@mno.fr";
// === 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["Nom"])) {
                 $_POST["Nom"]=trim(stripslashes($_POST["Nom"]));
        }
		if (isset($_POST["Prénom"])) {
                 $_POST["Prénom"]=trim(stripslashes($_POST["Prénom"]));
        }
		if (isset($_POST["Société"])) {
                 $_POST["Société"]=trim(stripslashes($_POST["Société"]));
        }
		if (isset($_POST["Téléphone"])) {
                 $_POST["Téléphone"]=trim(stripslashes($_POST["Téléphone"]));
        }
        if (isset($_POST["email_expediteur"])) {
                 $_POST["email_expediteur"]=trim(stripslashes($_POST["email_expediteur"]));
        }
        if (isset($_POST["titre"])) {
                 $_POST["titre"]=trim(stripslashes($_POST["titre"]));
        }
        if (isset($_POST["message"])) {
                 $_POST["message"]=trim(stripslashes($_POST["message"]));
        }
	
        // --- 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,4}$",$_POST["email_expediteur"])){
// l'adresse e-mail n'est pas valide
                 $erreur="Votre adresse e-mail n'est pas valide...";
        }
        elseif (empty($_POST["message"])) {
// le message est vide
                 $erreur="Saisissez un message...";
        }
        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 contact</title>
<style type="text/css">
<!--
body {
	background-color: #666666;
}
#Layer1 {
	position:absolute;
	width:200px;
	height:42px;
	z-index:1;
	left: 481px;
	top: 261px;
}
.Style6 {
	font-size: 18px;
	font-weight: bold;
}
-->
</style>
</head>
<body style="color:#FFFFFF">
<h1 style="font:"Century Gothic" color:"White">Nous contacter </h1>
<p>
  <?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
         }
?>
</p>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
  <p><label for="Société">Votre Société </label>
    <br />
  <input type="text" size="40" name="Société" id="Société" value="<?php
        if (!empty($_POST["Société"])) {
// la société a été saisie: la réafficher
                echo htmlspecialchars($_POST["Société"],ENT_QUOTES);
        }
        ?>" /></p>
  <p> 
    <label for="Nom">Votre Nom </label>
    <br />
    <input type="text" size="30" name="Nom" id="Nom" value="<?php
        if (!empty($_POST["Nom"])) {
// Le nom de l'expéditeur a été saisie: la réafficher
                echo htmlspecialchars($_POST["Nom"],ENT_QUOTES);
        }
        ?>" />
  </p>
  <p><label for="Prénom">Votre Prénom </label>
    <br />
    <input type="text" size="25" name="Prénom" id="Prénom" value="<?php
        if (!empty($_POST["Prénom"])) {
// Le prénom de l'expéditeur a été saisie: la réafficher
                echo htmlspecialchars($_POST["Prénom"],ENT_QUOTES);
        }
        ?>" />
  </p>
  <p><label for="Téléphone">Votre Téléphone </label>
    </label>
    <br />
    <input type="text" size="20" name="Téléphone" id="Téléphone" value="<?php
        if (!empty($_POST["Téléphone"])) {
// le Téléphone de l'expéditeur a été saisie: la réafficher
                echo htmlspecialchars($_POST["Téléphone"],ENT_QUOTES);
        }
        ?>" />
  </p>
  <p>
    <label for="email_expediteur">Votre adresse e-mail </label>
    <br />
    <input type="text" size="40" name="email_expediteur" 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);
        }
        ?>" />
  </p>
  <p><label for="titre">Titre de message :</label>
        <br />
        <input type="text" size="40" 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 for="message">Message :</label>
          <br />
          <textarea name="message" id="message" cols="40" rows="5"><?php
        if (isset($_POST["message"])) {
// le message a été saisi: le réafficher
                echo htmlspecialchars($_POST["message"],ENT_QUOTES);
        }
        ?>
          </textarea>
  </p>
        <p><input type="submit" name="envoyer" value="Envoyer" />
        </p>
       
          <tr>
            <td width="319">
            <div id="Layer1">
              <div align="center"><font color="#000000" ><b>MN ORGANISATION:</b></font><br /> 
                    <font color="#FFFFFF" ><b> 01 39 18 99 99</b></font></div>
            </div></td>
          </tr>
   
</form>
<?php
}
else {
// le formulaire a été soumis sans erreur, on envoie le mail
        $entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";
        $entete .= "MIME-Version: 1.0";
        if (@mail($email_webmaster,$_POST["titre"],$_POST["message"],$_POST["Société"],$_POST["Nom"],$_POST["Prénom"],$_POST["Société"],$entete)){
// mail envoyé
                echo "Votre message a été envoyé.<br />\n";
                echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Envoyer un autre message...</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";
        }
}
?>&nbsp;</td>
<td><p>&nbsp;</p>
<p>&nbsp;</p>
</body>
</html>&nbsp;</td>
  </tr>
</table>

Modifié par dreadstock (28 Oct 2008 - 14:36)
Bonjour,
il faudrait utiliser la balise "code" que l'on puisse distinguer ton code de ton texte...
Ensuite, tes formulaires sont récupérés où ? Une base de donnée ? Les champs que tu rajoutes dans ton code sont-ils aussi rajouter pour insertion dans ta base de données ?
Merci pour le code.

Par contre, avant de s'interroger sur le code PHP il faudrait revoir le code html : que font les éléments DOCTYPE, HEAD, BODY, etc... au beau milieu d'un élément TABLE ?
je l'ai modifié et ca marche encore moi, je comprends plus rien ?

<!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 contact</title>
<style type="text/css">
<!--
body {
	background-color: #666666;
}
#Layer1 {
	position:absolute;
	width:200px;
	height:42px;
	z-index:1;
	left: 481px;
	top: 261px;
}
.Style6 {
	font-size: 18px;
	font-weight: bold;
}
-->
</style>
</head>
<body style="color:#FFFFFF">
<h1 style="font:"Century Gothic" color:"White">Nous contacter </h1>
<p>
  <?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
         }
?>
</p>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
  <p><label for="Société">Votre Société </label>
    <br />
  <input type="text" size="40" name="Société" id="Société" value="<?php
        if (!empty($_POST["Société"])) {
// la société a été saisie: la réafficher
                echo htmlspecialchars($_POST["Société"],ENT_QUOTES);
        }
        ?>" /></p>
  <p> 
    <label for="Nom">Votre Nom </label>
    <br />
    <input type="text" size="30" name="Nom" id="Nom" value="<?php
        if (!empty($_POST["Nom"])) {
// Le nom de l'expéditeur a été saisie: la réafficher
                echo htmlspecialchars($_POST["Nom"],ENT_QUOTES);
        }
        ?>" />
  </p>
  <p><label for="Prénom">Votre Prénom </label>
    <br />
    <input type="text" size="25" name="Prénom" id="Prénom" value="<?php
        if (!empty($_POST["Prénom"])) {
// Le prénom de l'expéditeur a été saisie: la réafficher
                echo htmlspecialchars($_POST["Prénom"],ENT_QUOTES);
        }
        ?>" />
  </p>
  <p><label for="Téléphone">Votre Téléphone </label>
    </label>
    <br />
    <input type="text" size="20" name="Téléphone" id="Téléphone" value="<?php
        if (!empty($_POST["Téléphone"])) {
// le Téléphone de l'expéditeur a été saisie: la réafficher
                echo htmlspecialchars($_POST["Téléphone"],ENT_QUOTES);
        }
        ?>" />
  </p>
  <p>
    <label for="email_expediteur">Votre adresse e-mail </label>
    <br />
    <input type="text" size="40" name="email_expediteur" 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);
        }
        ?>" />
  </p>
  <p><label for="titre">Titre de message :</label>
        <br />
        <input type="text" size="40" 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 for="message">Message :</label>
          <br />
          <textarea name="message" id="message" cols="40" rows="5"><?php
        if (isset($_POST["message"])) {
// le message a été saisi: le réafficher
                echo htmlspecialchars($_POST["message"],ENT_QUOTES);
        }
        ?>
          </textarea>
  </p>
        <p><input type="submit" name="envoyer" value="Envoyer" />
        </p>
       
          <tr>
            <td width="319">
            <div id="Layer1">
              <div align="center"><font color="#000000" ><b>MN ORGANISATION:</b></font><br /> 
                    <font color="#FFFFFF" ><b> 01 39 18 99 99</b></font></div>
            </div></td>
          </tr>
   
</form>
<?php
}
else {
// le formulaire a été soumis sans erreur, on envoie le mail
        $entete = "From: ".$_POST["email_expediteur"]." <".$_POST["email_expediteur"].">\n";
        $entete .= "MIME-Version: 1.0";
        if (@mail($email_webmaster,$_POST["titre"],$_POST["message"],$_POST["Société"],$_POST["Nom"],$_POST["Prénom"],$_POST["Société"],$entete)){
// mail envoyé
                echo "Votre message a été envoyé.<br />\n";
                echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Envoyer un autre message...</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";
        }
}
?>&nbsp;</td>
<td><p>&nbsp;</p>
<p>&nbsp;</p>
<table width="200" border="0">
  <tr>
    <td><?php
// Dans la ligne qui suit, remplacer webmaster@domaine.tld par l'adresse email du webmaster, à laquelle les messages devront être envoyés
$email_webmaster = "nicolas.sartorius@mno.fr";
// === 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["Nom"])) {
                 $_POST["Nom"]=trim(stripslashes($_POST["Nom"]));
        }
		if (isset($_POST["Prénom"])) {
                 $_POST["Prénom"]=trim(stripslashes($_POST["Prénom"]));
        }
		if (isset($_POST["Société"])) {
                 $_POST["Société"]=trim(stripslashes($_POST["Société"]));
        }
		if (isset($_POST["Téléphone"])) {
                 $_POST["Téléphone"]=trim(stripslashes($_POST["Téléphone"]));
        }
        if (isset($_POST["email_expediteur"])) {
                 $_POST["email_expediteur"]=trim(stripslashes($_POST["email_expediteur"]));
        }
        if (isset($_POST["titre"])) {
                 $_POST["titre"]=trim(stripslashes($_POST["titre"]));
        }
        if (isset($_POST["message"])) {
                 $_POST["message"]=trim(stripslashes($_POST["message"]));
        }
	
        // --- 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,4}$",$_POST["email_expediteur"])){
// l'adresse e-mail n'est pas valide
                 $erreur="Votre adresse e-mail n'est pas valide...";
        }
        elseif (empty($_POST["message"])) {
// le message est vide
                 $erreur="Saisissez un message...";
        }
        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 =======================================================
?>
</body>
</html>
</table>
Help Me please, c'est pour ma newsletters, je vais me faire taper sur les doigts si ma patronne si je n'ai pas fini ce soir
Bonjour

tout d'abord je rejoint Heyoan sur le fait que tu devrai deja bien faire la partie html de ta page.

il y a encore un </table> aprè la balise </html>. De plus avec le DOCTYPE tu stipule que tu fais du xhtml. mais je vois plusieurs balise html avec les style directement dedans.. et ça, ça va à l'encontre du xhtml..

Ensuite le code php de traitement de ton formulaire est situé après l'affiche du html... En principe en fait l'inverse afin de pouvoir afficher tel ou tel chose en fonction du résultat du traitement.

genre:


<?php
traitement du formulaire
?>
affichage du html en fonction du résultat du traitement