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

Eléphant du PHP | 94 Messages

21 avr. 2006, 13:32

bonjour j'aimerai savoir ou et quel code faut-il mettre pour verifié dans ma fiche inscription si le code n'est pas déjà existant ??

voici le code:
if(isset($_POST[inscription])) {
 foreach($_POST as $key=>$var) $$key=addslashes($var);  
 
 if($login!="" && $mdp!="" && $mdp1!="") {
     if($mdp==$mdp1) {
     
      $mdp=md5($mdp);
      
      if($_FILES[photo][name]!="" && $url_photo=="") {
       $photo=check_upload($_FILES[photo],$login,"images/users");
      } else $photo=$url_photo;
              
      $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; }
}
merci d'avance à ceux qui me donneront la lumière :idea:
Modifié en dernier par zizou59 le 21 avr. 2006, 19:48, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

21 avr. 2006, 13:56

le principe : compter le nombre d'utilisateurs qui existent déjà avec le pseudo demandé

SI nombre > 0 ALORS inscription refusée
SINON inscription acceptée

Eléphant du PHP | 94 Messages

21 avr. 2006, 14:18

merci d'avoir répondu!!!

pour le principe javais compri mais c au nivo du codage que je bloque je ne sé pas ou le mettre???

javé essayé avec un
$verif=  mysql_query('SELECT count(*) FROM 'user' WHERE login="'.$_POST['login'].'"'); 
if ($verif) 
{ 
echo "Ce login existe deja !!"; 
} 
else 
{ 
mon code d'inscription ! 
} 
çà va mais çà reste tous le temp même si le mdp n'est pas renseigné!!!

peus-tu m'aide au nivo du codage??
merci :wink:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

21 avr. 2006, 14:25

Ben c'est presque ça mais bon il manque qq petites choses entre ces 2 lignes :
$verif=  mysql_query('SELECT count(*) FROM 'user' WHERE login="'.$_POST['login'].'"');
if ($verif) 
Donc comme tu as compris le principe, tu as compris qu'on doit tester une variable qui contient un nombre (le nombre de résultats renvoyé par count(*)

Or regarde ce que renvoie mysql_query()

Si tu as déjà récupéré et traité des données avec une requête SQL en PHP? c'est le même principe

Eléphant du PHP | 94 Messages

21 avr. 2006, 14:28

bein il me renvoi bien que ce pseudo existe déjà..
mais il me le fait tous le temp maintenant

les 2 $msg que j'ai mi en else ne s'affiche plus!!! :?:

Eléphant du PHP | 94 Messages

21 avr. 2006, 14:29

tu veu me laisser en core chercher ????

tu ne veu pas me donner la solution sinon c'est trop facile!!! :lol:

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

21 avr. 2006, 14:32

Tu n'as pas lu mon message, j'ai bien compris que ton test ne fonctionne pas bien, ce qui n'est pas étonnant car il manque des choses

Je t'ai donné la marche à suivre dans mon message pour construire ton test, avant de l'insérer dans ton code.

Si tu ne sais pas comment récupérer des données dans une table : http://www.phpdebutant.org/article66.php

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

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

Eléphant du PHP | 94 Messages

21 avr. 2006, 14:36

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

Eléphanteau du PHP | 46 Messages

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).

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

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 ;)

Eléphant du PHP | 94 Messages

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:

ViPHP
ViPHP | 2144 Messages

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.

Eléphant du PHP | 94 Messages

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:

ViPHP
ViPHP | 2144 Messages

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.