Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/12/2011, 18h27   #1
Invité de passage
 
Étudiant
Inscription : août 2011
Messages : 12
Détails du profil
Informations personnelles :
Localisation : Autre

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 12
Points : 3
Points : 3
Par défaut verification de disponibilité de pseudo dans une table mysql

Bonjour
je débute en javascript
je viens d'essayer un bout de code que j'ai déniché sur un site, qui vérifie si un pseudo est disponible
alors, il comporte deux fonction, une pour lire le fichier qui contient la requete vers ma base de donner, et une autre qui teste les valeurs retourné par la 1ere fonction et exécute le traitement nécéssaires.
le bout de code est très lisible, le passage de paramètres entre mon formulaire, le fichier .php et la fonction qui lit le fichier s'effectue sans problème.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
<?
 
 
// CONNECION SQL
mysql_connect("localhost", "XXXXX", "XXXXX");
mysql_select_db("XXXXX");
 
// VERIFICATION
$result = mysql_query("SELECT PSEUDO FROM membre WHERE PSEUDO='".$_GET["pseudo"]."'");
if(mysql_num_rows($result)>=1)
        echo "1";
else
        echo "2";
?>
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 
function writediv(texte)
     {
     document.getElementById('pseudobox').innerHTML = 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);
     }
 
function verifPseudo(pseudo)
     {
     if(pseudo != '')
               {
               if(pseudo.length<2)
                         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);
                         }
               }
 
     }
dans la dernière fonction VerifPseudo, lorsque la longueur du pseudo est appropriée, mais au lieu que la variable texte se contente de prendre la valeur 1 ou 2 (comme il est indiqué dans le fonction .php ) elle prend tout le reste , voila ce que j'ai eu dans mon navigateur :
=1) echo "1"; else echo "2"; ?>
c'est le 2eme else qui s'est exécuté...
DeD b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2011, 19h41   #2
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 776
Points : 4 776
Bonjour,
pas un spécialiste du PHP, mais il semblerait que tu ais un problème de syntaxe
Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
// CONNECION SQL
mysql_connect("localhost", "XXXXX", "XXXXX");
mysql_select_db("XXXXX");
// VERIFICATION
$result = mysql_query("SELECT PSEUDO FROM membre WHERE PSEUDO='".$_GET["pseudo"]."'");
if( mysql_num_rows($result)){
  echo "1";
}
else {
  echo "2";
}
?>
le fait d'injecter directement $_GET dans ta requête reste une opération suicidaire...
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2011, 21h46   #3
Invité de passage
 
Étudiant
Inscription : août 2011
Messages : 12
Détails du profil
Informations personnelles :
Localisation : Autre

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 12
Points : 3
Points : 3
Citation:
Envoyé par NoSmoking Voir le message
Bonjour,
pas un spécialiste du PHP, mais il semblerait que tu ais un problème de syntaxe
Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
// CONNECION SQL
mysql_connect("localhost", "XXXXX", "XXXXX");
mysql_select_db("XXXXX");
// VERIFICATION
$result = mysql_query("SELECT PSEUDO FROM membre WHERE PSEUDO='".$_GET["pseudo"]."'");
if( mysql_num_rows($result)){
  echo "1";
}
else {
  echo "2";
}
?>
le fait d'injecter directement $_GET dans ta requête reste une opération suicidaire...
bon, disons que l'ensemble de teste sur le pseudo saisi est effectué ailleurs...
la variable pseudo est récupéré sans problème, mais uniquement dans le cas ou sa taille est <1 ou dépasse 30, je peux même l'afficher dans le navigateur
DeD b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2011, 23h12   #4
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 071
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 071
Points : 45 201
Points : 45 201
Le problème ne se situe pas coté javascript vu que c'est le responseText qui n'est pas correct.
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2011, 12h21   #5
Expert Confirmé
 
Avatar de emmanuel.remy
 
Emmanuel REMY
Inscription : novembre 2005
Messages : 2 844
Détails du profil
Informations personnelles :
Nom : Emmanuel REMY
Âge : 43

Informations forums :
Inscription : novembre 2005
Messages : 2 844
Points : 3 589
Points : 3 589
Citation:
Envoyé par DeD b Voir le message
bon, disons que l'ensemble de teste sur le pseudo saisi est effectué ailleurs...
la variable pseudo est récupéré sans problème, mais uniquement dans le cas ou sa taille est <1 ou dépasse 30, je peux même l'afficher dans le navigateur
Ton code Javascript dit: si la longueur du pseudo est strictement inférieur à 2 je fais ça, si la longueur du pseudo est strictement supérieur à 30 je fais ça, sinon je fais mon appel ajax synchrone

Cherche pas plus loin.

ERE
__________________
Quand une tête pense seule, elle devient folle.
emmanuel.remy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/12/2011, 13h10   #6
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 139
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 139
Points : 7 276
Points : 7 276
Bonsoir,
1- Tu n'as pas besoin de tester le readyState parce que tu travailles en mode synchrone.
Code :
1
2
xhr_object.send(null);
     return(xhr_object.responseText);
2- Le responseText est un String mais pas un int.
A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2011, 21h59   #7
Membre Expert
 
Avatar de Watilin
 
Homme Matilin Torre
Étudiant
Inscription : juin 2010
Messages : 679
Détails du profil
Informations personnelles :
Nom : Homme Matilin Torre
Âge : 23
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2010
Messages : 679
Points : 1 202
Points : 1 202
Citation:
Envoyé par DeD b Voir le message
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
<?
 
 
// CONNECION SQL
mysql_connect("localhost", "XXXXX", "XXXXX");
mysql_select_db("XXXXX");
 
// VERIFICATION
$result = mysql_query("SELECT PSEUDO FROM membre WHERE PSEUDO='".$_GET["pseudo"]."'");
if(mysql_num_rows($result)>=1)
        echo "1";
else
        echo "2";
?>
[…] voila ce que j'ai eu dans mon navigateur :
=1) echo "1"; else echo "2"; ?>
Le problème vient de la façon dont tu écris tes balises PHP : <? ... ?>. C'est la syntaxe « raccourcie ». À mon avis, ton serveur ne la supporte pas, ce qui expliquerait pourquoi il repasse en mode texte quand il rencontre un chevron fermant (>) dans la comparaison if (mysql_num_rows($result)>=1). Regarde le code HTML généré pour être sûr.

Je te conseille, à titre personnel, d'écrire systématiquement les balises PHP « longues » : <?php ... ?>.
__________________
Disposition de clavier ergonomique française : Bépo
Watilin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h55.


 
 
 
 
Partenaires

Hébergement Web