PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 21-03-2011 13:16:27

colinus
Membre
Inscription : 21-03-2011
Messages : 11

pb avec mon code...

Hello tous!
Je suis nouveau sur le forum, et aussi en php, aussi j'implore votre clémence si ma question est "simple" ou mal formulée... amen!

Tant bien que mal, je tente de traiter un formulaire en html via une page php.
Tout fonctionnait nickel, jusqu'à ce que j'essaye d'ajouter le traitement d'une case à cocher. Quand je valide mon formulaire, j'ai l'erreur suivante:
Parse error: syntax error, unexpected T_IF in /home/www/4fbeef6536735cb3f1bc571d92d40de8/web/form/traitement_formulaire2.php on line 67

voici mes lignes n°67 à 70 de mon fichier php de traitement:

$showroom = if (isset($_POST['showroom'])) {print $_POST['showroom']; }
    else {
    echo "Aucun choix sélectionné";
    }

Ma case à cocher s'appelant "showroom".

Ci-dessous le code complet:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[url]http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd[/url]">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Document sans titre</title>
</head>

<body>
<?php
 
  // destinataire du mail
  $destinataire = 'xxx@xxx.com';


  // copie à l'émetteur
  $copie = 'oui'; // 'oui' ou 'non'

  // Messages de confirmation du mail
  $message_envoye = 'ok_message.htm';
  $message_non_envoye = 'notok_message.htm';
  $message_erreur_formulaire = "Attention, pour continuer, vous devez <a href=\"contact.html\">envoyer le formulaire</a>.";
  $message_formulaire_invalide = 'nok_champs_form.htm';


  // test d'envoi du formulaire
  if (!isset($_POST['envoi']))
  {
  // si echec
    echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
  }
  else
  {
  /*
  * nettoyer et enregistrer le message
  */

    function Rec($text)
    {
      $text = trim($text); // supprime les espaces blancs en début et en fin de texte
      if (1 === get_magic_quotes_gpc())
      {
        $stripslashes = create_function('$txt', 'return stripslashes($txt);');
      }
      else
      {
        $stripslashes = create_function('$txt', 'return $txt;');
      }

      // magic quotes ?
      $text = $stripslashes($text);
      $text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
      $text = nl2br($text);
      return $text;
    };

    /*
     * vérif email
     */

    function IsEmail($email)
    {
      $pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
      return (eregi($pattern,$email)) ? true : false;
    };

    // formulaire envoyé, on récupère tous les champs.
    $nom    = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
    $email    = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
    $showroom = if (isset($_POST['showroom'])) {print $_POST['showroom']; }
    else {
    echo "Aucun choix sélectionné";
    }
    $objet    = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : 'message depuis le formulaire du site';
    $message  = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
    $copie  = (isset($_POST['copie'])) ? Rec($_POST['copie']) : '';

    // vérification des variables et de l'email ...
    $email = (IsEmail($email)) ? $email : '';

    if (($nom != '') && ($email != '')&& ($message != ''))
    {
     
    // envoi du mail après constitution

    $headers = "Content-Type: text/html; charset=\"UTF-8\"\n".'From: '.$nom.' <'.$email.'>';
    $message = str_replace('\r\n','<br>',$message);
    $objet = str_replace("'","'",$objet);


  // envoyer une copie au visiteur ?
      if ($copie == 'oui')
      {
        $cible = $destinataire.','.$email;
      }
      else
      {
        $cible = $destinataire;
      };

    //constitution du corps du mail qui sera envoyé

    $message = 'Nom : '.$nom."<br>"
    .'email : '.$email."<br>"
    .'showroom : '.$showroom."<br>"
    .'Message : '.$message;

    // Envoi du mail

    if (mail($cible, $objet, $message, $headers))
      {
    header('Location: ar_message.htm');
      }
    else
      {
      header('Location: nok_message.htm');
      };
    }
    else
    {
    // une des 3 variables (ou plus) est vide ...
      header ('Location: nok_champs_form.htm');
    };
  };
    // fin du if (!isset($_POST['envoi']))

?>
</body>
</html>
 

C'est sûrement évident pour la majorité d'entre vous, mais pas du tout pour moi!

Une suggestion?

Merci!
colinus

Dernière modification par colinus (21-03-2011 13:28:02)

Hors ligne

#2 21-03-2011 13:51:49

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : pb avec mon code...

if (isset($_POST['showroom'])) {
                         $showroom = $_POST['showroom'];
                   }
                   else {
                         echo "Aucun choix sélectionné";
                 }

a++

Hors ligne

#3 21-03-2011 14:58:31

colinus
Membre
Inscription : 21-03-2011
Messages : 11

Re : pb avec mon code...

Merci bien Pierrot,
c'est pas encore ça, ce coup ci plus d'erreur à l'envoi, par contre, avant l'envoi que je coche ou pas la case a cocher "showroom" ne change rien dans le contenu que je reçois...

Une idée?
Mon code actuel:


  // formulaire envoyé, on récupère tous les champs.
    $nom    = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
    $email    = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
    if (isset($_POST['showroom'])) {
                         $showroom = $_POST['showroom'];
                   }
                   else {
                         echo "Aucun choix sélectionné";
                 }
    $objet    = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : 'message depuis le formulaire du site';
    $message  = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
    $copie  = (isset($_POST['copie'])) ? Rec($_POST['copie']) : '';

    // vérification des variables et de l'email ...
 

Merci!

Hors ligne

#4 21-03-2011 15:43:10

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : pb avec mon code...

Saluton,
Pour garder la même logique

$showroom = isset($_POST['showroom']) ? $_POST['showroom'] : "Aucun choix sélectionné";

Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#5 21-03-2011 16:04:04

colinus
Membre
Inscription : 21-03-2011
Messages : 11

Re : pb avec mon code...

Yep, merci Kris!
Plus d'erreur non plus, le formulaire est traité puis envoyé.
Mais c'est comme avant, quel que soit le statut de la checkbox, rien ne change dans ce qui est envoyé. Je reçois de tte manière le "aucun choix sélectionné", qu'elle soit cochée ou pas.

J'aimerais que:
- si la checkbox est cochée, je reçoive une valeur (p.ex. oui) dans le contenu du formulaire
- si elle est pas cochée, j'en reçoive une autre (p.ex. non)

Par conséquent, je vois pas comment se passer du if, non? Ou alors mes maigres connaissances sont déjà moisies?

Une fois ceci résolu, je m'attaquerai aux 4 radio bouton et au champ de texte optionel... argl!

Merci les gars!

Dernière modification par colinus (21-03-2011 16:06:16)

Hors ligne

#6 21-03-2011 17:13:22

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : pb avec mon code...

Saluton,
Il faudrait voir le code HTML du formulaire qui contient la checkbox.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#7 21-03-2011 17:22:35

colinus
Membre
Inscription : 21-03-2011
Messages : 11

Re : pb avec mon code...

Maljuna Kris a écrit :

Saluton,
Il faudrait voir le code HTML du formulaire qui contient la checkbox.

Yes, voici donc le code html:

<td align="left" valign="top"><input name="présentation oui" type="checkbox" id="showroom" value="showroom" /></td>
 

J'avoue honteusement que je m'embrouille entre le "input name", "id" et "value"....

Si besoin le code complet du formulaire html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[url]http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd[/url]">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans nom</title>
<link href="/css/tab2.css" rel="stylesheet" type="text/css" />
</head>

<body>


<form action="traitement_formulaire2.php" method="post" name="contact" id="contact">
  <p align="center" class="Style15" style="margin-top:5px;">formulaire bidon pour test</p>
      <table width="85%" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <td colspan="3" class="typo_article">        
          <div align="left">
            <input name="nom" type="text" class="typo_form" id="nom" tabindex="1" value="votre nom" size="80" maxlength="40"/>
            <input name="email" type="text" class="typo_form" id="email" tabindex="4" value="votre adresse email" size="80"/>
            <textarea name="message" cols="80" rows="9" class="typo_form" id="message" tabindex="6">votre message</textarea>
          </div></td>
        </tr>
                <tr>
                  <td width="192" valign="top" class="typo_article">recevoir une copie?</td>
                  <td width="73"><span class="typo_article">
                    <input name="copie" type="radio" id="copie_2" value="oui" checked="checked" />
