Ajax et vérification de pseudo

Fermé
ju_boc Messages postés 5 Date d'inscription mardi 16 mars 2010 Statut Membre Dernière intervention 17 mars 2010 - 16 mars 2010 à 18:06
 blacksmoke - 15 août 2011 à 16:00
Bonjour,
en bon débutant j'ai trouvé un bout de code que je souhaite adapté à mon formulaire, mon problème est que je n'arrive pas à corriger ce qu'il me renvoit :
 =1); echo "1"; else echo "2"; ?>

(ce sont les dernières lignes du code présenté)
j'ai essayé d'enlever le >, de mettre des accolades autour des echos, etc... mais rien n'y fait

Merci de m'aider à me sortir de ces heures de galères

Voici mon code:
<head>
<script type="text/javascript">
function writediv(texte)
     {
     document.getElementById('pseudobox').innerHTML = texte;
     }

function verifPseudo(pseudo)
     {
     if(pseudo != '')
               {
               if(pseudo.length<4)
                         writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est trop court</span>');
               else if(pseudo.length>30)
                         writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est trop long</span>');
               else if(texte = file('verifpseudo.php?pseudo='+escape(pseudo)))
                         {
          if(texte == 1)
               writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est deja pris</span>');
          else if(texte == 2)
               writediv('<span style="color:#1A7917"><b>'+pseudo+' :</b> ce pseudo est libre</span>');
          else
               writediv(texte);
                         }
               }

     }

function file(fichier)
     {
     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", fichier, false);
     xhr_object.send(null);
     if(xhr_object.readyState == 4) return(xhr_object.responseText);
     else return(false);
     }
</script>
</head>
<body>
<form action="">
<input type="text" name="pseudo" onKeyUp="verifPseudo(this.value)" />
<div id="pseudobox"></div>
</form><noscript><a href="http://www.editeurjavascript.com/">ajax</a></noscript>
</body>



et dans un fichier 'verifpseudo.php' mis à la racine:

//LE SCRIPT DOIT RETOURNER :
//1 : SI LE SPEUDO EST DEJA PRIS
//2 : SI LE PSEUDO EST LIBRE


// CONNECION SQL
mysql_connect("localhost", "user", "");
mysql_select_db("demande_modif");

// VERIFICATION
$result = mysql_query("SELECT login FROM utilisateur_access WHERE login='".$_GET["pseudo"]."'");
if(mysql_num_rows($result)>=1);
        echo "1";
else
        echo "2";
?>
A voir également:

14 réponses

il faut rajouté le <?php au debut
2
rudak Messages postés 590 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 juin 2011 46
16 mars 2010 à 18:17
essaie comme ca :


// VERIFICATION
$result = mysql_query(" SELECT login FROM utilisateur_access WHERE login='".$_GET["pseudo"]."' ");
if(mysql_num_rows($result))
{
        echo "1";
}
else
{
        echo "2";
}
0
ju_boc Messages postés 5 Date d'inscription mardi 16 mars 2010 Statut Membre Dernière intervention 17 mars 2010
16 mars 2010 à 18:45
non rien de mieux malheureusement, j'avais aussi essayé cette option
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
16 mars 2010 à 19:19
if(mysql_num_rows($result) >= 1){ //une accolade au lieu d'un ; ce sera mieux
        echo "1";
}else{
        echo "2";
}

//et prend l'habitude d'en mettre car le jour ou tu veux rajouter une instruction tu vas avoir des soucis


et il faut faite le test de mysql_num_rows par rapport à un nombre, pas par rapport a true ou false
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ju_boc Messages postés 5 Date d'inscription mardi 16 mars 2010 Statut Membre Dernière intervention 17 mars 2010
16 mars 2010 à 20:38
merci alain_42 mais j'avais essayé avec les accolades et cela me donne la même chose avec elles en plus:

=1 ){ echo "1"; } else{ echo "2"; } ?>


au lieu de :
=1); echo "1"; else echo "2"; ?>


donc c'est assez bizarre cette histoire !!
0
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 260
16 mars 2010 à 20:44
Php n'est sans doute pas installé sur ton serveur....
0
rudak Messages postés 590 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 juin 2011 46
16 mars 2010 à 21:29
Alain_42
et il faut faite le test de mysql_num_rows par rapport à un nombre, pas par rapport a true ou false


ah bon et pourquoi ca ?
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
17 mars 2010 à 08:58
par ce que si la requette est correcte, donc sans erreur de code:

si aucun enregistrement trouvé, mysql_num_rows() renvoie 0

donc pas false

"Le nombre de lignes dans un jeu de résultats en cas de succès, ou FALSE si une erreur survient"

si false c'est que la reqette n'a pas fonctionné correctement(mauvais code), pas qu'il n'y a pas d'enr correspondant au pseudo
0
ju_boc Messages postés 5 Date d'inscription mardi 16 mars 2010 Statut Membre Dernière intervention 17 mars 2010
17 mars 2010 à 12:37
Salut Alain_42 j'essaye de suivre tes conseils, que penses tu de cette écriture? aussi, j'ai l'impression que ma connexion de mon formulaire à ma requête n'est pas bonne, est ce possible que cela ne fonctionne pas en local, seulement en ligne ??

ma connexion est de type:
...
else if(texte = connectFile('veriflogin.php?login='+escape(login))){
...

et ma nouvelle requête:
<?

// Configuration de la base de donnée
   	include('application/conf/conf-db.php');

// Vérifier si la connection à MySQL est disponible
if ($linkDb){
//////////////////////////////////////////////////////////////////////
$sql = "SELECT login
              FROM utilisateur_access
              WHERE login='".$_GET["login"]."'";

	// envoyer la requete SELECT au serveur MySQL
	$result = mysqli_query ($linkDb,$sql) ;
	// vérifier si la requête a été faite
	if (!$result) { // en cas d'erreur
		//echo mysqli_error($linkDb) ;
              exit();
	}
	else {
		// nombre de lignes dans le jeu de résultats
		$nbLignes = mysqli_num_rows($result);

              if (($nbLignes) == 0){
                  echo "0";
              }
                 else{
                      echo "1";
                 }
	}
}
	else { // connection à MySQL non disponible
	//echo 'Erreur de connection à MySQL : '. mysqli_connect_error() ;

}

?>


Merci !!
0
rudak Messages postés 590 Date d'inscription samedi 7 juin 2008 Statut Membre Dernière intervention 4 juin 2011 46
17 mars 2010 à 14:12
Alain_42, le 17 mar 2010 à 08:58:

si aucun enregistrement trouvé, mysql_num_rows() renvoie 0 
donc pas false 


si aucuns resultats trouvés mysql_num_rows ne renvoi rien donc ma condition est correcte ;)
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
17 mars 2010 à 18:39
Désolé de te contredire mais je viens de faire l'essaie en réel:

code:

........
$sql1='SELECT DISTINCT Localisation FROM affaire ORDER BY Localisation';
$result1=mysql_query($sql1) or die("Erreur de la requête SQL 1".mysql_error());
		
		echo 'Dans : '.$result1.' nombre enr trouves: '.mysql_num_rows($result1);
		
$sql2="SELECT DISTINCT Localisation FROM affaire WHERE Localisation='bidon'" ;
$result2=mysql_query($sql2) or die("Erreur de la requête SQL 1".mysql_error());

echo '<br /><br />Dans : '.$result2.' nombre enr trouves: '.mysql_num_rows($result2);



et le copie d'écran:


Dans : Resource id #4 nombre enr trouves: 4

Dans : Resource id #5 nombre enr trouves: 0


tu vois que dans tous les cas on a une ressource et que mysql_num_rows renvoie le nombre de lignes de données dans cette ressource
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
17 mars 2010 à 18:45
PS: par contre je te concède que le test:

if(mysql_num_rows($result1))


fonctionne correctement même dans le cas du zéro

Cordialement

@lain
0
Profil bloqué
11 juin 2011 à 17:58
j'ai le même problème est je n'est toujours pas la solution,sa m'énerve c'est script qui comporte toujours un truc ...
0
Holala .... j'ai chercher trop longtemps et MERCI inther .... c'etait vraiment 'con'!
0