Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/12/2011, 11h35   #1
Futur Membre du Club
 
Inscription : février 2008
Messages : 34
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 34
Points : 17
Points : 17
Par défaut Suggestion de pseudo

Bonjour a tous,
je suis en train de modifier le formulaire d'inscription d'un des sites de ma société (formulaire virtuemart) afin de proposer à l'utilisateur une liste de pseudos libres (non enregistrés dans ma base).

Pour le moment, j'ai bouclé le js qui permet de lancer les requêtes AJAX + effets sur le css.

Coté serveur, mon script récupère le pseudo fournis par l'utilisateur, le mail (si renseigné lors du choix du pseudo) puis vérifie si le pseudo est dispo.

Si le pseudo est déjà pris, le script vérifie la disponibilité de l'adresse mail en tant que pseudo..

Jusque la, tout vas bien.

Mais j'aimerais aussi pouvoir proposer d'autre pseudo qui serait des variantes du pseudo fournis par l'utilisateur.

Exemple : l'utilisateur veut le pseudo "paul"
=> "paul" est déjà pris => "paul14" (car les pseudo "paul1" jusque "paul13" existe déjà)

Comment faire pour ressortir le pseudo "paul14" sans tester tous les autres avant (paul1, paul2, paul3,....)

Merci d'avance
LyNKSoNe-PRoD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 11h49   #2
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 726
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 726
Points : 3 293
Points : 3 293
Salut

Citation:
Comment faire pour ressortir le pseudo "paul14" sans tester tous les autres avant (paul1, paul2, paul3,....)
Peut être en faisant une requête ne retournant qu'1 seule ligne (LIMIT 1), et en faisant un ordre décroissant (ORDER BY champ DESC).

Théoriquement ça devrait retourner juste le dernier trouvé, en quelque sorte.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 11h52   #3
Futur Membre du Club
 
Inscription : février 2008
Messages : 34
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 34
Points : 17
Points : 17
merci de cette réponse rapide...

Je pensais que cela allait me retourner aussi les pseudo tels que "paulM", "paulJean1",...

Je vais tester ça tout de suite et te tiens au courant
LyNKSoNe-PRoD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 12h00   #4
Futur Membre du Club
 
Inscription : février 2008
Messages : 34
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 34
Points : 17
Points : 17
Je viens de tester :
ma requête : "SELECT `username` FROM #__users WHERE username like '$uname%' order by `username` DESC LIMIT 1"

J'ai trois pseudo en base : paul , paul5 et paulTest.

Lolrsque je propose paul, malheureusement, il me retourne paulTest...
LyNKSoNe-PRoD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 12h32   #5
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 726
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 726
Points : 3 293
Points : 3 293
Citation:
Lolrsque je propose paul, malheureusement, il me retourne paulTest...
La requête SQL ne peu retourner que ce qui existe dans la BDD.
Du coup ça va difficilement ressortir "paul14" selon ton exemple.

Par conséquent il faudrait récupérer dans la Bdd tout ce qui existe après la chaine (et non pas 1 seul enregistrement finalement).

Ensuite faire une boucle (de 1 à 100 par exemple), puis tester si la chaine concaténée au compteur (genre paul1, puis paul2, etc ...) existe parmi les résultats de la requête.

Dès qu'un élément n'existe pas (donc libre), alors on sort de la boucle, on retient cet élément et c'est bon.


Enfin, c'est un exemple, et si j'ai bien compris.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 14h10   #6
Futur Membre du Club
 
Inscription : février 2008
Messages : 34
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 34
Points : 17
Points : 17
Je me suis plongé dans un gros bouquin de SQL.

Du coup, je me suis aperçut qu'il était possible d’utiliser les expressions régulières dans une requête..

Voici donc ma requête :
Code :
$database->setQuery("SELECT `username` FROM #__users WHERE username REGEXP '^".$uname."[0-9]'  order by `username` DESC LIMIT 1");
Je précise que je bosse sous joomla pour ceux qui liront cette requête..

Du coup, ça me remonte bien "paul5", il me reste plus qu'à implémenter la partie numérique du pseudo..

Merci bien pour ton aide,
je vais clore ce sujet..

++
LyNKSoNe-PRoD est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 14h20   #7
Futur Membre du Club
 
Inscription : février 2008
Messages : 34
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 34
Points : 17
Points : 17
Citation:
Envoyé par RunCodePhp Voir le message
La requête SQL ne peu retourner que ce qui existe dans la BDD.
Du coup ça va difficilement ressortir "paul14" selon ton exemple.
Oui autant pour moi, en réalité, j'ai juste 3 enregistrements (paul , paul5 et paulTest), le paul14 était pour l'exemple, j'aurais du mettre paul6 à la place....

Merci encore
LyNKSoNe-PRoD est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h42.


 
 
 
 
Partenaires

Hébergement Web