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

  FORUM HardWare.fr
  Programmation

  [PHP + MySQL] Comment faire pour voir un un champ existe déjà ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP + MySQL] Comment faire pour voir un un champ existe déjà ?

n°81068
s0d4
Je charge des sacs de sable
Posté le 12-12-2001 à 18:13:29  profilanswer
 

Voilà, je fais un site, mais quand quelqu'un s'inscrit, il ne faut pas qu'il prenne le même pseudo qu'un autre ... comment on vérifie ça en php ???
j'ai pensé à ça, mais ça marche pas ...

Code :
  1. $query="SELECT ID FROM users WHERE login=$login";
  2. $result=mysql_query($query));
  3. if ($result!="" ){
  4.  ecrire "Erreur, login déjà pris";
  5. }

mood
Publicité
Posté le 12-12-2001 à 18:13:29  profilanswer
 

n°81071
skylight
Made in France.
Posté le 12-12-2001 à 18:17:32  profilanswer
 

Code :
  1. $result=mysql_query("SELECT ID FROM users WHERE login LIKE '$login'" );
  2. list($login2)=mysql_fetch_row($result);
  3. if ($login2)
  4. die("erreur, login déjà pris" );

n°81073
ethernal
Chercheur de vérité...
Posté le 12-12-2001 à 18:18:50  profilanswer
 

oui, ou :
$query="SELECT count(ID) AS nbLogin FROM users WHERE login='$login'";  
$result=mysql_query($query));  
if ($result->nbLogin!=0){  
 ecrire "Erreur, login déjà pris";  
}

n°81074
ethernal
Chercheur de vérité...
Posté le 12-12-2001 à 18:19:19  profilanswer
 

skylight a écrit a écrit :

Code :
  1. $result=mysql_query("SELECT ID FROM users WHERE login LIKE '$login'" );
  2. list($login2)=mysql_fetch_row($result);
  3. if ($login2)
  4. die("erreur, login déjà pris" );

 




 
pq un like ??

n°81076
skylight
Made in France.
Posté le 12-12-2001 à 18:20:23  profilanswer
 

ethernal a écrit a écrit :

 
 
pq un like ??  




 
case UNsensitive (ignore la casse)

n°81078
ethernal
Chercheur de vérité...
Posté le 12-12-2001 à 18:22:33  profilanswer
 

exaaaaactement :D
 :jap:

n°81102
potiron
...
Posté le 12-12-2001 à 20:28:33  profilanswer
 

plutot ceci -> mieux optimisé au niveau SQL et PHP
 
$res=mysql_query("SELECT ID FROM users WHERE login LIKE '$login' LIMIT 1" );
if(mysql_num_rows($res)) echo "Login pris";
 
voila, le tout sur 2 lignes .. tu peux rajouter un DIE a la place du echo ou autre suivant tes besoins  :benetton:

n°81109
potiron
...
Posté le 12-12-2001 à 20:43:52  profilanswer
 

j'ai jamais essayé mais tu dois peut etre pouvoir tout mettre sur 1 ligne meme si ca change pas grand chose au niveau des perfs :
 
if( mysql_num_rows(mysql_query("SELECT ID FROM users WHERE login LIKE '$login' LIMIT 1" )) ) echo "Login pris";

n°81148
wouatouwou​atou
Posté le 12-12-2001 à 22:43:54  profilanswer
 

fo tout de meme penser a reformater le login saisi.. :D

n°81159
ethernal
Chercheur de vérité...
Posté le 12-12-2001 à 23:49:31  profilanswer
 

potiron a écrit a écrit :

plutot ceci -> mieux optimisé au niveau SQL et PHP
 
$res=mysql_query("SELECT ID FROM users WHERE login LIKE '$login' LIMIT 1" );
if(mysql_num_rows($res)) echo "Login pris";
 
voila, le tout sur 2 lignes .. tu peux rajouter un DIE a la place du echo ou autre suivant tes besoins  :benetton:  




 
puisqu'on a dit précédemment que  
"select count(id)"
 était plus optimisé pour compter que
$result= mysql_query("select id from ..." );
nb= mysql_num_rows($result);
 
select count(id) as NB from ...";
est plus optimisé que ce que tu dis.
mais je n'ai jamais testé, j'ai cru les autres sur parole... ;)

mood
Publicité
Posté le 12-12-2001 à 23:49:31  profilanswer
 

n°81164
s0d4
Je charge des sacs de sable
Posté le 13-12-2001 à 00:06:42  profilanswer
 

comment savoir quelle requete sera plus rapide qu'une autre ?

n°81168
potiron
...
Posté le 13-12-2001 à 00:18:19  profilanswer
 

ethernal : suis pas d'accord, en faisant un count (id) tu forces la requete a passer sur TOUTES les lignes de ta table  :sarcastic: hors le but est qu'elle ne lit que tres peu de ligne ...
 
 
s0d4 : ben fait un bench, c'est tres important de verifier que ta prog/requete sont aux max de leurs capacités !
 
pour mysql tu as une fonction GENIAL qui s'appelle EXPLAIN .... si tu as des conf partout sur des requetes multi-tables alors tu peux etre content de toi .
 
pour PHP la seule soluce que je connaisse c'est de faire un script de bench en calculant le temps en microscondes en 2 actions .
je me suis fait une super interface justement pour tester toutes mes fonctions/idées ... ou je donne le Nb de boucle, et elle fait des moyennes en stockant tout ca dans cookies et txt .
j'ai aussi une fonction qui me permet d'etalonner le bench suivant le PC en le faisant tourner a vide !
n'hesite pas a te faire un script pour tes benchs, c'est tres tres important car des que tu vas passer sur des tables contenant des millions de lignes tu peux pas te permettre la moindre imperfection .

n°81173
ethernal
Chercheur de vérité...
Posté le 13-12-2001 à 00:31:03  profilanswer
 

potiron a écrit a écrit :

ethernal : suis pas d'accord, en faisant un count (id) tu forces la requete a passer sur TOUTES les lignes de ta table  :sarcastic: hors le but est qu'elle ne lit que tres peu de ligne ...




 
bha chai pas... si tu fais un count(id) where login like '$login' il te retournera qu'une seule ligne, mais c vrai qu'il parcourt les enregs jusqu'a la fin.
faut voir si qd tu lui mets un LIMIT, il s'arrête après avoir trouvé une ligne ou bien s'il continue jusqu'au bout et qu'il ne t'en retourne qu'une dans le recordset... s'ils ont bien codé mysql, c'est ce que ça devrait faire.  Mais je connais pas assez le développement de MySQL pour en être sûr. :(
Si tu me l'affirmes je te crois  :jap:

n°81175
potiron
...
Posté le 13-12-2001 à 00:39:25  profilanswer
 

ben c'est pour ca que j'ai rajouté LIMIT 1 dans ma requete !
il ce limite a 1 resultat donc des qu'il le trouve il stop !
evite le count, il est plus gourmand que le select id seul .


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

  [PHP + MySQL] Comment faire pour voir un un champ existe déjà ?

 

Sujets relatifs
[HTML / PHP /JS] Recupere l'URL de depart[MYSQL] bdd2jpg ca existe ???
[PHP/MYSQL] Procédures stockées?[PHP] [MYSQL] Requete sur table inexistante
PhP MySQL String Replace ?URGENT : Recherche Développeur Php/Java en Stage ou en CDD
Plus de sujets relatifs à : [PHP + MySQL] Comment faire pour voir un un champ existe déjà ?


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