Afficher message si duplicata de champ ID

Afficher message si duplicata de champ ID - SQL/NoSQL - Programmation

Marsh Posté le 08-06-2005 à 11:13:18    

Bonjour à tous,
Je suis en train de créer un formulaire en php pour insérer des données dans un BD sous mysql. J'aimerais gérer le probleme du duplicata de champ si la nouvelle clé est deja présente dans la base.
L'erreur que retourne mysql si problème de duplicata de champs est :  

Code :
  1. #1062 - Duplicata du champ


 
Voila mon idée:
 

Code :
  1. $resultat_insertion = mysql_query ($requete_insertion) or die('Erreur SQL !  '.$requete_insertion.'<br>'.mysql_error());  ;
  2. if ($resultat_insertion == "????" ) {
  3.  echo 'Identifiant deja presente dans la base';
  4.  }


 
Est -il possible de gérer ce probleme en comparant ce que retourne mysql avec quelque chose? J'ai essayé 1062 mais ça ne marche pas.
Avez vous une idée?
MErci  :hello:  

Reply

Marsh Posté le 08-06-2005 à 11:13:18   

Reply

Marsh Posté le 08-06-2005 à 11:16:06    

tu peux faire un :

Code :
  1. select id from Tatable where $nouveauId in (select id from Tatable)


si tu as une reponse a ta requete affiche ton message sinon fait ton insert

Reply

Marsh Posté le 08-06-2005 à 11:24:54    

oui exact, mais je voulais savoir si c'etait possible de gérer les retours d'erreurs, du coup ça evite de faire des requêtes en plus... Si il n'y as pas de clé, l'insert se passe bien, si par contre Duplicata de la clé, alors affichage du message.

Reply

Marsh Posté le 08-06-2005 à 11:31:16    

mysql_errno() ?

Reply

Marsh Posté le 08-06-2005 à 13:54:08    

Tu veux dire de faire un if avec mysql_error()?
 

Code :
  1. if (mysql_error() == '1062' ) {
  2.  echo 'Donnée deja presente dans la base';
  3.  }


Pourquoi pas... mais il faut savoir maintenat quoi mettre en comparaison. Le numero de l'erreur ne marche pas...

Reply

Marsh Posté le 08-06-2005 à 14:49:47    

non je veux dire mysql_errno()

Reply

Marsh Posté le 08-06-2005 à 15:11:13    

suomi a écrit :

Bonjour à tous,
Je suis en train de créer un formulaire en php pour insérer des données dans un BD sous mysql. J'aimerais gérer le probleme du duplicata de champ si la nouvelle clé est deja présente dans la base.
L'erreur que retourne mysql si problème de duplicata de champs est :  

Code :
  1. #1062 - Duplicata du champ


 
Voila mon idée:
 

Code :
  1. $resultat_insertion = mysql_query ($requete_insertion) or die('Erreur SQL !  '.$requete_insertion.'<br>'.mysql_error());  ;
  2. if ($resultat_insertion == "????" ) {
  3.  echo 'Identifiant deja presente dans la base';
  4.  }


 
Est -il possible de gérer ce probleme en comparant ce que retourne mysql avec quelque chose? J'ai essayé 1062 mais ça ne marche pas.
Avez vous une idée?
MErci  :hello:


 
Elle est pas censée être unique la clé par hasard?
 


---------------
!== Force et honneur ==!
Reply

Marsh Posté le 08-06-2005 à 16:40:07    

cesarr89 a écrit :

Elle est pas censée être unique la clé par hasard?


Ben si justement.
Vu que l'identifiant est unique, la personne utilisant le formulaire peut sans le savoir rentrer des données deja présentes dans la base. D'ou si c'est le cas le message d'erreur qui apparait:

Code :
  1. #1062 - Duplicata du champ


J'aimerais donc plutot que de voir ce message afficher si il y a cette erreur sql un message plus explicite.

Reply

Marsh Posté le 08-06-2005 à 16:42:01    

Attends c'est dans quel contexte aussi?
Normalement c'est rare que d'avoir ce genre de problème avec ta clé primaire....enfin c'est ce que je peu en tirer de ma petite expérience.


---------------
!== Force et honneur ==!
Reply

Marsh Posté le 08-06-2005 à 17:11:22    

Le contexte est un peu compliqué à expliquer...  :pt1cable:  
 
Ma base va être utilisé par des personnes qui ne connnaitront pas forcement bien sql, et ils peuvent egalement vu le nombre de données présentes dans celle ci penser que il faut ajouter un tuples pour une table donnée, sans penser qu'il y est deja.  
Imgine une table personne avec comme attribut; num_secu_social comme clé primaire.
On a tous un numéro de secu social unique. Tu peux donc utiliser cet attribut comme clé primaire de ta table Personne.
 
Maintenant, un utilisateur sans vraiment l'avoir consulter pense qu'il faut rajouter Mr Dupond dans la base, hors il y est deja.... Il va donc y avoir un Duplicata du champ num_secu_social...
Lorsque ça arrive, au lieu de voir le message retour via mysql_error() j'aimerai afficher un message plus explicite permettant à l'utilisateur de comprendre plus facilement et de manière moins basique son erreur.
 
Comme l'a souligné betsamee, je pourrais d'abord faire une requete vérifiant si cette personne est deja dans la base. Mais j'aimerai savoir si il est possible directement de traiter les erreurs.

Reply

Marsh Posté le 08-06-2005 à 17:11:22   

Reply

Marsh Posté le 09-06-2005 à 10:01:40    

:bounce: Up!

Reply

Sujets relatifs:

Leave a Replay

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