Probleme pour l'envoi d'un formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Probleme pour l'envoi d'un formulaire

par Ariochs » 29 mai 2008, 18:11

Nan mais tu as toute a fait raison.

Mais bon, meme avec ce que tu m'as dis sa fonctionne pas.. Voila ce que sa me sors toujours :
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
Voici le code remodifier apres ta reponse :
<!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";



$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";
		$MailHeader = "From: $email";
    }
    else
    {
       echo 'Votre adresse E-Mail n\'a pas un format valide';
	   $Envoi = 0;
    }
}

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>
Encore merci de venir repondre regulierement pour m'aider a trouver mon probleme, c'est vraiment sympa

par guilt92 » 29 mai 2008, 17:03

Notice: Undefined variable: email in C:\Program Files\EasyPHP 2.0b1\www\site\formulaire.php on line 15
Signifie :

Erreur : variable email non definie à la ligne 15.

Hors si tu regardes la ligne 15 (je suppose) que c'est :
$MailHeader = "From: $email";
Tu fais cela en début de fichier, bien avant avoir testé l'existence du $_POST et avoir affecté $email à cette variable... Il faudrait plutot le faire au même endroit que
$MailBody .= "Mail : $email\n";
qui lui n'a lieu que si $email est défini...

Autre chose, je pense que si l'email est incorrect, en plus de faire ton
echo 'Votre adresse E-Mail n\'a pas un format valide'; 
tu devrais aussi faire
$Envoi = 0; 
parce que c'est comme si elle était pas remplie... Enfin c'est toi qui vois, peut etre que dans ton contexte ce que je dis n'est pas pertinent ;)

par Ariochs » 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..

par guilt92 » 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)

par Ariochs » 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.

par AB » 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.

par Ariochs » 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

par guilt92 » 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 :)

par AB » 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:

par dunbar » 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";
}
?>

par Ariochs » 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

par guilt92 » 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 ;)

par Ariochs » 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";
}

par guilt92 » 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

par Ariochs » 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