[Resolu][Vérification de doublon dans la BDD

[Vérification de doublon dans la BDD [Resolu] - PHP - Programmation

Marsh Posté le 07-03-2006 à 12:56:34    

Hello c'est encore moi (dixit pb de cookies :) )
 
Alors sur mon code d'ajout d'utilisateur dans la bdd cette fois ce trouve le soucis. Enfin c'est pas un souci c'est que je ne sais pas comment faire.
 
Pour le moment tout fonctionne bien seulement on peut enregistrer deux fois le même utilisateur dans la bdd ce qui pose problème évidemment.
 
voici mon code actuelle
 

Code :
  1. <?
  2. // Connection à la base de donnée
  3. // ******************************
  4. require("..\inc\inc_connexion.php" );
  5. $db_link = mysql_connect($sql_serveur,$sql_user,$sql_passwd);
  6. // ------ AJOUT D'UN UTILISATEUR --------
  7. // **************************************
  8. if(isset($_POST['pseudo'])){
  9. if(($_POST['pseudo'] == "" ) || ($_POST['password'] == "" )){
  10.  header("Location:add_users.php?erreur=empty" );
  11. }
  12. else if($_POST['password'] == $_POST['password2']){
  13.  $pseudo = $_POST['pseudo'];
  14.  $password = md5($_POST['password']); // ici, on crypte le mot de passe à l'aide de MD5 (c'est tout simple non ? :)
  15.  $nom = $_POST['nom'];
  16.  $prenom = $_POST['prenom'];
  17.  $email = $_POST['email'];
  18.  $birthday = $_POST['birthday'];
  19.  $localisation = $_POST['localisation'];
  20.  $rang = '0';
  21.  $validation = '0';
  22. // on fait l'INSERT dans la base de données
  23.  $add_user = sprintf("INSERT INTO users (pseudo, password, nom, prenom, email, birthday, localisation, rang, validation) VALUES ('$pseudo', '$password', '$nom', '$prenom', '$email', '$birthday', '$localisation','$rang','$validation')" );
  24.     mysql_select_db($sql_bdd, $db_link);
  25.     $result = mysql_query($add_user, $db_link) or die(mysql_error());
  26.  header("Location:../index.php?add=ok" );
  27. }
  28. else{
  29. header("Location:add_users.php?erreur=pass" );
  30. }
  31. }
  32. ?>


 
J'ai essayé plein de chose mais je n'ai jamais reussi je pense qu'il faut que je fasse cela dès le debut après ce bout de code :
 

Code :
  1. if(isset($_POST['pseudo'])){
  2. if(($_POST['pseudo'] == "" ) || ($_POST['password'] == "" )){
  3.  header("Location:add_users.php?erreur=empty" );
  4. }


 
Mais franchement je ne vois pas comment car sinon il me saute toute l'étape du reste de la vérification du formulaire
 
Une tite aide siou plait :)


Message édité par hyptnos le 15-03-2006 à 13:16:30
Reply

Marsh Posté le 07-03-2006 à 12:56:34   

Reply

Marsh Posté le 07-03-2006 à 13:22:44    

Ben met un index unique sur ton champs pseudo dans ta BDD tout simplement ..

Reply

Marsh Posté le 07-03-2006 à 13:43:45    

GaSPaRD77 a écrit :

Ben met un index unique sur ton champs pseudo dans ta BDD tout simplement ..


Oui mais il faut alors traiter l'erreur sql, parce que là il a un peu l'air de faire des die quand ça plante.
 
Sinon tu fais un count sur ta table pour vérifier si le pseudo existe, si oui affichage page d'erreur, sinon insert!

Reply

Marsh Posté le 07-03-2006 à 20:37:51    

Mais faut il que je fasse une boucle a part ou je l'inclu a la premiere boucle celle ou il verifie l'existance d'un pseudo.

Reply

Marsh Posté le 07-03-2006 à 21:02:28    

coucou
sprintf c pas booooo
enfin bon un peu de detail..

Code :
  1. 1.
  2.       <?
  3.    2.
  4.       // Connection à la base de donnée
  5.    3.
  6.       // ******************************
  7.    4.
  8.      
  9.    5.
  10.       require("..\inc\inc_connexion.php" );
  11.    6.
  12.       $db_link = mysql_connect($sql_serveur,$sql_user,$sql_passwd);
  13.    7.
  14.      
  15.    8.
  16.       // ------ AJOUT D'UN UTILISATEUR --------
  17.    9.
  18.       // **************************************
  19.   10.
  20.      
  21.   11.
  22.       if(isset($_POST['pseudo'])){
  23.   12.
  24.           if(($_POST['pseudo'] == "" ) || ($_POST['password'] == "" )){
  25.   13.
  26.               header("Location:add_users.php?erreur=empty" );
  27.   14.
  28.           }
  29.   15.
  30.      
  31.   16.
  32.           else if($_POST['password'] == $_POST['password2']){
  33.   17.       
  34.   18.
  35.               $pseudo = $_POST['pseudo'];
  36.   19.
  37.               $password = md5($_POST['password']); // ici, on crypte le mot de passe à l'aide de MD5 (c'est tout simple non ? :)
  38.   20.
  39.               $nom = $_POST['nom'];
  40.   21.
  41.               $prenom = $_POST['prenom'];
  42.   22.
  43.               $email = $_POST['email'];
  44.   23.
  45.               $birthday = $_POST['birthday'];
  46.   24.
  47.               $localisation = $_POST['localisation'];
  48.   25.
  49.               $rang = '0';
  50.   26.
  51.               $validation = '0';
  52.   27.       
  53.   28.
  54.      
  55.   29.
  56.      
  57.   30.
  58.           // on fait l'INSERT dans la base de données
  59. mysql_select_db($sql_bdd, $db_link);
  60.   31. ///MAIS LA ON VERIFIFE D'ABORD
  61. $req='select count(*) as nb from users where pseudo="'.$pseudo.'"';
  62. $dq=mysql_query($req);
  63. $res=mysql_fetch_array($dq);
  64. if(isset($res['nb'])&&!empty($res['nb'])){
  65. //empty detecte les valeurs a 0...
  66. //et la il y a deja un utilisateur connecte
  67.     header("Location:../index.php?error=pb_utilisateur_deja_existant" );
  68. }else{
  69.               $add_user = sprintf("INSERT INTO users (pseudo, password, nom, prenom, email, birthday, localisation, rang, validation) VALUES ('$pseudo', '$password', '$nom', '$prenom', '$email', '$birthday', '$localisation','$rang','$validation')" );
  70.   32.
  71.              
  72.   33.
  73.                $result = mysql_query($add_user, $db_link) or die(mysql_error());
  74.   34.
  75.               header("Location:../index.php?add=ok" );
  76. }
  77.   35.
  78.           }
  79.   36.
  80.      
  81.   37.
  82.           else{
  83.   38.
  84.           header("Location:add_users.php?erreur=pass" );
  85.   39.
  86.           }
  87.   40.
  88.       }
  89.   41.
  90.      
  91.   42.
  92.       ?>


 
 
 
juste avant l'insert tu regarde s'il existe deja un utilisateur, tu peux aussi faire un mysql_num_rows ou autre....
 
Desole pour l'indentation ou les numero je n'avais pas d'editeur sous la main...juste de quoi faire un copier coller....

Reply

Marsh Posté le 07-03-2006 à 22:04:32    

C'est pas grave
je comprend en tout cas que tu fais en gros on laisse ma vérif pseudo, password comme c'est mais on vérifie l'existence d'un pseudo existant juste avant l'insert grace à une condition.
 
C'est vrai que cela parrait logique.
 
Je te remerci je vais tester cela demain.
 
Par contre si vous pouvez passer sur le topic concernant les cookies avec firefox cela serai sympa j'ai un gros souci et personne trouve :)

Reply

Marsh Posté le 15-03-2006 à 13:17:50    

Bon je viens (seulement) de tester, après une remise en forme du code , création des codes erreur, et test de creation de compte c'est niquel
 
Merci a tous :)
 
PS: Cependant mon probleme de cookies est toujours pas resolu :(

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed