Vérifié si le pseudo existe déjà svp!! merci!!

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Vérifié si le pseudo existe déjà svp!! merci!!

verif pseudo

par tilillois » 13 mai 2006, 15:47

moi j'ai ça et ça fonctionne bien a toi de l'adpté a ton scritp
$result=mysql_query ("SELECT * FROM comptes WHERE nom='$nom'") or die ("Requete impossible");
$exnom = mysql_num_rows($result);
if ($exnom!=0){
echo ("<center><br><font face=\"<? echo $font; ?>\" size=\"$size\"><b>Votre nom est deja pris.</b></font><br>");
$inscr=1;}

par iclo » 23 avr. 2006, 15:50

En récupérant le code d'erreur, on peut vérifier la cause exacte de l'erreur, (1041 pour une duplication de clé unique si j'ai bonne mémoire)

par ouckileou » 22 avr. 2006, 10:39

Je serais plus mitigé que toi sur la question Ouckileou.
[...]
Tu as raison, c'est bien d'insérer des contraintes dans la base

ce que je voulais dire, c'est que la proposition ne parlait pas de récupérer un message d'erreur spécifique, mais juste "Echec insertion"
Donc à ce moment là comment savoir que c'est la contrainte d'unicité qui a provoqué cette erreur, ou un autre problème ?

Bon après si c'est mieux géré ok c'est peut-être utile, je retire alors

par zizou59 » 21 avr. 2006, 19:46

c bon j'ai réussi!!!

///MAIS LA ON VERIFIFE D'ABORD
	  $req='select count(*) as id from users where login="'.$login.'"';
	  $dq=mysql_query($req);
	  $res=mysql_fetch_array($dq);
	  if(isset($res['id'])&&!empty($res['id'])){ 
	  //empty detecte les valeurs a 0...
	  //et la il y a deja un utilisateur connecte    
	  include "theme/header.php";
	  $msg="ce pseudo existe déjà!!.";
	  }else{
	          
      $sql="INSERT INTO `users` (login,mdp,nat,email,msn,aim,icq,yahoo,web,photo,date_inscr,last_connect) 
	  VALUES (\"$login\",\"$mdp\",\"$nat\",\"$email\",\"$msn\",\"$aim\",\"$icq\",\"$yahoo\",\"$web\",\"$photo\",'".time()."','".time()."')";
      
	  if(mysql_query($sql))
	  include "theme/header.php";
	  $msg="Inscription terminée avec succès.<br>Vous pouvez à présent vous identifier sur le site.";
	  }

     } else { 
	 $msg="Mots de passe erronés."; $_GET[inscription]=1; }
 } else { $msg="Tous les champs n'ont pas été remplis."; $_GET[inscription]=1; }
}
@++++ et merci

par zizou59 » 21 avr. 2006, 19:13

okbein j'ai toujours pas compri et ne trouvant pas de solution tampis!!! :cry:

merci quand m^me jtrouverai bien la solution un jour!!! :?

par iclo » 21 avr. 2006, 18:57

qu'elles sont les étapes entre l'exécution d'un select via la commande mysql_query() et l'exploitation de ce résultat via une variable?
si tu lis attentivement ce tutorial tu dois voir d'où vient ton problème : http://www.phpfrance.com/tutoriaux/inde ... l-avec-php

par zizou59 » 21 avr. 2006, 18:54

oui j'ai été voir merci j'ai essayé mais je ne trouve pas la solution!!!

là je suis actuellement encore entrain d'essayé!!!!

je ne ment pas !!!

dites moi un début de code et je vérai pourkoi et comment ce code en+ :?

par iclo » 21 avr. 2006, 18:50

Te vais te répondre comme Ouckileou : regardes la doc sur comment on traite le résultat d'un select sur une base de donnée.

par zizou59 » 21 avr. 2006, 18:39

ok iclo mais peus tu répondre à ma question je mens sort pas moi!!!

quel code je dois mettre?
:cry:

par iclo » 21 avr. 2006, 18:33

Je serais plus mitigé que toi sur la question Ouckileou.
Comme souvent en informatique, c'est une question d'utilisation.
si on sait lors de la conception de la base de donnée, que le champ d'une table ne contiendra jamais de doublon, on a tout intérêt à ajouter une contrainte d'unicité.
Dans le cas d'un "gros système" avec différentes équipes de dévellopement qui travailleront sur des tables communes, un DBA (DataBase Administrator, ceui qui veille sur la Db en gros :D) aura tout intérêt à être parano et à faire preuve d'un excès de prudence, face à ces maladroits de programeurs, qui serait capables de ne pas respecter en permanence ces contraintes.
Quand à savoir si il vaut mieux utiliser cette contrainte via un code d'erreur retourné par le serveur, ou une verification par un select au préalable, tout dépend de la fréquence d'insertion, et du risque de "redondance", si le risque est faible,autant ne pas faire un select inutile (qui consomme quand même des ressources sur le serveur) et se contenter d'une gestion d'erreur (dans la grande majorité des cas, un seul appel à la db)
Si parcontre le risque est élevé, alors le select à certains avantage. (deux appel à la db si pas de redondance, un seul si oui)
Je ne comprends pas ce que tu entends par "Et si le serveur rencontre un problème, personne ne pourra s'inscrire, tout en croyant que tous les pseudos possibles et inimaginable sont déjà pris..."
Perso, je préfère le code d'erreur, qui ménage le serveur pour un résultat quasi équivalent au select préalable.

par zizou59 » 21 avr. 2006, 18:26

oui jpréfère la première solution mais je m'en sort pas!!!
j'ai essayé avec la fonction while non plus le message reste toujours!!! et au nivo des interrogation c'est pas mon fort non plus!!!

chui niull vraiment :cry:
j'arrive pas sorry
:roll:

par ouckileou » 21 avr. 2006, 15:25

En effet, c'est barbare :lol:

Et si le serveur rencontre un problème, personne ne pourra s'inscrire, tout en croyant que tous les pseudos possibles et inimaginable sont déjà pris... :roll:

De plus, je ne suis franchement pas sûr que ce soit VRAIMENT plus rapide (je veux dire pour notre sensibilité d'être humain)

Récapitulatif :
gain = 0
inconvénients = nombreux

Maintenant chacun fait ce qui lui plaît ;)

par moorf » 21 avr. 2006, 15:17

Autre solution qui prends moins de temps mais qui est peut etre plus barbare à faire : tu mets un controle dans ta base de donnée sur le pseudo (unique) et tu regardes le message de retour lors de ton insert ; si c'est 1 c'est que c'est bien passé, sinon c'est qu'il y a une erreur (mais tu pourras moins cibler facilement).

par zizou59 » 21 avr. 2006, 14:36

ok merci!!
désolé de la non-compréhension!!!!
:cry:
j'y vais faire un tour!!!

par ouckileou » 21 avr. 2006, 14:34

tu veu me laisser en core chercher ????
tu ne veu pas me donner la solution sinon c'est trop facile!!! :lol:
Effectivement ça ne sert à rien de te filer du code tout prêt, en le faisant toi-même tu comprendras et sera capable de le refaire

Tu as toutes les pistes qu'il faut, et tu n'es pas loin

Donc cherche et fait des essais, et là je t'aiderai s'il faut