8797 sujets

Développement web côté serveur, CMS

Bonsoir les Alsanautes Smiley smile

J'espère que je poste mon sujet où il faut...

J'ai une table utilisateur qui contient plusieurs champs, dont login et email.
Lorsqu'un utilisateur valide son inscription, je vérifie si le login et l'email ne sont pas déjà enregistrés.

Si c'est le cas j'affiche un message demandant à l'utilisateur de choisir un autre email ou login ou les deux.

Actuellement je fais deux requête sql, une pour le login et une autre pour vérifier si l'email n'est pas déjà enregistré.

Pour finir sur une troisième requête qui enregistre les informations si il n'y aucun problème.


Je me demandais si il était possible de vérifier en une seul requête, l'existence d'un email et d'un login mais qui ne sont pas forcément sur la même ligne.

Exemple :
Utilisateur 1 : mail1@mail.fr, login1
utilisateur 2 : mail2@mail.com, login 2

Par exemple, je souhaite m'inscrire, je met login1 et mail5@mail.com, est-il possible d'obtenir sur une seul requête, un résultat qui me retournerait totalLogin = 1 et totalMail = 0.

Si quelqu'un pouvait m'orienter vers une solution sans forcément m'écrire la requête, ce serait super sympa Smiley biggrin

Je continue de chercher de mon côté, si je trouve quelque chose je viendrais poster.

Je vous remercie et passer une bonne soirée Smiley smile
Hum à priori, 2 count(), un GROUP BY sur clé primaire et le tour est joué.

genre

SELECT count(login) as total_login, count(email) as total_email
FROM t
WHERE login = login_test OR mail = mail_test
GROUP BY id

Quelque chose dans le style.
Bonsoir,
Merci pour vos explications et pour le lien, ça m'a permis de découvrir autre chose et d'avancer Smiley smile

Finalement je pense avoir réussi à résoudre mon problème.
Jusqu'à aujourd'hui j'ai fait deux requêtes, une pour vérifier le login et une seconde pour vérifier le mail.

Puis j'ai été de nouveau confronté à ce problème.

Pour une seul table j'ai procédé ainsi (je n'ai pas test avec des jointures)


SELECT SUM(IF(login='login 3', 1, 0)) AS totalLogin, SUM(IF(email='mail1@mail.fr', 1, 0)) AS totalMail FROM tbl_user

Ca me renvoie :
totalLogin = 0 (Si il n'est pas enregistré)
totalMail = 1 (Si il existe dans ma table)

Dans mon cas ça fonctionne, je ne sais pas si c'est la meilleur méthode, j'avais essayé avec des CASE WHEN mais sans succés...

Si il existe une autre façon de faire je reste ouvert Smiley smile