Verification champ formulaire avec bdd mysql

Fermé
gilles - 24 août 2009 à 17:31
 le père - 24 août 2009 à 17:43
Bonjour,

Voilà mon code PHP dont le but est : de comparer le champ nom qu'on envoie et le champ nom dans la base MySQL, de ne rien faire si le nom existe déjà dans la base sinon d'entrer les données dans la base.

code :
while($donnees = mysql_fetch_array($reponse)){

if($_POST['nom'] == $donnees['clients']){
echo "<br> 1- je m'affiche si le nom que je viens de rentrer existe dans la base";
break;

}else{
echo "<br> 2- je m'affiche si les infos sont rentrées dans la base";
mysql_query("insert into infosclientsdt1 values('', '".$_POST['nom']."', '".$_POST['propart']."', '".$_POST['adresse']."', '".$_POST['ville']."', '".$_POST['email']."', '".$_POST['numdtfixe']."', '".$_POST['numdtmobile']."', '".$_POST['datenaissance']."', '', '', '', '', '', '', '', '')");

}
}

voilà mes problème:
1) lorsqu'un nom existant déjà dans la base est envoyé petit 1- s'affiche mais également 2-
2) petit 2- s'affiche puis 1-, cela voudrait donc dire que le else s'execute avant le if ?

d'avance merci de votre aide
A voir également:

1 réponse

Bonjour

Tu fais un while. Donc, selon de nombre de réponses à la requête qui a généré $reponse, ta boucle va être exécutée 0,1,2...1000 fois. Certaines fois, c'est le if qui est vrai, certaines fois c'est le else.
Si tu as une requête du style SELECT * sans WHERE, tu vas parcourir ta base et chaque fois que tu trouveras une ligne que tu ne connais pas déjà, tu vas en ajouter une nouvelle. Tu doubles (presque) le nombre de lignes chaque fois que tu tapes un nouveau noom. Elle va très vite exploser !

Tu devrais faire un select avec un WHERE pour savoir si une personne est déjà inscrite. S'il y a au moins une réponse, tu affiches le 1, sinon, tu affiches le 2 et tu fais le INSERT, mais une seule fois (pas de while)
0