Oui</span></td>
                  <td width="280"><span class="typo_article">
                    <input type="radio" name="copie" value="non" id="copie_1" />
Non</span></td>
                </tr>
                <tr>
                  <td colspan="3" valign="top" class="typo_article">Comment avez-vous connu notre entreprise ?</td>
                </tr>
                <tr>
                  <td colspan="3" valign="top" class="typo_article"><table width="100%" height="89" border="0" cellpadding="0" cellspacing="0">
                    <tr>
                      <td width="25" align="left" valign="top"><label class="typo_article">
                        <input type="radio" name="radio" id="site web" value="site web" />
                      </label></td>
                      <td width="190" align="left" valign="top"><label class="typo_article">depuis un site web</label></td>
                      <td width="25" align="left" valign="top"><label>
                        <input type="radio" name="radio" id="moteur recherche" value="moteur recherche" />
                      </label></td>
                      <td width="274" align="left" valign="top"><label>par un moteur de recherche</label></td>
                    </tr>
                    <tr>
                      <td align="left" valign="top"><input type="radio" name="radio" id="fontaine" value="fontaine" /></td>
                      <td align="left" valign="top">par une fontaine <span class="exergue_article">ecopotable</span></td>
                      <td align="left" valign="top"><input type="radio" name="radio" id="autre" value="autre" /></td>
                      <td align="left" valign="top">autre</td>
                    </tr>
                    <tr>
                      <td align="left" valign="top"><input name="présentation oui" type="checkbox" id="showroom" value="showroom" /></td>
                      <td align="left" valign="top">je désire une présentation dans vos locaux</td>
                      <td rowspan="2" align="left" valign="top"> </td>
                      <td rowspan="2" align="left" valign="top"><textarea name="autre" cols="36" rows="4" class="typo_form"id="autre2" onfocus="if(this.value=='précisez svp')this.value=''" onblur="if(this.value=='')this.value='précisez svp'" ;=";">précisez svp</textarea></td>
                    </tr>
                    <tr>
                      <td colspan="2" align="left" valign="top"> </td>
                    </tr>
                  </table></td>
                </tr>
        <tr>
        <td> </td>
        <td colspan="2"><input type="submit" name="envoi" value="Envoyer" />
          <input type="reset" name="envoi2" value="Effacer" /></td></tr>
  </table>
  </form>

</body>
</html>
 

Merci!!! Je suis quasiment suspendu à ton clavier... big_smile

Hors ligne

#8 21-03-2011 18:35:14

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : pb avec mon code...

Ce qui figure dans $_POST c'est le name, le plus simple est de mettre la même valeur dans id et name.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#9 21-03-2011 22:21:20

colinus
Membre
Inscription : 21-03-2011
Messages : 11

Re : pb avec mon code...

Ouche... avec ce code j'arrive a avoir une différence selon que la case est cochée ou pas:

$showroom = isset($_POST['showroom']) ? $_POST['showroom'] : "Aucun choix sélectionné";

J'ai soit "showroom" (si la case est cochée) soit "aucun choix sélectionné" (si la case est décochée)

C'est donc presque bon!!

Dernière question: comment faire pour qu'au lieu de "showroom" j'aie "oui" dans le résultat?
Je ne sais pas que modifier dans le code php ci-dessus, pour autant que ce soit ici et non dans le formulaire en html....

Aller pitié! Demain je m'achète un GROS bouquin sur le PHP!

Merci les gars!

Dernière modification par colinus (21-03-2011 22:26:34)

Hors ligne

#10 22-03-2011 08:38:14

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : pb avec mon code...

Tu changes la value


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#11 22-03-2011 10:24:50

colinus
Membre
Inscription : 21-03-2011
Messages : 11

Re : pb avec mon code...

Maljuna Kris a écrit :

Tu changes la value

Yesssss!
It works!

Merci mille fois à tous et en particulier à Kris pour votre aide!

colinus

ps: je risque de revenir rapidement ici...

Hors ligne

Pied de page des forums