Pb de heu Requete || mysql || che pas

Invité
Invité n'ayant pas de compte PHPfrance

19 déc. 2006, 04:23

bonsoir ,

je vais essaye d etre clair :

j ai un form avec une requet en ajax pour voir si le pseudo est deja pris.

j enregistre un utilisateur avec le pseudo johndoe.
il peut se logguer.

je veux enregistrer un autre user, je retape johndoe , et il me met qu il est libre.???

par contre si j enregistre un pseudo directement dans la bdd (phpmyadmin), je reviens sur mon form, je retape le meme pseudo la pas de pb il me dit qu il est deja pris....


une partie du form

Code : Tout sélectionner

<input type="text" name="pseudo" OnBlur="verifPseudo(this.value)" >
requete ajax

Code : Tout sélectionner

function file1(fichier1) { if(window.XMLHttpRequest) // FIREFOX xhr_object = new XMLHttpRequest(); else if(window.ActiveXObject) // IE xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); else return(false); xhr_object.open("GET", fichier1, false); xhr_object.send(null); if(xhr_object.readyState == 4) return(xhr_object.responseText); else return(false); } function writediv1(texte1) { document.getElementById('pseudobox').innerHTML = texte1; } function verifPseudo(pseudo) { if(pseudo == '') { writediv1('<span style="color:#cc0000"><b>'+pseudo+' :</b>Choisissez un pseudo</span>'); return false; } if(pseudo != '') { if(pseudo.length<3 || pseudo.length>15) {writediv1('<span style="color:#cc0000"><b>'+pseudo+' :</b>Pseudo entre 5 et 30 caracteres</span>');return false;} else if(texte1 = file1('mod/inscriverif.php?pseudo='+escape(pseudo))) { if(texte1 == 1) {writediv1('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est deja pris</span>'); return false;} else if(texte1 == 2) {writediv1('<span style="color:#1A7917"><b>'+pseudo+' :</b> ce pseudo est libre</span>'); return true;} else writediv1(texte1); } } }
inscriverif.php

Code : Tout sélectionner

<?php include('../bdd.php'); // VERIFICATION $result = mysql_query("SELECT PseudoMemb FROM membres WHERE PseudoMemb='".$_GET["pseudo"]."'"); mysql_close(); if(mysql_num_rows($result)>=1) echo "1"; else echo "2"; ?>
je sais pas d ou ca vient :ajax , syntaxe, ...
si qulun peut maider :lol:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

19 déc. 2006, 09:14

Quand tu as inscrit le 1er user via ton application, est-ce qu'il est présent en base de données ?

Je commencerais par vérifier ça ;)
Et s'il est pas présent, c'est que le code qui insère les données en base ne fonctionne pas ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

19 déc. 2006, 14:17

Oui tout fonctionne bien( enregistrement dans la bdd, peut se connecter avec son pseudo), hormis ce controle de pseudo.

Je viens de detecter un nouveau comportement.

Pour le control de pseudo si j attends une 30aine de secondes (variable), le controle de pseudo fonctionne!!!!!( en local ou online).

c est a dire si j enregistre le pseudo johndoe, je peux reenregistrer johndoe pendant 30 secondes, apres le control de pseudo me dit qu il est pris.

la je cale
Probleme de cache ?
Url en get ?
Le script ajax ?
j en, ai aucune idée.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

19 déc. 2006, 15:24

Est-ce que tu attends bien la réponse de ton serveur lors de l'enregistrement des données ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

19 déc. 2006, 15:58

heu je t explique le fonctionnement global parceque je ne sais pas ce qu' inclus ta question.

1- on passe le pseudo methode ajax

2- si pris doit en choisir un autre, retour a 1-

2 bis- si pas pris, on enregistre le pseudo vers une autre page methode post (pas d ajax)

session_start();
$Pseudo = $_POST['pseudo'];
$ReqMaj = "insert into membres(IdMemb,PseudoMemb,) values ('','$Pseudo')";
mysql_query($ReqMaj);
$_SESSION['inscris']="inscris";
header('location: ../index.php?Page=Inscription' );
//retour a la page d inscription pour le message de confirmation 
maintenant on retourne directement a 1-
si j utilise le meme pseudo , il est libre
j attends 30 secondes, il est pris .

La verif pseudo ne prends pas en compte l enregistrement du pseudo , elle ne fait que renvoyer 's il est pris ou pas' pour continuer le formulaire.
! :?