Probleme pour l'envoi d'un formulaire

Eléphant du PHP | 104 Messages

27 mai 2008, 13:52

Bonjour.

Pour commence je m'excuse si mon message est long, le seul probleme c'est que je manque de temps, alors je prefere afficher la partie generale de mon code pour qu'on m'aide. Alors voila, je suis en stage et je n'ai jamais fait de PHP jusqu'a maintenant. J'ai coder un site avec une page qui contient un formulaire, pour cela je me suis lancé dans le PHP pour essayer de bien faire, le petit probleme, c'est que la fin sa ne marche pas, et je ne voit pas d'ou vient mon erreur..

Normalement quand une personne rempli mal le formulaire, une page s'ouvre et lui dis ou il n'a pas bien rempli. Et si sa marche sa lui dit que c'est bien envoyer et ma page retourne a l'index. Hors dans les deux cas, sa ouvre une autre page avec mon code visible..

Voici donc d'abord ma parti en HTML (je vous montre pas toute la page juste la div qui compte) :

Code : Tout sélectionner

<div id="centredevis"> <form name="formulaire" action="../formulaire.php" method="post" enctype="text/plain"> <p class="devis">Devis</p> <p>&nbsp;</p> <p>Raison sociale : <input type="text" name="raison_sociale" value="" class="cadre"> </p> <p>&nbsp;</p> <p>Poste de r&eacute;sponsabilit&eacute; : <input type="text" name="poste_de_responsabilite" value="" class="cadre"> </p> <p>&nbsp;</p> <p>Nom : <input type="text" name="nom" value="" class="cadre"> </p> <p>&nbsp;</p> <p>Pr&eacute;nom : <input type="text" name="prenom" value="" class="cadre"> </p> <p>&nbsp;</p> <p>Adresse : <input type="text" name="adresse" value="" class="cadre"> </p> <p>&nbsp;</p> <p>Ville : <input type="text" name="ville" value="" class="cadre"> </p> <p>&nbsp;</p> <p>Pays : <input type="text" name="pays" value="" class="cadre"> </p> <p>&nbsp;</p> <p>T&eacute;l&eacute;phone : <input type="text" name="telephone" value="" class="cadre"> </p> <p>&nbsp;</p> <p>E-mail : <input type="text" name="email" value="" class="cadre"> </p> <p>&nbsp;</p> <p>Type d'affichage ou de support : <select name="affichage"> <option selected value="0">Choix du produit</option> <option value="temporaire"></option> <option value="temporaire">::::TEMPORAIRE::::</option> <option value="temporaire_1">Bus intérieur (200 faces max)</option> <option value="temporaire_2">Bus extérieur/arrière (400 faces max)</option> <option value="temporaire_3">Bus extérieur/latéraux (200 faces max)</option> <option value="temporaire_4">Panneaux 4m x 3m (600 faces max)</option> <option value="temporaire_5">Sucettes 2m x 1.50m (200 faces max)</option> <option value="temporaire_6">Abris bus (300 faces max)</option> <option value="permanents"></option> <option value="permanents">::::PERMANENTS::::</option> <option value="permanents_1">Panneaux 12m x 4m (300 faces max)</option> <option value="permanents_2">Panneaux 7m x 3m (300 faces max)</option> <option value="permanents_3">Panneaux 4m x 3m (300 faces max)</option> <option value="permanents_4">Sucettes 2m x 1.50m (300 faces max)</option> <option value="permanents_5">Totems éclairés (300 faces max)</option> <option value="permanents_6">Bus intérieur (200 faces max)</option> <option value="permanents_7">Bus extérieur/arrière (400 faces max)</option> <option value="permanents_8">Bus extérieur/latéraux (200 faces max)</option> <option value="permanents_9">Abris bus (300 faces max)</option> <option value="permanents_10">Façades (200 faces max)</option> <option value="permanents"></option> </select> </p> <p>&nbsp;</p> <p>Nombres de faces : <input type="text" name="nombre_face" value="" class="cadre"> </p> <p>&nbsp;</p> <p>Dur&eacute;e : <select name="duree"> <option selected value="0">Choix de la durée</option> <option value="duree_1">15 jours</option> <option value="duree_2">1 mois</option> <option value="duree_3">3 mois</option> <option value="duree_4">6 mois</option> <option value="duree_5">1 an</option> </select> </p> <p>&nbsp;</p> <p>P&eacute;riode souhait&eacute;e : <input type="text" name="periode" value="" class="cadre"> </p> <p> <input type="submit" value="Envoyer" name="envoyer" class="fin"> </p> </form> </div>
Possible que l'erreur sois dans la partie HTML xD. Bon voici la partie PHP maintenant :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>

<body>
<?

function check_mail($email) {
if( (preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $email)) ||
(preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',$email)) ) {
$host = explode('@', $email);
if(checkdnsrr($host[1].'.', 'MX') ) return true;
if(checkdnsrr($host[1].'.', 'A') ) return true;
if(checkdnsrr($host[1].'.', 'CNAME') ) return true;
}
return false;
}

$MailTo = "[email protected]"; 
$MailCc = "[email protected]"; 
$MailSubject = "DEVIS EN LIGNE"; 
$MailHeader = "From: $email"; 

$min_size="3"; 
$max_size="5000"; 



$Envoi = 1; 


if ($raison_sociale == ""){ 
echo("Vous n'avez pas complété la raison sociale.<br>"); 
$Envoi = 0; 
}
else {
$MailBody .= "Raison sociale : $raison_sociale\n";
}

if ($poste_de_responsabilite == ""){
echo("Vous n'avez pas complété le poste de responsabilité.<br>");
$Envoi = 0;
}
else {
$MailBody .= "Poste de responsabilité : $poste_de_responsabilite\n";
}

if ($nom == ""){
echo("Vous n'avez pas complété le nom<br>");
$Envoi = 0;
}
else {
$MailBody .= "Nom : $nom\n";
}

if ($prenom == ""){
echo("Vous n'avez pas complété le prenom<br>");
$Envoi = 0;
}
else {
$MailBody .= "Prénom : $prenom\n";
}

if ($adresse == ""){
echo("Vous n'avez pas complété l'adresse<br>");
$Envoi = 0;
}
else {
$MailBody .= "Adresse : $adresse\n";
}

if ($ville == ""){
echo("Vous n'avez pas complété la ville<br>");
$Envoi = 0;
}
else {
$MailBody .= "Ville : $ville\n";
}

if ($pays == ""){
echo("Vous n'avez pas complété le pays<br>");
$Envoi = 0;
}
else {
$MailBody .= "Pays : $pays\n";
}

if ($telephone == ""){
echo("Vous n'avez pas complété le telephone<br>");
$Envoi = 0;
}
else {
$MailBody .= "Telephone : $telephone\n";
}

if ($email == ""){
echo("Vous n'avez pas complété l'e-mail<br>");
$Envoi = 0;
}
else {
if (check_mail($email)) {
$MailBody .= "Mail : $email\n";
}
else {
echo("L'adresse e-mail du champ n'est pas valide<br>");
$Envoi = 0;
}
}

if ($affichage == "0"){
echo("Vous avez oublié de choisir une valeur dans le menu déroulant.<br>");
$Envoi = 0;
}
else {
$MailBody .= "Affichage : $affichage\n";
}

if ($nombre_face == ""){
echo("Vous n'avez pas complété le nombre de face<br>");
$Envoi = 0;
}
else {
$MailBody .= "Nombres de face : $nombre_face\n";
}

if ($duree == "0"){
echo("Vous avez oublié de choisir une valeur dans le menu déroulant.<br>");
$Envoi = 0;
}
else {
$MailBody .= "Durée : $duree\n";
}

if ($periode == ""){
echo("Vous n'avez pas complété la durée de la période souhaitée<br>");
$Envoi = 0;
}
else {
$MailBody .= "Période : $periode\n";
}




if ($Envoi == 0) {
echo("<p><a href=\"Javascript:history.go(-1)\"><center><strong>RETOUR</strong></center></a></p>");
}


if ($Envoi == 1) { 
echo("<p><strong>Raison sociale : <font color=\"#0000FF\">$raison_sociale</font>\n");
echo("<br>Votre poste : <font color=\"#0000FF\">$poste_de_responsabilite</font>\n");
echo("<br>Votre nom : <font color=\"#0000FF\">$nom</font>\n");
echo("<br>Votre prenom : <font color=\"#0000FF\">$prenom</font>\n");
echo("<br>Votre adresse: <font color=\"#0000FF\">$adresse</font>\n");
echo("<br>Votre ville : <font color=\"#0000FF\">$ville</font>\n");
echo("<br>Votre pays : <font color=\"#0000FF\">$pays</font>\n");
echo("<br>Votre telephone : <font color=\"#0000FF\">$telephone</font>\n");
echo("<br>Votre email : <font color=\"#0000FF\">$email</font>\n");
echo("<br>Votre affichage : <font color=\"#0000FF\">$affichage</font>\n");
echo("<br>Votre nombre de face : <font color=\"#0000FF\">$nombre_face</font>\n");
echo("<br>Votre durée : <font color=\"#0000FF\">$duree</font>\n");
echo("<br>Votre période : <font color=\"#0000FF\">$periode</font>\n");
echo("<p>&nbsp;</p>");
mail($MailTo, $MailSubject, $MailBody, $MailHeader); 

echo("<p>Votre message a bien été envoyé.<br>Merci de vos commentaires.");
echo("<p>&nbsp;</p><p>&nbsp;</p><p align=\"center\"><a href=\"index.htm\">Retour</strong></a></p>");
}
?>
</body>
</html>
En esperant que vous pourrez m'aider. Merci.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 mai 2008, 13:56

Utilise les balises "<?php ... ?>" plutôt que "<? ... ?>" pour du code php. En effet si le serveur ne reconnait pas les open short tags, alors ton code n'est pas interprété :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 104 Messages

27 mai 2008, 14:10

Oui justement je viens juste de le faire ^^.

Mais sa ne change pas, sa ne marche toujours pas..

Mais la page qui s'ouvre par la suite est differente maintenant. Voila ce que j'ai :
Notice: Undefined variable: email in C:\Program Files\EasyPHP 2.0b1\www\site\formulaire.php on line 25

Notice: Undefined variable: raison_sociale in C:\Program Files\EasyPHP 2.0b1\www\site\formulaire.php on line 35
Vous n'avez pas complété la raison sociale.

Notice: Undefined variable: poste_de_responsabilite in C:\Program Files\EasyPHP 2.0b1\www\site\formulaire.php on line 43
Vous n'avez pas complété le poste de responsabilité.

Notice: Undefined variable: nom in C:\Program Files\EasyPHP 2.0b1\www\site\formulaire.php on line 51
Vous n'avez pas complété le nom

Notice: Undefined variable: prenom in C:\Program Files\EasyPHP 2.0b1\www\site\formulaire.php on line 59
Vous n'avez pas complété le prenom

Notice: Undefined variable: adresse in C:\Program Files\EasyPHP 2.0b1\www\site\formulaire.php on line 67
Vous n'avez pas complété l'adresse

Notice: Undefined variable: ville in C:\Program Files\EasyPHP 2.0b1\www\site\formulaire.php on line 75
Vous n'avez pas complété la ville

Notice: Undefined variable: pays in C:\Program Files\EasyPHP 2.0b1\www\site\formulaire.php on line 83
Vous n'avez pas complété le pays

Notice: Undefined variable: telephone in C:\Program Files\EasyPHP 2.0b1\www\site\formulaire.php on line 91
Vous n'avez pas complété le telephone

Notice: Undefined variable: email in C:\Program Files\EasyPHP 2.0b1\www\site\formulaire.php on line 99
Vous n'avez pas complété l'e-mail

Notice: Undefined variable: affichage in C:\Program Files\EasyPHP 2.0b1\www\site\formulaire.php on line 113

Notice: Undefined variable: affichage in C:\Program Files\EasyPHP 2.0b1\www\site\formulaire.php on line 118

Notice: Undefined variable: MailBody in C:\Program Files\EasyPHP 2.0b1\www\site\formulaire.php on line 118

Notice: Undefined variable: nombre_face in C:\Program Files\EasyPHP 2.0b1\www\site\formulaire.php on line 121
Vous n'avez pas complété le nombre de face

Notice: Undefined variable: duree in C:\Program Files\EasyPHP 2.0b1\www\site\formulaire.php on line 129

Notice: Undefined variable: duree in C:\Program Files\EasyPHP 2.0b1\www\site\formulaire.php on line 134

Notice: Undefined variable: periode in C:\Program Files\EasyPHP 2.0b1\www\site\formulaire.php on line 137
Vous n'avez pas complété la durée de la période souhaitée


RETOUR
Pfffiiiooouuuu vivement que j'arrive a mieux gerer le php lol

Mammouth du PHP | 1353 Messages

27 mai 2008, 14:10

Ou est ce que tu affectes les valeurs à tes variables $raison_sociale, $poste_de_responsabilite...

Je ne vois aucun $_POST... peut etre tu ne l'as pas mis dans l'extrait de ton code mais pour récupérer tes variables il faudrait des instructions du style
if(isset($_POST["raison_sociale"])) $raison_sociale = $_POST["raison_sociale"];
Tu as testé les valeurs renvoyés par le formulaire avec des echo ou des print_r avant de faire le système de mail ?

EDIT : tes messages d'erreurs confirment le mien ;) le code ne peut pas deviner ce que c'est $raison_sociale... il faut lui donner la valeur postée par le formulaire, comme expliquée ci dessus
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 104 Messages

27 mai 2008, 14:20

Ok merci pour l'aide.

Je crois avoir compris (me reste pas mal de chose a apprendre en php je crois xD). Je fais les modifs, et je reviens vous dire si sa fonctionne (ou pas..). Mais si j'ai bien compris faut que je fasse du genre :
if(isset($_POST["raison_sociale"])) $raison_sociale = $_POST["raison_sociale"];{ 
echo("Vous n'avez pas complété la raison sociale.<br>"); 
$Envoi = 0; 
}
else {
$MailBody .= "Raison sociale : $raison_sociale\n";
}

if(isset($_POST["poste_de_responsabilite"])) $poste_de_responsabilite = $_POST["poste_de_responsabilite"];{
echo("Vous n'avez pas complété le poste de responsabilité.<br>");
$Envoi = 0;
}
else {
$MailBody .= "Poste de responsabilité : $poste_de_responsabilite\n";
}

Mammouth du PHP | 1353 Messages

27 mai 2008, 14:44

Attention : la fonction isset() ne sert qu'a définir si une variable existe ou pas. Une variable vide qui serait transmise serait considérée comme existante :
$variable = "";
if(isset($variable)) echo "True";
Ce code va afficher "True".

Pour tester si une variable est vide ou pas tu as la fonction empty() :)

Donc si tu veux etre sur à la fois que ta variable est passée par le formulaire (existe) et qu'elle contient quelque chose tu peux faire un mix des deux :
if(isset($variable) && !empty($variable)) //alors la variable existe et n'est pas vide (le ! sert à demander la condition contraire)

if(!isset($variable) || empty($variable)) //soit la valeur n'est pas définie soit elle est vide.
Dans ton cas tu peux simplement faire :
if(isset($variable) && !empty($variable))
{
//ce que tu veux
}
else
{
//ce que tu veux
}
J'espere que ca fait pas "trop" d un coup, je connais pas ton niveau en programmation en générale ni en php en particulier ;)
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 104 Messages

27 mai 2008, 17:29

Pffff bah dis donc.. En fait je debut, alors pas facil pour comprendre..

Je suis pas sur d'avoir compris, alors je vais te montrer un debut de code et tu me dira si c'est bien sa.. Car la j'avoue que je lutte un peu, et manque de bol je suis un peu cour en temps..

Donc si j'ai compris ce que tu as dis, je dois faire comme ça :
if(isset($raison_sociale) && !empty($raison_sociale)) // donc si la raison existe est n'est pas vide (c'est bien ca ?)
$MailBody .= "Raison sociale : $raison_sociale\n";
}
else {
echo("Vous n'avez pas complété la raison sociale.<br>"); 
$Envoi = 0; 
}
Ou est ce l'inverse ?
if(isset($raison_sociale) && !empty($raison_sociale)) // donc si la raison existe est n'est pas vide (c'est bien ca ?)
echo("Vous n'avez pas complété la raison sociale.<br>"); 
$Envoi = 0; 
}
else {
$MailBody .= "Raison sociale : $raison_sociale\n";
}
En tout cas merci pour ton aide, car seul j'y arriverai pas.. Et sa m'arrange qu'on m'aide vu que d'ici vendredi je dois avoir fini le codage du site.. Je lutte juste sur le formulaire (et un autre truc qui me prose probleme sur IE..)



[EDIT] Mais sinon avant que tu post ton precedent message, j'avais fait les modifications sur le code en entier, et quand j'avais test voila l'erreur que j'avais eu :

(d'abord le code php en entier remodifier) :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>

<body>
<?php

function check_mail($email) {
if( (preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $email)) ||
(preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',$email)) ) {
$host = explode('@', $email);
if(checkdnsrr($host[1].'.', 'MX') ) return true;
if(checkdnsrr($host[1].'.', 'A') ) return true;
if(checkdnsrr($host[1].'.', 'CNAME') ) return true;
}
return false;
}

$MailTo = "[email protected]";
$MailCc = "[email protected]";
$MailSubject = "DEVIS CIDOP";
$MailHeader = "From: $email";

$min_size="3";
$max_size="5000";



$Envoi = 1;


if(isset($_POST["raison_sociale"])) $raison_sociale = $_POST["raison_sociale"];{
echo("Vous n'avez pas complété la raison sociale.<br>");
$Envoi = 0;
}
else {
$MailBody .= "Raison sociale : $raison_sociale\n";
}

if(isset($_POST["poste_de_responsabilite"])) $poste_de_responsabilite = $_POST["poste_de_responsabilite"];{
echo("Vous n'avez pas complété le poste de responsabilité.<br>");
$Envoi = 0;
}
else {
$MailBody .= "Poste de responsabilité : $poste_de_responsabilite\n";
}

if(isset($_POST["nom"])) $nom = $_POST["nom"];{
echo("Vous n'avez pas complété le nom<br>");
$Envoi = 0;
}
else {
$MailBody .= "Nom : $nom\n";
}

if(isset($_POST["prenom"])) $prenom = $_POST["prenom"];{
echo("Vous n'avez pas complété le prenom<br>");
$Envoi = 0;
}
else {
$MailBody .= "Prénom : $prenom\n";
}

if(isset($_POST["adresse"])) $adresse = $_POST["adresse"];{
echo("Vous n'avez pas complété l'adresse<br>");
$Envoi = 0;
}
else {
$MailBody .= "Adresse : $adresse\n";
}

if(isset($_POST["ville"])) $ville = $_POST["ville"];{
echo("Vous n'avez pas complété la ville<br>");
$Envoi = 0;
}
else {
$MailBody .= "Ville : $ville\n";
}

if(isset($_POST["pays"])) $pays = $_POST["pays"];{
echo("Vous n'avez pas complété le pays<br>");
$Envoi = 0;
}
else {
$MailBody .= "Pays : $pays\n";
}

if(isset($_POST["telephone"])) $telephone = $_POST["telephone"];{
echo("Vous n'avez pas complété le telephone<br>");
$Envoi = 0;
}
else {
$MailBody .= "Telephone : $telephone\n";
}

if(isset($_POST["email"])) $email = $_POST["email"];{
echo("Vous n'avez pas complété l'e-mail<br>");
$Envoi = 0;
}
else {
if (check_mail($email)) {
$MailBody .= "Mail : $email\n";
}
else {
echo("L'adresse e-mail du champ n'est pas valide<br>");
$Envoi = 0;
}
}

if(isset($_POST["affichage"])) $affichage = $_POST["affichage"];{
echo("Vous avez oublié de choisir une valeur dans le menu déroulant.<br>");
$Envoi = 0;
}
else {
$MailBody .= "Affichage : $affichage\n";
}

if(isset($_POST["nombre_face"])) $nombre_face = $_POST["nombre_face"];{
echo("Vous n'avez pas complété le nombre de face<br>");
$Envoi = 0;
}
else {
$MailBody .= "Nombres de face : $nombre_face\n";
}

if(isset($_POST["duree"])) $duree = $_POST["duree"];{
echo("Vous avez oublié de choisir une valeur dans le menu déroulant.<br>");
$Envoi = 0;
}
else {
$MailBody .= "Durée : $duree\n";
}

if(isset($_POST["periode"])) $periode = $_POST["periode"];{
echo("Vous n'avez pas complété la durée de la période souhaitée<br>");
$Envoi = 0;
}
else {
$MailBody .= "Période : $periode\n";
}




if ($Envoi == 0) {
echo("<p><a href=\"Javascript:history.go(-1)\"><center><strong>RETOUR</strong></center></a></p>");
}


if ($Envoi == 1) {
echo("<p><strong>Raison sociale : <font color=\"#0000FF\">$raison_sociale</font>\n");
echo("<br>Votre poste : <font color=\"#0000FF\">$poste_de_responsabilite</font>\n");
echo("<br>Votre nom : <font color=\"#0000FF\">$nom</font>\n");
echo("<br>Votre prenom : <font color=\"#0000FF\">$prenom</font>\n");
echo("<br>Votre adresse: <font color=\"#0000FF\">$adresse</font>\n");
echo("<br>Votre ville : <font color=\"#0000FF\">$ville</font>\n");
echo("<br>Votre pays : <font color=\"#0000FF\">$pays</font>\n");
echo("<br>Votre telephone : <font color=\"#0000FF\">$telephone</font>\n");
echo("<br>Votre email : <font color=\"#0000FF\">$email</font>\n");
echo("<br>Votre affichage : <font color=\"#0000FF\">$affichage</font>\n");
echo("<br>Votre nombre de face : <font color=\"#0000FF\">$nombre_face</font>\n");
echo("<br>Votre durée : <font color=\"#0000FF\">$duree</font>\n");
echo("<br>Votre période : <font color=\"#0000FF\">$periode</font>\n");
echo("<p>&nbsp;</p>");
mail($MailTo, $MailSubject, $MailBody, $MailHeader);

echo("<p>Votre message a bien été envoyé.<br>Merci de vos commentaires.");
echo("<p>&nbsp;</p><p>&nbsp;</p><p align=\"center\"><a href=\"index.htm\">Retour</strong></a></p>");
}
?>
</body>
</html>
et voici l'erreur que j'ai eu par la suite :
Parse error: parse error, unexpected T_ELSE in C:\Program Files\EasyPHP 2.0b1\www\site\formulaire.php on line 39
(on remarquera qu'il y a du progres, on retrouve plus qu'une ligne d'erreur hihi)

Et ce qui correstpond a la ligne 39 est en gras :
if(isset($_POST["raison_sociale"])) $raison_sociale = $_POST["raison_sociale"];{
echo("Vous n'avez pas complété la raison sociale.<br>");
$Envoi = 0;
}
else {
$MailBody .= "Raison sociale : $raison_sociale\n";
}
Enfin en tout cas merci de te pencher sur mon cas lol

ViPHP
ViPHP | 2291 Messages

27 mai 2008, 17:56

Et comme ceci :?:
$raison_sociale = $_POST["raison_sociale"];
if(isset($_POST["raison_sociale"])) {
echo "Vous n'avez pas complété la raison sociale.<br>";
$Envoi = 0;
}
else {
$MailBody .= "Raison sociale : $raison_sociale\n";
}
?>

ViPHP
AB
ViPHP | 5818 Messages

28 mai 2008, 02:07

if(isset($variable) && !empty($variable)) //alors la variable existe et n'est pas vide (le ! sert à demander la condition contraire)
Oui mais c'est redondant car si !empty($variable) = true alors forcément isset($variable) = true
donc tu peux te contenter d'écrire if (!empty($variable)) :wink:

Mammouth du PHP | 1353 Messages

28 mai 2008, 09:27

if(isset($variable) && !empty($variable)) //alors la variable existe et n'est pas vide (le ! sert à demander la condition contraire)
Oui mais c'est redondant car si !empty($variable) = true alors forcément isset($variable) = true
donc tu peux te contenter d'écrire if (!empty($variable)) :wink:
Oui mais si la variable est pas définie empty($variable) va bugger non ? Alors que si on commence par le isset ca sort du if sans meme faire le empty...

EDIT : Autant pour moi, effectivement la fonction empty() gère le cas d'une variable non définie... les isset() ne sont donc pas nécessaire. Désolé. :p Mais pour d'autres cas hésite pas à utiliser cette fonction car certaines instructions bug si la variable n'existe pas :)
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 104 Messages

28 mai 2008, 12:18

Ok merci. Pour le moment sa ne marche toujours pas, mais il semblerai qu'il n'y est plus qu'une erreur au niveau de la confirmation du mail.. Un ami regarde mon code tout a l'heure et va voir si il trouve l'erreur, si sa marche je viendrai poster le code correct (au cas ou que quelqu'un en est besoin a un certain moment), et si sa ne fonctionne toujours pas.. je repasserai ici xD.

En tout cas merci pour votre aide.

PS :au passage j'ai un petit probleme au niveau de mon code HTML sur IE, je vais poster un topic dans quelques minutes dans l'autre partie du forum, si vous pensez pouvoir m'aider, hésiter a faire signe ^^

Merci

ViPHP
AB
ViPHP | 5818 Messages

28 mai 2008, 16:27

Autant pour moi, effectivement la fonction empty() gère le cas d'une variable non définie... les isset() ne sont donc pas nécessaire. Désolé. :p Mais pour d'autres cas hésite pas à utiliser cette fonction car certaines instructions bug si la variable n'existe pas :)
C'est logique puisque ces deux fonctions testent l'existence de la variable.
Et donc, comme tu le dis, avant d'utiliser (ou comparer) une variable on doit utiliser l'une ou l'autre de ces deux fonctions, à quelques exceptions près comme la fonction unset() qui peux se passer de cette vérification.

Petit cas particulier au passage : $a = null; isset($a) === false mais on peut néanmoins utiliser $a; par exemple echo $a ne générera pas d'erreur.

Eléphant du PHP | 104 Messages

28 mai 2008, 17:17

Bon me revoila de nouveau.

Malheuresement le code ne fonctionne toujours pas, les variables ne prennent pas en compte les valeurs du formulaire..

Pouvez vous m'aidez svp ? Voila le script le plus recent :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>

<body>
<?php

$MailBody = "";
$MailTo = "[email protected]";
$MailCc = "[email protected]";
$MailSubject = "DEVIS";
$MailHeader = "From: $email";



$min_size="3";
$max_size="5000";



$Envoi = 1;


if(isset($_POST["raison_sociale"])) 
{
	$raison_sociale = $_POST["raison_sociale"];
	echo 'Vous n\'avez pas complété la raison sociale.<br>';
	$Envoi = 0;
}
else 
{
	$MailBody .= "Raison sociale : $raison_sociale\n";
}

if(isset($_POST["poste_de_responsabilite"])) 
{
	$poste_de_responsabilite = $_POST["poste_de_responsabilite"];
	echo'Vous n\'avez pas complété le poste de responsabilité.<br>';
	$Envoi = 0;
}
else 
{
$MailBody .= "Poste de responsabilité : $poste_de_responsabilite\n";
}

if(isset($_POST["nom"])) 
{
	$nom = $_POST["nom"];
	echo'Vous n\'avez pas complété le nom<br>';
	$Envoi = 0;
}
else 
{
	$MailBody .= "Nom : $nom\n";
}

if(isset($_POST["prenom"])) 
{
	$prenom = $_POST["prenom"];
	echo'Vous n\'avez pas complété le prenom<br>';
	$Envoi = 0;
}
else 
{
$MailBody .= "Prénom : $prenom\n";
}

if(isset($_POST["adresse"])) 
{
	$adresse = $_POST["adresse"];
	echo'Vous n\'avez pas complété l\'adresse<br>';
	$Envoi = 0;
}
else 
{
$MailBody .= "Adresse : $adresse\n";
}

if(isset($_POST["ville"])) 
{
	$ville = $_POST["ville"];
	echo'Vous n\'avez pas complété la ville<br>';
	$Envoi = 0;
}
else 
{
$MailBody .= "Ville : $ville\n";
}

if(isset($_POST["pays"]))
{
	$pays = $_POST["pays"];
	echo'Vous n\'avez pas complété le pays<br>';
	$Envoi = 0;
}
else 
{
$MailBody .= "Pays : $pays\n";
}

if(isset($_POST["telephone"]))
{
	$telephone = $_POST["telephone"];
	echo'Vous n\'avez pas complété le telephone<br>';
	$Envoi = 0;
}
else 
{
$MailBody .= "Telephone : $telephone\n";
}

if(isset($_POST["email"]))
{
	$email = $_POST["email"];
	echo'Vous n\'avez pas complété l\'e-mail<br>';
	$Envoi = 0;
}
else 
{
	if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['email']))
    {
        $MailBody .= "Mail : $email\n";
    }
    else
    {
       echo 'Votre adresse E-Mail n\'a pas un format valide';
    }
}

if(isset($_POST["affichage"])) 
{
	$affichage = $_POST["affichage"];
	echo'Vous avez oublié de choisir une valeur dans le menu déroulant.<br>';
	$Envoi = 0;
}
else 
{
	$MailBody .= "Affichage : $affichage\n";
}

if(isset($_POST["nombre_face"]))
{
	$nombre_face = $_POST["nombre_face"];
	echo'Vous n\'avez pas complété le nombre de face<br>';
	$Envoi = 0;
}
else 
{
	$MailBody .= "Nombres de face : $nombre_face\n";
}

if(isset($_POST["duree"])) 
{
	$duree = $_POST["duree"];
	echo'Vous avez oublié de choisir une valeur dans le menu déroulant.<br>';
	$Envoi = 0;
}
else 
{
	$MailBody .= "Durée : $duree\n";
}

if(isset($_POST["periode"])) 
{
	$periode = $_POST["periode"];
	echo'Vous n\'avez pas complété la durée de la période souhaitée<br>';
	$Envoi = 0;
}
else 
{
	$MailBody .= "Période : $periode\n";
}




if ($Envoi == 0) {
echo'<p><a href=\"Javascript:history.go(-1)\"><center><strong>RETOUR</strong></center></a></p>';
}


if ($Envoi == 1) {
echo'<p><strong>Raison sociale : <font color=\"#0000FF\">'. $raison_sociale .'</font>';
echo'<br>Votre poste : <font color=\"#0000FF\">'. $poste_de_responsabilite .'</font>';
echo'<br>Votre nom : <font color=\"#0000FF\">'. $nom .'</font>';
echo'<br>Votre prenom : <font color=\"#0000FF\">'. $prenom .'</font>';
echo'<br>Votre adresse: <font color=\"#0000FF\">'. $adresse .'</font>';
echo'<br>Votre ville : <font color=\"#0000FF\">'. $ville .'</font>';
echo'<br>Votre pays : <font color=\"#0000FF\">'. $pays .'</font>';
echo'<br>Votre telephone : <font color=\"#0000FF\">'. $telephone .'</font>';
echo'<br>Votre email : <font color=\"#0000FF\">'. $email .'</font>';
echo'<br>Votre affichage : <font color=\"#0000FF\">'. $affichage .'</font>';
echo'<br>Votre nombre de face : <font color=\"#0000FF\">'. $nombre_face .'</font>';
echo'<br>Votre durée : <font color=\"#0000FF\">'. $duree .'</font>';
echo'<br>Votre période : <font color=\"#0000FF\">'. $periode .'</font>';
echo'<p>&nbsp;</p>';
mail($MailTo, $MailSubject, $MailBody, $MailHeader);

echo'<p>Votre message a bien été envoyé.<br>Merci de vos commentaires.';
echo'<p>&nbsp;</p><p>&nbsp;</p><p align=\"center\"><a href=\"index.htm\">Retour</strong></a></p>';
}
?>
</body>
</html>
Encore merci pour votre aide.

Mammouth du PHP | 1353 Messages

28 mai 2008, 17:26

je traduis ton code en raisonnement :
if(isset($_POST["raison_sociale"]))  
{ 
    $raison_sociale = $_POST["raison_sociale"]; 
    echo 'Vous n\'avez pas complété la raison sociale.<br>'; 
    $Envoi = 0; 
} 
Cela donne :

Si ma variable $_POST est definie, alors j'affecte $raison_social et je lui dit que la variable est vide puis met $envoi à 0.

Je pense que c'est l'inverse que tu veux faire ;)

Exemple :
if(empty($_POST["raison_sociale"]))  //si ma variable posté est vide ou inexistante
{ 
    echo 'Vous n\'avez pas complété la raison sociale.<br>'; 
    $Envoi = 0; 
} 
else  //sinon
{ 
    $raison_sociale = $_POST["raison_sociale"]; 
    $MailBody .= "Raison sociale : $raison_sociale\n"; 
} 
parce que dans ton exemple précédent tu définis la variable dans un cas et tu l'utilises dans l'autre... ca ne peut pas marcher... tu ne rentres Jamais dans un If et dans son Else, c'est toujours l'un ou l'autre... (else = sinon)
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 104 Messages

28 mai 2008, 20:05

Encore merci pour ton aide, mais je pense que je vais encore en avoir besoin ^^.
Je viens de changer avec ce que tu m'as dis. Maintenant j'ai ça en erreur :
Notice: Undefined variable: email in C:\Program Files\EasyPHP 2.0b1\www\site\formulaire.php on line 15
Vous n'avez pas complété la raison sociale.
Vous n'avez pas complété le poste de responsabilité.
Vous n'avez pas complété le nom
Vous n'avez pas complété le prenom
Vous n'avez pas complété l'adresse
Vous n'avez pas complété la ville
Vous n'avez pas complété le pays
Vous n'avez pas complété le telephone
Vous n'avez pas complété l'e-mail
Vous avez oublié de choisir une valeur dans le menu déroulant.
Vous n'avez pas complété le nombre de face
Vous avez oublié de choisir une valeur dans le menu déroulant.
Vous n'avez pas complété la durée de la période souhaitée
Pourtant j'ai fait comme tu m'as dis (enfin je crois) :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>

<body>
<?php

$MailBody = "";
$MailTo = "[email protected]";
$MailCc = "[email protected]";
$MailSubject = "DEVIS CIDOP";
$MailHeader = "From: $email";



$min_size="3";
$max_size="5000";



$Envoi = 1;


if(empty($_POST["raison_sociale"])) 
{
	echo 'Vous n\'avez pas complété la raison sociale.<br>';
	$Envoi = 0;
}
else 
{
	$raison_sociale = $_POST["raison_sociale"];
	$MailBody .= "Raison sociale : $raison_sociale\n";
}

if(empty($_POST["poste_de_responsabilite"])) 
{
	echo'Vous n\'avez pas complété le poste de responsabilité.<br>';
	$Envoi = 0;
}
else 
{
	$poste_de_responsabilite = $_POST["poste_de_responsabilite"];
	$MailBody .= "Poste de responsabilité : $poste_de_responsabilite\n";
}

if(empty($_POST["nom"])) 
{
	echo'Vous n\'avez pas complété le nom<br>';
	$Envoi = 0;
}
else 
{
	$nom = $_POST["nom"];
	$MailBody .= "Nom : $nom\n";
}

if(empty($_POST["prenom"])) 
{
	echo'Vous n\'avez pas complété le prenom<br>';
	$Envoi = 0;
}
else 
{
	$prenom = $_POST["prenom"];
	$MailBody .= "Prénom : $prenom\n";
}

if(empty($_POST["adresse"])) 
{
	echo'Vous n\'avez pas complété l\'adresse<br>';
	$Envoi = 0;
}
else 
{
	$adresse = $_POST["adresse"];
	$MailBody .= "Adresse : $adresse\n";
}

if(empty($_POST["ville"])) 
{
	echo'Vous n\'avez pas complété la ville<br>';
	$Envoi = 0;
}
else 
{
	$ville = $_POST["ville"];
	$MailBody .= "Ville : $ville\n";
}

if(empty($_POST["pays"]))
{
	echo'Vous n\'avez pas complété le pays<br>';
	$Envoi = 0;
}
else 
{
	$pays = $_POST["pays"];
	$MailBody .= "Pays : $pays\n";
}

if(empty($_POST["telephone"]))
{
	echo'Vous n\'avez pas complété le telephone<br>';
	$Envoi = 0;
}
else 
{
	$telephone = $_POST["telephone"];
	$MailBody .= "Telephone : $telephone\n";
}

if(empty($_POST["email"]))
{
	echo'Vous n\'avez pas complété l\'e-mail<br>';
	$Envoi = 0;
}
else 
{
	if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['email']))
    {
		$email = $_POST["email"];
        $MailBody .= "Mail : $email\n";
    }
    else
    {
       echo 'Votre adresse E-Mail n\'a pas un format valide';
    }
}

if(empty($_POST["affichage"])) 
{
	echo'Vous avez oublié de choisir une valeur dans le menu déroulant.<br>';
	$Envoi = 0;
}
else 
{
	$affichage = $_POST["affichage"];
	$MailBody .= "Affichage : $affichage\n";
}

if(empty($_POST["nombre_face"]))
{
	echo'Vous n\'avez pas complété le nombre de face<br>';
	$Envoi = 0;
}
else 
{
	$nombre_face = $_POST["nombre_face"];
	$MailBody .= "Nombres de face : $nombre_face\n";
}

if(empty($_POST["duree"])) 
{
	echo'Vous avez oublié de choisir une valeur dans le menu déroulant.<br>';
	$Envoi = 0;
}
else 
{
	$duree = $_POST["duree"];
	$MailBody .= "Durée : $duree\n";
}

if(empty($_POST["periode"])) 
{
	echo'Vous n\'avez pas complété la durée de la période souhaitée<br>';
	$Envoi = 0;
}
else 
{
	$periode = $_POST["periode"];
	$MailBody .= "Période : $periode\n";
}




if ($Envoi == 0) {
echo'<p><a href=\"Javascript:history.go(-1)\"><center><strong>RETOUR</strong></center></a></p>';
}


if ($Envoi == 1) {
echo'<p><strong>Raison sociale : <font color=\"#0000FF\">'. $raison_sociale .'</font>';
echo'<br>Votre poste : <font color=\"#0000FF\">'. $poste_de_responsabilite .'</font>';
echo'<br>Votre nom : <font color=\"#0000FF\">'. $nom .'</font>';
echo'<br>Votre prenom : <font color=\"#0000FF\">'. $prenom .'</font>';
echo'<br>Votre adresse: <font color=\"#0000FF\">'. $adresse .'</font>';
echo'<br>Votre ville : <font color=\"#0000FF\">'. $ville .'</font>';
echo'<br>Votre pays : <font color=\"#0000FF\">'. $pays .'</font>';
echo'<br>Votre telephone : <font color=\"#0000FF\">'. $telephone .'</font>';
echo'<br>Votre email : <font color=\"#0000FF\">'. $email .'</font>';
echo'<br>Votre affichage : <font color=\"#0000FF\">'. $affichage .'</font>';
echo'<br>Votre nombre de face : <font color=\"#0000FF\">'. $nombre_face .'</font>';
echo'<br>Votre durée : <font color=\"#0000FF\">'. $duree .'</font>';
echo'<br>Votre période : <font color=\"#0000FF\">'. $periode .'</font>';
echo'<p>&nbsp;</p>';
mail($MailTo, $MailSubject, $MailBody, $MailHeader);

echo'<p>Votre message a bien été envoyé.<br>Merci de vos commentaires.';
echo'<p>&nbsp;</p><p>&nbsp;</p><p align=\"center\"><a href=\"index.htm\">Retour</strong></a></p>';
}
?>
</body>
</html>
Aaahhh c'est trop dur le php, j'en ai marre, je desepere, sa fonctionnera jamais.. snif..