Formulaire
Hors ligneBlublu Le 21/09/2006 à 15:22 Profil de Blublu Configuration de Blublu

Bonjour à tous,

J'ai écumé le net pour trouver une réponse mais je n'y comprends rien... Je sais que ce sujet a déjà été traité moultes fois mais j'aurais vraiment besoin d'aide. J'espère trouver une bonne âme qui pourra m'aider.
Voici mon problème: j'ai créer un formulaire pour mon site, mais là je bute sur la page php pour récupérer les informations dudit formulaire....

Voici ma page
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                       "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Mon formulaire.</title>
<script type="text/javascript" language="Javascript" >
<!--
function verification()
{
if(document.formulaire.nom.value == "") {
  alert("Veuillez entrer votre Nom svp");
  document.formulaire.nom.focus();
  return false;
}
if(document.formulaire.prenom.value == "") {
  alert("Veuillez entrer votre Prénom svp");
  document.formulaire.prenom.focus();
  return false;
}
if(document.formulaire.adresse.value == "") {
  alert("Veuillez entrer votre Adresse svp");
  document.formulaire.adresse.focus();
  return false;
  }
if(document.formulaire.couleurs.value == "") {
  alert("Veuillez entrer la/les couleur(s) du tablier svp");
  document.formulaire.couleurs.focus();
  return false;
}
  if(document.formulaire.reference.value == "") {
  alert("Veuillez entrer la Référence svp");
  document.formulaire.reference.focus();
  return false;
}
if(document.formulaire.courriel.value == "") {
  alert("Veuillez entrer votre adresse electronique svp");
  document.formulaire.courriel.focus();
  return false;
}

if(document.formulaire.courriel.value.indexOf('@') == -1) {
  alert("Ce n'est pas une adresse electronique, verifiez la svp");
  document.formulaire.courriel.focus();
  return false;
}



  else
  
return true;
}
//-->

</script>
<style type="text/css">

<!--
.style1 {font-family: "Comic Sans MS"}
.style5 {font-family: "Comic Sans MS"; font-size: 15px; }
-->

</style>
</head>

<body bgcolor="#99FFCC">
<form name="formulaire" action="traitement.php" method="post" onSubmit="return verification()">
  <div align="center">
    <table>
    
<tr>

      <td><span class="style1">Nom*</span></td>
      <td class="style1">Pr&eacute;nom*</td>
    </tr>

    <tr>
      <td>
<input name='nom' type='text' size='50'> <BR></td>
      <td><input name='prenom' type='text' size='50'><BR></td></tr>
    <tr>
<td class="style1">Adresse*</td>
      <td height="25" class="style1">
Courriel*</td>
      
    </tr>

    <tr><td><textarea name='adresse' cols='37' rows='2'></textarea><BR></td><td><input name='courriel' type='text' size='50'><BR></td></tr>
    <tr>

      <td class="style1">Couleur(s) du tablier*</td>
      <td class="style1">
Référence*</td>
    </tr>

    <tr><td><input name='couleurs' type='text' size='50'><BR></td><td><input name='reference' type='text' size='20'><BR></td></tr>
    <tr>
<td class="style1">Commentaire</td>
      <td class="style1">
Mode de paiement*</td>
    </tr>

    <tr><td><textarea name='commentaire' cols='37' rows='2'></textarea><BR></td><td><input name='modepaiement' type='radio' value='facture'>
      <span class="style5">Facture</span><br>
<input name='modepaiement' type='radio' value='virementbancaire'> <span class="style5">Virement Bancaire</span><br>
</td></tr>
    <tr><td><input name='annuler' type='reset' value='Annuler'></td><td>
    <input name='soumettre' type='submit' value='Envoyer'></td></tr>
    </table>
  </div>

</form>
</body>

</html>


Donc ensuite pour la page php, quels sont les codes que je dois utiliser? Celui-là:
$_POST['donnee']
Ou ceci:

<?php
          echo $nom
;
          echo '<br>'
          echo $prenom;
          echo '<br>'
          echo $afficher;
     ?>


Je n'y comprends rien....

Merci d'avance!
Hors ligneAnthony Le 22/09/2006 à 11:00 Profil de Anthony Configuration de Anthony

Admin
Salut,

en PHP on utilise ça :


<?php
       
if(isset($_POST['nom']))
      {
             $nom $_POST['nom'];
       }
      else
      
{
             $nom '';
      }

     //ensuite ton code qui traite ici
?>
--

Hors ligneIonace Le 22/09/2006 à 17:03 Profil de Ionace Configuration de Ionace

A mon avis, il est preferable d'utiliser empty() a la place d'isset(), tu eviteras les surprises...
Ensuite, pense a nettoyer tes variables (j'imagine que antho ne l'a pas fait pour ne pas t'embrouiller mais c'est indispensable )





<?php

if ( !empty($_POST['nom']) )
{
    $Nom htmlspecialchars($_POST['nom'], ENT_QUOTES);
}
else
{
    $Nom '';
}

// comme l'a fait remarque antho, tu mets ta verif generale ici (c'est a dire si apres traitement, tes variables sont toujours valides)

?>


Petite suggestion :
Moi j'utilise des fonctions perso qui nettoient tout, avec differents degres de nettoyage :





<?php

function HardClean($Value) {
    return url_encode(htmlspecialchars(strip_tags($Value), ENT_QUOTES));
}

function 
SoftClean($Value) {
    return url_encode(htmlspecialchars($ValueENT_QUOTES));
}

?>


HardClean() sert a nettoyer les infos qui doivent subirent une syntaxe precise : pas besoin de balise html ni de guillement pour un pseudo ou une adresse. Tu passe donc les infos a la moulinette :






<?php

if ( !empty($_POST['nom']) )
{
    $Nom HardClean($_POST['nom']);
}
else
{
    $Nom '';
}

?>


SoftClean() permet un netooyage pour les textarea par exemple. Si tu veut faire un forum de programmation avec des utilisateur qui se conseille entre eux (comme ici en gros ^^) et que tu veux que les balises html soient gardes mais pas interpretees !






<?php

if ( !empty($_POST['message_forum']) )
{
    $MsgSoftClean($_POST['message_forum']);
}
else
{
    $Msg'';
}

?>


Par contre, tu remarqueras surement le url_encode() qui est tres sympa mais a l'inconveniant de rendre quasi illisible les donnees... Pense a faire un url_decode() pour remettre tout a la bonne place apres l'avoir sortis de ta bdd !!

En esperant que sa te serves, sinon n'hesites pas a faire un tour sur php.net pour avoir des infos sur les fonctions utilisees .

@++
Hors ligneAnthony Le 23/09/2006 à 00:14 Profil de Anthony Configuration de Anthony

Admin
Empty() et isset() ont deux rôles bien différents. empty() vérifie que la variable est vide (si elle contient un ou plusieurs espaces, ça te renverra que c'est pas vide, donc c'est bof), isset() vérifie l'existence de la variable, ce qui est différent. Après c'est à la base de données de vérifier que le login/pass existe, il n'y a donc aucun problème de faille ou quoi que ce soit :)
--

Hors ligneBlublu Le 23/09/2006 à 17:19 Profil de Blublu Configuration de Blublu

Merci à tous!!!!

Alors voilà pour finir j'ai bidouiller ceci


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/REC-html40/loose.dtd">
   <html>
   <head>

   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   <title>Formulaire de commande</title>
      <script type="text/javascript" language="Javascript" >
   <!--
   function verification()
   {
   if(document.formulaire.nom.value == "") {
    alert("Veuillez entrer votre Nom svp");
    document.formulaire.nom.focus();
    return false;
   }
   if(document.formulaire.prenom.value == "") {
    alert("Veuillez entrer votre Prénom svp");
    document.formulaire.prenom.focus();
    return false;
   }
   if(document.formulaire.adresse.value == "") {
    alert("Veuillez entrer votre Adresse svp");
    document.formulaire.adresse.focus();
    return false;
    }
   if(document.formulaire.couleurs.value == "") {
    alert("Veuillez entrer la/les couleur(s) du tablier svp");
    document.formulaire.couleurs.focus();
    return false;
   }
    if(document.formulaire.reference.value == "") {
    alert("Veuillez entrer la Référence svp");
    document.formulaire.reference.focus();
    return false;
   }
   if(document.formulaire.courriel.value == "") {
    alert("Veuillez entrer votre adresse electronique svp");
    document.formulaire.courriel.focus();
    return false;
   }
      if(document.formulaire.courriel.value.indexOf(\'@\') == -1) {
    alert("Ce n\'est pas une adresse electronique, verifiez la svp");
    document.formulaire.courriel.focus();
    return false;
   }
             else
      return true;
   }
   //-->

   </script>
   <style type="text/css">

   <!--
   #global {width: 700px;}p {margin:0;}
   .style1 {font-family: "Comic Sans MS"}
   .style2 {font-family: "Comic Sans MS"; font-size: 20px; }
   .style5 {font-family: "Comic Sans MS"; font-size: 15px; }
   -->

   </style>
   </head>

   <body bgcolor="#99FFCC">
<?php
if ($_POST['courriel'] == "" || $_POST['adresse'] == ""){
echo '
      <form name="formulaire" action="mailing.php" method="post" onSubmit="return verification()">
   <p>&nbsp;</p>
   <p>&nbsp;</p>
    <div align="center"> <div id="global"><span class="style2">Formulaire de commande</span>
<p>
&nbsp;</p>
   <p>
&nbsp;</p>
     <table>

      <tr>
    <td>
<span class="style1">Nom*</span></td>
    <td class="style1">Pr&eacute;nom*</td>
    </tr>

    <tr>
    <td>
<input name=\'nom\' type=\'text\' size=\'50\'> <br></td>
    <td><input name=\'prenom\' type=\'text\' size=\'50\'><br></td></tr>
    <tr>
<td class="style1">Adresse*</td>
    <td height="25" class="style1">
Courriel*</td>
       </tr>

    <tr><td><textarea name=\'adresse\' cols=\'37\' rows=\'2\'></textarea><br></td><td><input name=\'courriel\' type=\'text\' size=\'50\'><BR></td></tr>
    <tr>

    <td class="style1">Couleur(s) du tablier*</td>
    <td class="style1">
R&eacute;f&eacute;rence*</td>
    </tr>

    <tr><td><input name=\'couleurs\' type=\'text\' size=\'50\'><BR></td><td><input name=\'reference\' type=\'text\' size=\'20\'><BR></td></tr>
    <tr>
<td class="style1">Commentaire</td>
    <td class="style1">
Mode de paiement*</td>    </tr>
    <tr><td><textarea name=\'commentaire\' cols=\'37\' rows=\'2\'></textarea><br></td><td><input name=\'modepaiement\' type=\'radio\' value=\'facture\'>
    <span class="style5">Facture</span><br>
   <input name=\'modepaiement\' type=\'radio\' value=\'virementbancaire\'> <span class="style5">Virement Bancaire</span><br>
     <tr><td height="80" ></td> <td align="right"><span class="style5">* champs obligatoires</span></td></tr>
  </td>
</tr>
    <tr>
<td align="right"><input name=\'annuler\' type=\'reset\' value=\'Annuler\'></td>
     <td align="right">
<input name=\'soumettre\' type=\'submit\' value=\'Envoyer\'></td></tr>
   </table>
   <p>
&nbsp;</p>
   <p>
&nbsp;</p>
   <p>
&nbsp;</p>
    <span class="style1">
<a href=accueil.htm >accueil</a> &nbsp; <a href=commande.htm >commande</a></span></div></div>
   </form>
   ';
  }

if ( $_POST['adresse'] != "" && $_POST['courriel'] != "" ) {
    
     $destinataire = 'monmail@monsite.com';
    $titre = "Commande Aux Ateliers Tita";
    $expediteur = ""; // l'expditeur de la commande?
       $nom = $_POST['nom'];
    $prenom = $_POST['prenom'];
    $adresse = $_POST['adresse'];
    $couleurs = $_POST['couleurs'];
    $reference = $_POST['reference'];
    $courriel = $_POST['courriel'];
    $commentaire = $_POST['commentaire'];
     $modepaiement = $_POST['modepaiement'];
    
    
     $headers ='From: "'.$nom.'"<'.$courriel.'>'
."\n";
    $headers .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
    $headers .='Content-Transfer-Encoding: 8bit';
    
     $message = 'Nom :'.$nom.''."\n";
     $message .= 'Prenom :'.$prenom.''."\n";
     $message .= 'Adresse :'.$adresse.''."\n";
     $message .= 'Couleurs :'.$couleurs.''."\n";
     $message .= 'Reference :'.$reference.''."\n";
     $message .= 'Mode de paiement :'.$modepaiement.''."\n";
     $message .= 'Commentaire :'.$commentaire.''."\n";
    
    
     @ mail("$destinataire","$titre","$message","$headers") or die ("Erreur d'envoi");
    
     echo ' <center><global><br><br><br><h2>Formulaire envoyé ! Je vous enverrai mes coordonnées bancaires rapidement. Merci!</h2><br />
           <p>&nbsp;</p>
              <p>&nbsp;</p>
                <p>&nbsp;</p>
                 <p>&nbsp;</p>
                  <p>&nbsp;</p>
                   <p>&nbsp;</p>
                            <a href=accueil.htm >accueil</a></global></center> ';
     }
?>

</body>
  </html>


Mais le problème c'est que j'ai peur qu'il y ait des erreurs.... Style, lorsque je valide mon formulaire sans avoir rempli tous les champs obligatoires, je n'ai pas de message le signalant... mais lorsque je demande à un ami de vérifier chez lui, pas de soucis.... Je vous mets le lien [URL]http://www.auxatelierstita.ch/mailing.php[/URL]

En tout cas, c'est vraiment sympa de m'avoir répondu!
Hors ligneAnthony Le 23/09/2006 à 17:20 Profil de Anthony Configuration de Anthony

Admin
Je vois "if ($_POST['courriel'] == "" || $_POST['adresse'] == ""){" et je m'arrête de lire : il faut utiliser isset() pour voir si une variable existe avant de faire comme si elle existait :)
--

Hors ligneBlublu Le 23/09/2006 à 17:30 Profil de Blublu Configuration de Blublu

Ok, alors je dois noter comme ceci?



if (isset($_POST['courriel'] == "" || $_POST['adresse'] == ""))

Et là?



if (isset( $_POST['adresse'] != "" && $_POST['courriel'] != "" ))

Et je dois l'ajouter quelque part d'autre?

Désolée je suis vraiment une débutante....

Là je viens de faire le test.... et ça ne fonctionne pas du tout avec isset.... Voici le message: Parse error: syntax error, unexpected T_IS_EQUAL, expecting ',' or ')' in mondomaine..../public_html/mailing1.php on line 68
Hors ligneAnthony Le 23/09/2006 à 17:42 Profil de Anthony Configuration de Anthony

Admin
En gros, isset s'utilise comme je l'ai mis plus haut :


<?php
       
if(isset($_POST['nom']))
      {
             $nom $_POST['nom'];
       }
      else
      
{
             $nom '';
      }

     //ensuite ton code qui traite ici
?> 


Après si tu veux vérifier que ton message n'est pas vide (les espaces comptant comme un caractère) tu rajoutes ceci :


<?php
       
if(isset($_POST['nom']) AND !empty($_POST['nom']))
      {
             $nom $_POST['nom'];
       }
      else
      
{
             //le nom est vide ou n'existe pas
      }

     //ensuite ton code qui traite ici
?> 
--

Hors ligneBlublu Le 23/09/2006 à 17:48 Profil de Blublu Configuration de Blublu

Je suis vraiment désolée mais je saisis pas...

Tu mets ce code à la place de ceci?

if(document.formulaire.nom.value == "") {
    alert("Veuillez entrer votre Nom svp");
    document.formulaire.nom.focus();
    return false;
   }


Et après je fais quoi de ça, je dois aussi le changer?


if ($_POST['courriel'] == "" || $_POST['adresse'] == "")

Plus je regarde le code et moins je comprends, où est placé le code signalant que la personne n'a pas rempli le champ "nom"?
Hors ligneAnthony Le 23/09/2006 à 20:26 Profil de Anthony Configuration de Anthony

Admin
Faut savoir si tu veux que ça soit immédiat (quand la personne clique tu affiches une alerte, dans ce cas on le fera en javascript) sinon en php, une fois que tu veux traiter ton formulaire. Javascript et php sont deux langages différents, PHP est orienté serveur c'est à dire qu'il s'exécute non pas directement via le navigateur, mais lorsque tu demandes une page. Javascript n'a pas besoin de serveur pour fonctionner, il est interprété par le navigateur.
--

Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels