par
Cyrano » 22 mars 2005, 12:57
Oui, regarde, j'ai un peu retouché ton code pour simplifier mais surtout pour t'éviter certains messages d'erreurs:
<?php
session_start();
require_once('../Connection/cnn.php');
# --------------------------------------------
# On teste si le bouton submit a été cliqué
if (isset ($_POST['Submit']))
{
# initialisation des variables du 1er formulaire
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$nomEntr=$_POST['nomEntr'];
$adresse=$_POST['adresse'];
$ville=$_POST['ville'];
$cp=$_POST['cp'];
$tel=$_POST['tel'];
$FORMemail=$_POST['FORMemail'];
$FORMpass=$_POST['FORMpass'];
$FORMpass2=$_POST['FORMpass2'];
// initialisation des variables du 2e formulaire (2e adresse)
$nomF=$_POST['nomF'];
$prenomF=$_POST['prenomF'];
$nomEntrF=$_POST['nomEntrF'];
$adresseF=$_POST['adresseF'];
$villeF=$_POST['villeF'];
$cpF=$_POST['cpF'];
$telF=$_POST['telF'];
/* On liste toutes les conditions obligatoires
De cette manière, si tout est bon, on sort directement */
if(empty($nom) || empty($prenom) || empty($nomEntr) || empty($adresse) || empty($ville) || empty($cp) || empty($tel) || empty($FORMemail) || (!(eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $FORMemail))) || (empty ($FORMpass)) || (!($FORMpass2=$FORMpass)) || (empty ($nomF)) || (empty ($prenomF)) || (empty ($nomEntrF)) || (empty ($adresseF)) || (empty ($villeF)) || (empty ($cpF)) || (empty ($telF)))
{
/* Au moins une des conditions n'est pas remplie, on traite individuellement chaque condition */
print("Formulaire incomplet : ");
if (empty($nom))
{
print("veuillez saisir votre nom<br>");
}
if(empty($prenom))
{
print("veuillez saisir votre prenom<br>");
}
if(empty ($nomEntr))
{
print("veuillez saisir la raison sociale de l'entreprise<br>");
}
if(empty ($adresse))
{
print("veuillez saisir votre adresse <br>");
}
if(empty ($ville))
{
print("veuillez entrer votre ville<br>");
}
if(empty ($cp))
{
print("veuillez saisir votre code postal (5 chiffres)<br>");
}
if(empty ($tel))
{
print("veuillez entrer votre numéro de téléphone, il nous est indispensable pour vous joindre en cas de problème.<br>");
}
if(empty ($FORMemail))
{
print("veuillez entrer votre mail.");
}
if(!(eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $FORMemail)))
{
echo ("L'adresse est invalide, veuillez re-saisir votre adresse, svp<br><a href='javascript:history.go(-1)'>Retour au formulaire</a><br>");
}
if(empty ($FORMpass))
{
print("veuillez entrer un mot de passe (minimum 6 caractères).<br>");
}
if(!($FORMpass2=$FORMpass))
{
print("Vous devez entrer le même mot de passe...<a href='javascript:history.go(-1)'>Retour au formulaire</a><br>");
}
if(empty ($nomF))
{
print("veuillez entrer le nom dans la section adresse de livraison<br>");
}
if(empty ($prenomF))
{
print("veuillez entrer le prénom dans la section adresse de livraison<br>");
}
if(empty ($nomEntrF))
{
print("veuillez saisir la raison sociale de l'entreprise dans la section adresse de livraison<br>");
}
if(empty ($adresseF))
{
print("veuillez saisir l'adresse de livraison <br>");
}
if(empty ($villeF))
{
print("veuillez saisir la ville de livraison<br>");
}
if(empty ($cpF))
{
print("veuillez saisir le code postal (5 chiffres) de l'adresse de livraison<br>");
}
if(empty ($telF))
{
print("veuillez entrer le numéro de téléphone de l'adresse de livraison, il nous est indispensable pour vous joindre en cas de problème<br>");
}
print("<a href='javascript:history.go(-1)'>Retour au formulaire</a><br>");
}
}
# --------------------------------------------
if ($_POST['inscription']=="ok")
{
# TESTE SI LE MAIL EXISTE
# selection bdd
mysql_select_db($database_cnn, $cnn);
# suppression des espaces
$FORMemail=trim($FORMemail);
# vérifie si le mail existe déjà dans la base
$query_rsClient="SELECT email FROM clients WHERE email='".$FORMemail."'";
$rsClient=mysql_query($query_rsClient, $cnn);
$totalRows_rsClient=mysql_num_rows($rsClient);
# SI LE MAIL N'EXISTE PAS, ENREGISTREMENT DES DONNEES DANS LA TABLE "CLIENT"
if ($totalRows_rsClient==0)
{
$insert="INSERT INTO clients (nom, prenom, nomEntr, adresse, ville, cp, tel, email, pass, nomF, prenomF, nomEntrF, adresseF, villeF, cpF, telF, diff)";
$insert .="VALUES ('".$nom."', '".$prenom."', '".$adresse."', '".$ville."', '".$cp."', '".$tel."', '".$FORMemail."', '".$FORMpass."', '".$nomF."', '".$prenomF."', '".$nomEntrF."', '".$adresseF."', '".$villeF."', '".$cpF."', '".$telF."', '".diff."')";
$result1=mysql_query($insert, $cnn);
$clientID=mysql_insert_id(); # récupère l'identifiant client attribué
echo $nomF;
# mémorisation des paramètres dans la session
$statut="client";
$_SESSION['clientID']==$clientID;
$_SESSION['statut']==$statut;
header("Location:commande.php"); // redirection vers la page commande
}
# SI LE MAIL EXISTE DEJA, AFFICHAGE MESSAGE ERREUR
else
{
$erreur_mail=1;
}
}
?>
L'ordre des choses a une grande importance, j'ai revu la première partie de ton code, mon script fonctionne comme ça. Que tu traites les données ensuite vers la base de données n'a aucune importance puisque on commence par valider ces données avant toute autre manipulation. J'ai fait une autre chose: j'ai viré les "exit" qui arrêtent le code, donc plus rien n'est traité. En faisant de cette manière, je vérifie tout et j'affiche tout, mais seulement les messages opportuns, si la condition est remplie, on passe au test suivant. Ce que je n'ai pas mis, c,est un else{} après le premier if ; si en effet il n'y a pas d'erreur, on passe au traitement.
Tu devrais quand même regarder mon script: fais une pose et décortique le, tu vas voir qu'en fin de compte, c'est très simple et logique.
Oui, regarde, j'ai un peu retouché ton code pour simplifier mais surtout pour t'éviter certains messages d'erreurs:
[php]<?php
session_start();
require_once('../Connection/cnn.php');
# --------------------------------------------
# On teste si le bouton submit a été cliqué
if (isset ($_POST['Submit']))
{
# initialisation des variables du 1er formulaire
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$nomEntr=$_POST['nomEntr'];
$adresse=$_POST['adresse'];
$ville=$_POST['ville'];
$cp=$_POST['cp'];
$tel=$_POST['tel'];
$FORMemail=$_POST['FORMemail'];
$FORMpass=$_POST['FORMpass'];
$FORMpass2=$_POST['FORMpass2'];
// initialisation des variables du 2e formulaire (2e adresse)
$nomF=$_POST['nomF'];
$prenomF=$_POST['prenomF'];
$nomEntrF=$_POST['nomEntrF'];
$adresseF=$_POST['adresseF'];
$villeF=$_POST['villeF'];
$cpF=$_POST['cpF'];
$telF=$_POST['telF'];
/* On liste toutes les conditions obligatoires
De cette manière, si tout est bon, on sort directement */
if(empty($nom) || empty($prenom) || empty($nomEntr) || empty($adresse) || empty($ville) || empty($cp) || empty($tel) || empty($FORMemail) || (!(eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $FORMemail))) || (empty ($FORMpass)) || (!($FORMpass2=$FORMpass)) || (empty ($nomF)) || (empty ($prenomF)) || (empty ($nomEntrF)) || (empty ($adresseF)) || (empty ($villeF)) || (empty ($cpF)) || (empty ($telF)))
{
/* Au moins une des conditions n'est pas remplie, on traite individuellement chaque condition */
print("Formulaire incomplet : ");
if (empty($nom))
{
print("veuillez saisir votre nom<br>");
}
if(empty($prenom))
{
print("veuillez saisir votre prenom<br>");
}
if(empty ($nomEntr))
{
print("veuillez saisir la raison sociale de l'entreprise<br>");
}
if(empty ($adresse))
{
print("veuillez saisir votre adresse <br>");
}
if(empty ($ville))
{
print("veuillez entrer votre ville<br>");
}
if(empty ($cp))
{
print("veuillez saisir votre code postal (5 chiffres)<br>");
}
if(empty ($tel))
{
print("veuillez entrer votre numéro de téléphone, il nous est indispensable pour vous joindre en cas de problème.<br>");
}
if(empty ($FORMemail))
{
print("veuillez entrer votre mail.");
}
if(!(eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,3}$", $FORMemail)))
{
echo ("L'adresse est invalide, veuillez re-saisir votre adresse, svp<br><a href='javascript:history.go(-1)'>Retour au formulaire</a><br>");
}
if(empty ($FORMpass))
{
print("veuillez entrer un mot de passe (minimum 6 caractères).<br>");
}
if(!($FORMpass2=$FORMpass))
{
print("Vous devez entrer le même mot de passe...<a href='javascript:history.go(-1)'>Retour au formulaire</a><br>");
}
if(empty ($nomF))
{
print("veuillez entrer le nom dans la section adresse de livraison<br>");
}
if(empty ($prenomF))
{
print("veuillez entrer le prénom dans la section adresse de livraison<br>");
}
if(empty ($nomEntrF))
{
print("veuillez saisir la raison sociale de l'entreprise dans la section adresse de livraison<br>");
}
if(empty ($adresseF))
{
print("veuillez saisir l'adresse de livraison <br>");
}
if(empty ($villeF))
{
print("veuillez saisir la ville de livraison<br>");
}
if(empty ($cpF))
{
print("veuillez saisir le code postal (5 chiffres) de l'adresse de livraison<br>");
}
if(empty ($telF))
{
print("veuillez entrer le numéro de téléphone de l'adresse de livraison, il nous est indispensable pour vous joindre en cas de problème<br>");
}
print("<a href='javascript:history.go(-1)'>Retour au formulaire</a><br>");
}
}
# --------------------------------------------
if ($_POST['inscription']=="ok")
{
# TESTE SI LE MAIL EXISTE
# selection bdd
mysql_select_db($database_cnn, $cnn);
# suppression des espaces
$FORMemail=trim($FORMemail);
# vérifie si le mail existe déjà dans la base
$query_rsClient="SELECT email FROM clients WHERE email='".$FORMemail."'";
$rsClient=mysql_query($query_rsClient, $cnn);
$totalRows_rsClient=mysql_num_rows($rsClient);
# SI LE MAIL N'EXISTE PAS, ENREGISTREMENT DES DONNEES DANS LA TABLE "CLIENT"
if ($totalRows_rsClient==0)
{
$insert="INSERT INTO clients (nom, prenom, nomEntr, adresse, ville, cp, tel, email, pass, nomF, prenomF, nomEntrF, adresseF, villeF, cpF, telF, diff)";
$insert .="VALUES ('".$nom."', '".$prenom."', '".$adresse."', '".$ville."', '".$cp."', '".$tel."', '".$FORMemail."', '".$FORMpass."', '".$nomF."', '".$prenomF."', '".$nomEntrF."', '".$adresseF."', '".$villeF."', '".$cpF."', '".$telF."', '".diff."')";
$result1=mysql_query($insert, $cnn);
$clientID=mysql_insert_id(); # récupère l'identifiant client attribué
echo $nomF;
# mémorisation des paramètres dans la session
$statut="client";
$_SESSION['clientID']==$clientID;
$_SESSION['statut']==$statut;
header("Location:commande.php"); // redirection vers la page commande
}
# SI LE MAIL EXISTE DEJA, AFFICHAGE MESSAGE ERREUR
else
{
$erreur_mail=1;
}
}
?>[/php]
L'ordre des choses a une grande importance, j'ai revu la première partie de ton code, mon script fonctionne comme ça. Que tu traites les données ensuite vers la base de données n'a aucune importance puisque on commence par valider ces données avant toute autre manipulation. J'ai fait une autre chose: j'ai viré les "exit" qui arrêtent le code, donc plus rien n'est traité. En faisant de cette manière, je vérifie tout et j'affiche tout, mais seulement les messages opportuns, si la condition est remplie, on passe au test suivant. Ce que je n'ai pas mis, c,est un else{} après le premier if ; si en effet il n'y a pas d'erreur, on passe au traitement.
Tu devrais quand même regarder mon script: fais une pose et décortique le, tu vas voir qu'en fin de compte, c'est très simple et logique.