JeuWeb - Crée ton jeu par navigateur
probleme de test d'existence d'un email en DB - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : probleme de test d'existence d'un email en DB (/showthread.php?tid=1673)

Pages : 1 2 3 4 5


RE: probleme de test d'existence d'un email en DB - christouphe - 04-10-2010

Pourquoi fais tu faire le travail de ta BDD par PHP ???

Si tu mets pseudo en UNIQUE et email aussi en UNIQUE, la BDD te renverras FALSE lors d'un INSERT si tu venais à mettre une deuxième occurrence identique:

//...
$req = "INSERT INTO membres (pseudo,email) VALUES ('".$pseudo."','".$email."')";

if (!mysql_query($req)) {
//Erreur, là un message mais à toi de traiter
echo '<br>Erreur, le pseudo ou le mail existent d&eacute;j&agrave;';
} else {
echo '<br>Inscription r&eacute;ussie.';
}
//...

Même chose avec PDO, mais en utilisant les exceptions Wink

EDIT: erfff, la malédiction du haut de page a encore frappé. Sad


RE: probleme de test d'existence d'un email en DB - Plume - 04-10-2010

Tu peux pas connaitre le détail des erreurs de cette façon.


RE: probleme de test d'existence d'un email en DB - christouphe - 04-10-2010

Bah il se met à PDO et là il aura le détail. Car il aura "duplicate key on 'pseudo'".


En plus, je pense qu'il est possible de récupérer le détail même sans PDO, un peu de finesse, à mon avis c'est jouable... Tu t'économise 2 requêtes.


RE: probleme de test d'existence d'un email en DB - Plume - 04-10-2010

Mais tu compliques tes sources car tu dois analyser le code et surtout le message d'erreur pour savoir de quoi il en retourne. Je ne suis pas sûr qu'on n'y soit objectivement gagnant.


RE: probleme de test d'existence d'un email en DB - christouphe - 04-10-2010

tout dépend comment tu gères les erreurs provenant de la base. Elles peuvent être nombreuses et diverses.

A mon avis, si tu veux bien les gérer tu dois au moins les récupérer et les traiter ou pas selon leur niveau de sévérité. J'avoue que c'est un peu la croix et la bannière, mais une fois fait, ce n'est plus à faire. Et puis tu ne traites pas les erreurs toujours au même niveau de l'application.


RE: probleme de test d'existence d'un email en DB - Plume - 04-10-2010

Je saurais plus trop te dire à ce niveau. Je passe par des frameworks quand je développe personnellement en PHP (ce qui arrive de moins en moins, voir plus du tout depuis quelques mois). Et professionnellement, je ne travaille que sur de l'existant donc je ne suis pas libre de faire ce que je veux autant que je le voudrais.

Tu as probablement un exemple sous la main de code où tu gères les erreurs retournées pas la base de données, non ? Tu partagerais ?


RE: probleme de test d'existence d'un email en DB - christouphe - 04-10-2010

La classe que je suis en train de construire n'est pas terminée. je serai ravi de la partager. Mais je vais donner l'idée:
  • Les erreurs sont décrites dans les SQLSTATE, donc utiliser cette base pour créer un fichier xml/ini/..
  • une classe de gestion des erreurs appelée dans les catch() des différentes classes héritée de la super-classe "Exception"

Après et bien sachant qu'un SQLSTATE est composé:
  • d'un classe
  • d'une sous-classe

qui définissent un comportement, c'est assez vite fait de savoir ce qui ne va pas.

Croise ça avec la liste des erreur mysql et je pense pouvoir avoir une classe assez sympathique.

Après est ce qu'il est utile de séparer les données transmises (pseudo,email dans notre cas) ? Je ne sais pas. Mais je pense qu'il doit être possible de savoir lequel des deux à foiré.


RE: probleme de test d'existence d'un email en DB - Plume - 04-10-2010

Si t'arrives à faire un truc qui permet de connaitre le détail, j'veux bien reluquer Smile Parce que c'est justement là tout ce que je chercherai.


RE: probleme de test d'existence d'un email en DB - christouphe - 04-10-2010

tiens justement...mais je cherche encore pour apporter de l'eau au moulin Wink

http://www.phpcs.com/forum/sujet-INDEX-UNIQUE-INSERTION_1249484.aspx


vitef' si j'ai compris il te dit "duplicate entry 'toto@toto.to' for key 1" donc à partir de là tu peux savoir si c'est le mail ou le pseudo...Mais il faut creuser


RE: probleme de test d'existence d'un email en DB - Plume - 04-10-2010

J'viens de lire la discussion que tu as fait partager. Effectivement, et comme tu l'avais déjà dit, les champs concernés par la violation d'unicité sont renseignés mais sous quelles formes quand tu en as plusieurs ?