Page 1 sur 1

Espace membres : probleme test doublons

Posté : 11 mai 2007, 00:48
par supercanard
Bonsoir
Voilà mon chtit probleme :

J'ai un formulaire d'inscription, un code php derriere qui controle si l'identifiant n'existe pas déjà dans la BSD avant l'insertion.
Je test avec mon email comme identifiant, pas de problème il me detecte le doublon.
Ensuite je refait la manip avec comme identifiant "test", et là pof il me l'ajoute dans la BSD, alors qu'une ligne ayant "test" comme identifiant existe déjà...

Donc ça semble marcher un coup sur deux, j'avou que je comprend pas :?

Code : Tout sélectionner

// INSCRIPTION if (isset($_POST['login2'])) { // RECUP DES LOGINS EXISTANTS $req= "SELECT login FROM ipi_users"; $result= mysql_query($req); $data= mysql_fetch_array($result); if ($data['login'] == $login2) { // TEST DOUBLON echo '<script type="text/javascript">document.location.href="index.php?alerte='.$alerte3.'"</script>'; } else { // SI C'EST BON ON AJOUTE $login= strip_tags($_POST['login']); $pwd= strip_tags($_POST['pass2']); $req= "INSERT INTO ipi_users (id_user,login,pwd) VALUES ('','$login','$pwd')"; $result= mysql_query($req); $to= $login; $subject= 'Inscription à iPost-it'; $message= 'Bonjour, Votre inscription c\'est déroulée avec succès. Voici les informations de votre compte : Identifiant : '.$login.' Mot de passe : '.$pwd.' http://ipost-it.go.dyndns.org/'; $headers= 'From: [email protected]' . "\r\n" . 'Reply-To: [email protected]' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($to, $subject, $message, $headers); echo '<script type="text/javascript">document.location.href="index.php?alerte='.$alerte5.'"</script>'; } }
En passant, peut être que strip_tags je devrais le faire dès le départ, avant le test doublon ?

Sinon pour le problème je vois pas du tout... A moins qu'il faille faire un while sur l test doublon, car la il me teste peut être seulement la première ligne de la BSD ... ? :roll:

Posté : 11 mai 2007, 00:54
par supercanard
Je viens de donner la réponse a ma question en fait :lol:

Sinon pour strip_tags ? Avant ou aprés la verif des doublons :roll:

Posté : 11 mai 2007, 08:36
par Ryle
Tu peux même, au lieu de ramener tous les enregistements de ta table et les tester un par un, simplement compter le nombre d'enregistrement correspondant :
$req= "SELECT COUNT(*) FROM ipi_users WHERE login = '".$login2."'"; 
S'il compte 1 ou plus de résultat, c'est que ton login est en doublon ;)

Quant au strip_tags, bah c'est juste une question de logique... dans ta base les enregistrement sont "stripés" ou pas ? Si oui, ben tu le fais dès le début pour les comparer, s'ils ne le sont pas, tu ne le fais pas :)


Edit : tant que j'y pense et avant que tu ne poses la question, en cas d'update, pour vérifie l'anti-doublon, il faut retirer de la liste des résultats l'id du user que tu es en train de mettre à jour (parce que sinon, c'est normal que son login existe déjà ;))
$req= "SELECT COUNT(*) 
  FROM ipi_users 
  WHERE login = '".$login2."'
  AND id_du_user != ". $idDuUser; 

Posté : 11 mai 2007, 10:45
par supercanard
Merci pou l'astuce =) ça m'évite une boucle

et je rajoute la suite au cas ou ça serve a quelqun :

Code : Tout sélectionner

if ($data['login'] != '0') { // VERIF DOUBLON echo 'double !'; exit(); }