Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1294 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Générer un login + vérifier son existence avant de l'enregistrer ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Générer un login + vérifier son existence avant de l'enregistrer ?

n°595897
shinmaki
Posté le 23-12-2003 à 00:37:42  profilanswer
 

Bonjour tout le monde,
 
Je voudrais générer, en PHP, un login à partir d'un nom et un prénom et le mettre ensuite dans la BDD MySQL après vérification de son absence de la base.
 
Pour ça, je concatène la 1ère lettre du prénom avec un underscore et le nom. Jusque là, pas de problème.
 
Là où je bloque depuis des heures, c'est quand il faut vérifier si le login généré n'est pas déjà dans la base.
-> si non : on le met dans la base.
-> si oui : on concatène avec un chiffre qui s'incrémente si besoin.
 
Autrement dit, si "login" existe alors on teste "login1".
Si celui-ci existe alors on teste "login2" puis "login3", etc. jusqu'à en trouver un valide.
 
Merci d'avance !
 
Voici mon script :
 
<?
$login='p_nom';
 
include ("Connect.php" );
while ($NumRows!==0)
{ $Sql="SELECT * FROM Custom WHERE LoginCustom LIKE '$nom'";
 $Req=mysql_query($Sql) or die($Sql.'<br>'.mysql_error());
 $NumRows=mysql_numrows($Req);
 $login0=$login;
 $login0.=$Num;
 $Num++;
}
$Sql1="INSERT INTO `customers` VALUES ('$login')";
$Req1=mysql_query($Sql1) or die($Sql1.'<br>'.mysql_error());
 
mysql_close();
?>

mood
Publicité
Posté le 23-12-2003 à 00:37:42  profilanswer
 

n°595904
Tetedeienc​h
Head Of God
Posté le 23-12-2003 à 00:53:56  profilanswer
 

1- initialisation de $NumRows :??:
2- l'opérateur de différence c'est != si je suis pas encore trop nul
3- ta variable $nom change JAMAIS de valeur... c'est ptet $login0 qu'il faut mettre dans ta requete... sinon, ca va boucler infiniment meuchant.

n°595912
shinmaki
Posté le 23-12-2003 à 01:37:02  profilanswer
 

Oops ! Désolé, j'ai fait des erreurs en allégeant mon script après l'avoir copié-collé. Je le repost et je teste ce que tu dis demain !
 
<?
$nom='prenom_nom';
 
include ("Connect.php" );
while ($NumRows!==0)
{ $Sql="SELECT * FROM Custom WHERE LoginCustom LIKE '$nom0'";
 $Req=mysql_query($Sql) or die($Sql.'<br>'.mysql_error());
 $NumRows=mysql_numrows($Req);
 echo $NumRows;
 $nom0=$nom;
 $nom0.=$Num;
 $Num++;
 echo $nom0;
}
$Sql1="INSERT INTO `custom` VALUES ('$FamNameCustomR', '$FirstNameCustomR', '$nom', '$PasswordR', '$AdressCustomR', '$EMailCustomR', '$Date', '$CardNumCustomR')";
$Req1=mysql_query($Sql1) or die($Sql1.'<br>'.mysql_error());
 
mysql_close();
?>

n°595959
Tetedeienc​h
Head Of God
Posté le 23-12-2003 à 10:14:57  profilanswer
 

Encore une fois, AUCUNE unitialisation de variables... quand tu rentres dans ta boucle, $nom0 vaut quoi :??: $nom vaut quelque chose oui, mais $nom0 ??? et $NumROWS ? Initialise les bon sang :D
 
L'opérateur d'inégalité est toujours != et pas !== ...
 
Je suis sur que cela vient de l'initialisation de tes variables, que tu ne fais pas.
 
De plus, c'est l'égalité que tu cherches, pas la ressemblance, donc ce n'est pas LIKE mais bien = à utiliser dans ta requête.
 
Laisse moi deviner : tu as commencé la programmation avec php je me trompe ? :D


Message édité par Tetedeiench le 23-12-2003 à 10:16:07
n°595969
Mara's dad
Yes I can !
Posté le 23-12-2003 à 10:42:53  profilanswer
 

tetedeiench, !== ça existe en PHP : http://www.php.net/manual/en/langu [...] arison.php
 
Mais sur le fond, tu as raison : Il faut initialiser les variables !
 
Sinon, j'ai pas regardé :D Init des variables et on voit après :D


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°595976
anapajari
s/travail/glanding on hfr/gs;
Posté le 23-12-2003 à 11:03:10  profilanswer
 

pourquoi ne pas faire simplement

Code :
  1. $nom='prenom_nom';
  2.      $row = mysql_fetch_array( mysql_query( "SELECT count(*) as num FROM Custom WHERE LoginCustom LIKE '$nom%'" ));
  3.      $newNom = $nom.($row['num'] +1 );
  4.      ...


Le +1 à la fin dépendant de si tu commences à prenom_nom0 ou prenom_nom1.
Au moins tu evites de boucler et de faire des requetes pour rien!

n°597128
Tetedeienc​h
Head Of God
Posté le 26-12-2003 à 11:52:41  profilanswer
 

mara's dad a écrit :

tetedeiench, !== ça existe en PHP : http://www.php.net/manual/en/langu [...] arison.php
 
Mais sur le fond, tu as raison : Il faut initialiser les variables !
 
Sinon, j'ai pas regardé :D Init des variables et on voit après :D


 
oh milles confuses, connaissait pas, désolé.

n°597210
shinmaki
Posté le 26-12-2003 à 15:58:29  profilanswer
 

Merci tout le monde !
 
Effectivement, j'ai quelques lacunes en algo....
 
Effectivement, anapajari, ta solution m'a simplifié la vie !

n°597322
belgique
Posté le 26-12-2003 à 22:29:25  profilanswer
 

anapajari a écrit :

pourquoi ne pas faire simplement

Code :
  1. $nom='prenom_nom';
  2.      $row = mysql_fetch_array( mysql_query( "SELECT count(*) as num FROM Custom WHERE LoginCustom LIKE '$nom%'" ));
  3.      $newNom = $nom.($row['num'] +1 );
  4.      ...


Le +1 à la fin dépendant de si tu commences à prenom_nom0 ou prenom_nom1.
Au moins tu evites de boucler et de faire des requetes pour rien!


Il faut faire attention à cet algo, genre si le gars s'apelle al, il va compter les alfred comme numéros.

n°597326
shinmaki
Posté le 26-12-2003 à 22:37:54  profilanswer
 

C'est vrai ! Je n'avais pas vu mais ça suffira pour ce dont j'ai besoin pour l'instant. Tant que les logins sont uniques, c'est bon. Cela dit, si quelqu'un d'autre a un algo à proposer, je suis tout ouï.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Générer un login + vérifier son existence avant de l'enregistrer ?

 

Sujets relatifs
.net permet-il de générer des exécutables[asp] fonction pour vérifier si une date est valide
Fonction pour vérifier si un caractère est une lettre?enregistrer le son provenant du micro directement en MP3
[Web] [résolu] Empecher l'enregistrement des login/passw[Javascript] verifier l'existance d'un fichier
Desactivation de l'option "Enregistrer une image"Générer un nombre aléatoire...
[resolu] Login et espace membre avec un cookie ?[XML] Générer un graphe à partir de données XML ?
Plus de sujets relatifs à : Générer un login + vérifier son existence avant de l'enregistrer ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR