Page 1 sur 1

formulaire via PHP

Posté : 05 août 2005, 11:45
par Guimetz
Salut à tous,

Voilà j'ai essayé ici et là plusieurs tuto qui décrivent comment envoyer le contenu d'un formulaire(HTML) à une boite e-mail, et j'ai commencé à coder le truc, mais mes connaissances sont trop limitées en PHP (voire même nulles). Alors si vous pouviez me donner un micro coup de pouce...

Dans mon formulaire j'ai 6 champs de texte de saisie, 2 checkboxes,
et 2 autres dont chacune permet la saisie d'un texte dans un champ de texte de saisie:


Code : Tout sélectionner

<form action="formulaire.php" method="post" name="formulaire" id="formulaire"> <fieldset><legend>Votre entreprise:</legend> <input name="personne" type="text" id="personne" size="40" maxlength="50"> <input name="raisonSociale" type="text" id="raisonSociale" size="40" maxlength="50"> <input name="adresse" type="text" id="adresse" value="" size="40" maxlength="50"> <input name="ville" type="text" id="ville" size="40" maxlength="50"> <input name="codePostal" type="text" id="codePostal" size="40" maxlength="50"> <textarea name="commentaire" cols="80" rows="4" id="commentaire"></textarea> </fieldset> <fieldset> <legend>Je souhaite:</legend> <input name="je_souhaite" type="checkbox" id="je_souhaite" value="beneficier"> <input name="je_souhaite" type="checkbox" id="je_souhaite" value="en_savoir"> </fieldset> <fieldset><legend>Je souhaite être contacté par:</legend> <input name="contact" type="checkbox" id="contact" value="email"> <input name="email" type="text" id="email" size="40" maxlength="50"> <input name="contact" type="checkbox" id="contact" value="telephone"> <input name="telephone" type="text" id="telephone" size="40" maxlength="50"> <input name="textfield" type="text" size="40" maxlength="50"> </fieldset> <input type="submit" name="Submit" value="Envoyer"> </form>
Et voici ma maigre tentative pour les champs de texte de saisie:
<body>
<?
/*J'identifie les variables*/
$prenom = $_POST["personne"];
$raison_sociale = $_POST["raisonSociale"];
$adresse = $_POST["adresse"];
$ville = $_POST["ville"];
$codepostal = $_POST["codePostal"];
$commentaire = $_POST["codePostal"];

/*j'affiche les résultats du formulaire*/
echo "son prenom: $prenom";
echo "sa raison sociale: $raisonSociale";
echo "son adresse: $adresse";
echo "Sa ville: $ville";
echo "son code postal: $codepostal";
echo "son commentaire: $commentaire";
?>

</body>
Pour les checkboxes je crois qu'il faut que j'utilise une instruction en boucle du type
for (i=0,i<=...,i++){
...
}
et il faut éviter de prendre en compte les chaînes de caractères vides, pour éviter des erreurs dans le code.

D'où l'utilisation de
if(la_variable==""){
....
}

Sâchant que j'ai donné des noms d'occurences aux objets de mon formulaire comment s'il vous plait mettre en place mon code?
Merci d'avance. :wink:

Posté : 05 août 2005, 12:54
par Cyrano
Pour le checkbox, il faudrait utiliser des [] pour le nom des champs s'ils sont les mêmes pour plusieurs et tu récupères un tableau indexé. Ensuite, n'éparpilles pas ton code aux quatre vents, c'est illisible:
<form action="formulaire.php" method="post" name="formulaire" id="formulaire">
  <fieldset>
    <legend>Votre entreprise:</legend>
    <input name="personne" type="text" id="personne" size="40" maxlength="50">
    <input name="raisonSociale" type="text" id="raisonSociale" size="40" maxlength="50">
    <input name="adresse" type="text" id="adresse" value="" size="40" maxlength="50">
    <input name="ville" type="text" id="ville" size="40" maxlength="50">
    <input name="codePostal" type="text" id="codePostal" size="40" maxlength="50">
    <textarea name="commentaire" cols="80" rows="4" id="commentaire"></textarea>
  </fieldset>
  <fieldset>
    <legend>Je souhaite:</legend>
    <input name="je_souhaite[]" type="checkbox" id="je_souhaite" value="beneficier">
    <input name="je_souhaite[]" type="checkbox" id="je_souhaite" value="en_savoir">
  </fieldset>
  <fieldset><legend>Je souhaite être contacté par:</legend>
    <input name="contact" type="checkbox" id="contact" value="email">
    <input name="email" type="text" id="email" size="40" maxlength="50">
    <input name="contact" type="checkbox" id="contact" value="telephone">
    <input name="telephone" type="text" id="telephone" size="40" maxlength="50">
    <input name="textfield" type="text" size="40" maxlength="50">
  </fieldset>
  <input type="submit" name="Submit" value="Envoyer">
</form>
Pour ton bout de code PHP, afin d'éviter de récupérer des champs vides ou qui auraient un espace, la première chose à faire es de supprimer les espaces surnuméraires:
<?
/*J'identifie les variables*/
$prenom = trim($_POST["personne"]);
$raison_sociale = trim($_POST["raisonSociale"]);
$adresse = trim($_POST["adresse"]);
$ville = trim($_POST["ville"]);
$codepostal = trim($_POST["codePostal"]);
$commentaire = trim($_POST["codePostal"]);

/*j'affiche les résultats du formulaire*/
echo "son prenom: ". $prenom;
echo "sa raison sociale: ". $raisonSociale;
echo "son adresse: ". $adresse;
echo "Sa ville: ". $ville;
echo "son code postal: ". $codepostal;
echo "son commentaire: ". $commentaire;
?>
La fonction trim() fait ceci. Ensuite tu fais effectivement une alternative if($val == "") pour déterminer si le champ est vide ou non.

Posté : 05 août 2005, 16:09
par Guimetz
Merci à toi Cyrano!

Alors j'ai un peu avancé, je te redonne le HTML car toutes petites modifs de noms d'occurences:
<form action="formulaire.php" method="post" name="formulaire" id="formulaire">
   <fieldset><legend>Votre entreprise:</legend>
        <input name="raisonSociale" type="text" id="raisonSociale" size="40" maxlength="50">
         <input name="ville" type="text" id="ville" size="40" maxlength="50">
         <input name="codePostal" type="text" id="codePostal" size="40" maxlength="50">
         <textarea name="commentaire" cols="80" rows="4" id="commentaire"></textarea>
   </fieldset>
			 
   <fieldset>
      <input name="je_souhaite" type="checkbox" id="je_souhaite" value="avis_sans _engagements">
      <input name="je_souhaite" type="checkbox" id="je_souhaite" value="en_savoir_plus">
   </fieldset>
			 
   <fieldset>
      <input name="contact" type="checkbox" id="contact" value="email">
      <input name="email" type="text" id="email" size="40" maxlength="50">
      <input name="contact" type="checkbox" id="contact" value="telephone">
      <input name="telephone" type="text" id="telephone" size="40" maxlength="50">
      <input name="ligne_directe" type="text" id="ligne_directe" size="40" maxlength="50">
   </fieldset>
      <input type="submit" name="Submit" value="Envoyer">
</form>
Et voici le fameux code:
<? 
/*J'identifie les variables*/ 
$prenom = trim($_POST["personne"]); 
$raison_sociale = trim($_POST["raisonSociale"]); 
$adresse = trim($_POST["adresse"]); 
$ville = trim($_POST["ville"]); 
$codepostal = trim($_POST["codePostal"]); 
$commentaire = trim($_POST["codePostal"]);

$email = trim($_POST["email"]);
$telephone = trim($_POST["telephone"]);

/*j'affiche les résultats du formulaire*/ 
 
echo "son prenom: ". $prenom; 
echo "sa raison sociale: ". $raisonSociale; 
echo "son adresse: ". $adresse; 
echo "Sa ville: ". $ville; 
echo "son code postal: ". $codepostal; 
echo "son commentaire: ". $commentaire;
echo "ligne directe: ". &ligne_directe;

/*je passe au checkboxes*/
if(!empty($_POST["je_souhaite"])) { ?>
   Vous avez choisi que l'on vous réponde par  -
   <b>
   <?
   for ($i = 0; $i < count($_POST["je_souhaite"]); $i++)
      echo $_POST["je_souhaite"][$i]." - ";
   ?>
   </b>
<? }

/*checkboxes voisines de champs de saisie*/
if(!empty($_POST["contact"])) { ?>
   Vous avez choisi que l'on vous réponde par  -
   <b>
   <?
   for ($i = 0; $i < count($_POST["contact"]); $i++)
      echo $_POST["contact"][$i]." - ";
	    <br> echo "votre email: ". $email;
        <br> echo "votre telephone: ". $telephone;
		<br> echo "votre ligne directe: ". &ligne_directe;
   ?>
   </b>
<? }
Alors selon toi c'est bon pour les checkboxes? Sâchant que pour la 2e série pour chaque checkbox cochée, on a un champ de saisie a côté?
Une dernière chose: je souhaite que à condition que l'utilisateur ai répondu au moins à un champ, ça renvoie à une page HTML disant en gros:
"Merci d'avoir remplit ce formulaire, etc..."
Sinon on a:
"Vous devez remplir le formulaire même partiellement."

Pourrais tu once again me mettre sur la voie stp?

Posté : 05 août 2005, 16:16
par Cyrano
Dans ton formulaire, tu as oublié les crochets : name="je_souhaite[]" et non name="je_souhaite".

Pour la redirection, si tu as déjà envoyé des données vers le navigateur, tu peux utiliser un JavaScript window.location... mais si tu n'as encore rien envoyé, tu peux le faire en PHP avec header();

Posté : 05 août 2005, 16:31
par Guimetz
Merki bien, je vais fouiner du côté de header()... :wink:

Posté : 06 août 2005, 08:17
par Manio 54
Dans ton formulaire les id sont-ils vraiment indispensables ?

Posté : 06 août 2005, 18:28
par Cyrano
Pas obligatoires, mais très utiles pour la validation en JavaScript ou encore les styles CSS.

Posté : 06 août 2005, 21:22
par Lpu8er
Autre alternative: la balise <meta>, avec un petit attribut refresh et le lien de page.


Lpu8er