IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Suggestion de pseudo


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 36
    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

  2. #2
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    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.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 36
    Par défaut
    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

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 36
    Par défaut
    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...

  5. #5
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    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.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 36
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $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..

    ++

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 36
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo