Requete mysql ajax

Fermé
dallap - 13 déc. 2010 à 15:13
 dallap - 15 déc. 2010 à 15:57
Bonjour,

Je souhaiterai effectuer une requête Mysql grâce à du javascript/ajax.
Je me suis servit de ce tutoriel https://www.toutjavascript.com/savoir/xmlhttprequest.php3 mais je n'ai aucun résultat.

Voici un extrait de mon code:

J'ai un formulaire qui, au submit appel une fonction Check. Dans cette fonction javascript je contrôle les champs (cette partie fonctionne), puis viens le controle du double pseudo:

var l1    = f.elements["pseudo"]; //mon champs pseudo
	var index = l1.value;  
	if(index < 4)  
	   {}
	else {  
	   var xhr_object = null;  
	      
	   if(window.XMLHttpRequest) // Firefox  
	      xhr_object = new XMLHttpRequest();  
	   else if(window.ActiveXObject) // Internet Explorer  
	      xhr_object = new ActiveXObject("Microsoft.XMLHTTP");  
	   else { // XMLHttpRequest non supporté par le navigateur  
	      alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");  
	      return;  
	   }  
	 
	   xhr_object.open("POST", "check_pseudo.php", true);  //appel ma fonction de controle dans la bdd
	      
	   
	xhr.onreadystatechange = function() {
        //Si la requête est terminée
        if ( xhr.readyState == 4 ) 
          //Si la réponse ne contient pas d'erreur
          if ( xhr.status == 200 ) {
	
//ICI JE SUIS UN PEU PERDU, JE NE SAIS PAS QUOI METTRE
			}
          else //Erreur
           alert ("erreur");
}
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");  
// QUE METTRE ICI ???
data="colonne="+colonne;
xhr.send(data);

	}


ma fonction PHP check_pseudo:

function check_pseudo() {
	
	 
	connectMySQL();
	 
	 $sql = 'SELECT count(*) FROM user WHERE pseudo="'.$_SESSION['pseudo'].'"'; 
         $req = mysql_query($sql) or die(mysql_error()); 
         $data = mysql_fetch_array($req); 
 
         if ($data[0] == 0) { 
		 echo "<script>return true;</script>"; 
		 } 
		 else {
			  echo "<script>return false;</script>";
			  echo "alert('already used');";}
	@mysql_close($mysql_db);  
}


je souhaiterai que ma fonction javascript de check formulaire renvoie false/true suivant si le pseudo est deja utilisé...

j'avoue être un peu perdu à la fin de la fonction javascript.

Pourriez vous m'aider?
merci!

3 réponses

Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
13 déc. 2010 à 16:09
Quand le status est égale à 200 cela veut dire que tout est ok, donc à toi de voir ce que tu veux faire.
Ensuite lorsque tu fais xhr.send(data)
data correspond aux valeurs que tu va envoyé à ton fichier check_pseudo.php
donc à mon avis tu dois récupérer le pseudo pour ensuite faire le traitement dans ta page php
Je suis rarement claire dans mes explications, donc n'hésite pas à dire si tu comprends rien à ce que je te raconte !
0
salut,
j'essaye ça demain! merci :)
0
Bonjour, j'y suis presque arrivé, en m'inspirant de http://www.editeurjavascript.com/trucs/35,ajax_interrogez_votre_serveur_avec_javascript.php

j'ai réussit à faire afficher "votre pseudo est trop court" au cours de la frappe.
mon seul problème est d'écrire correctement cette partie:

function check_pseudo(pseudo)
     {
     if(pseudo != '')
               {
               if(pseudo.length<4)
                         writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est trop court</span>');
               else if(texte = file('checkpseudo?pseudo='+escape(pseudo))) /CETTE LIGNE
                         {
          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('');
                         }
               }

     }


Sur cette page j'ai un include functions.php où se trouve ma fonction PHP "checkpseudo" je dois l'apeller sur la ligne en gras mais je n'y arrive pas. Comment puis-je faire?
merci!
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
15 déc. 2010 à 15:31
Bonjour,
" Je n'y arrive pas " veux dire qu'il y a une erreur ??
0
non pas de message d'erreur, la fonction PHP n'est pas éxécutée

tout est bon dans mon script sauf la ligne
else if(texte = file('checkpseudo?pseudo='+escape(pseudo)))


car je ne sais pas comment appeler la fonction checkpseudo
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
15 déc. 2010 à 15:45
Comment veux tu appeller la fonction checkpseudo dans checkpseudo ?????
0
dans ma fonction javascript je dois appeler la fonction php à un moment, comme dans ce tutorial: http://www.editeurjavascript.com/trucs/35,ajax_interrogez_votre_serveur_avec_javascript.php

il l'effectue à la ligne:
else if(texte = file('http://www.editeurjavascript.com/scripts/exemples/verifpseudo.php?pseudo='+escape(pseudo)))

je souhaiterai faire la même chose mais au lieu mettre http://www.editeurjavascript.com/scripts/exemples/verifpseudo.php? je souhaiterais mettre ma fonction php checkpseudo (qui n'a rien avoir avec check_pseudo javascript)


pour infos voici checkpseudo():
function checkpseudo() {


connectMySQL();

$sql = 'SELECT count(*) FROM table WHERE pseudo="'.$_GET['pseudo'].'"';
$result = mysql_query ($sql);
if(mysql_num_rows($result)>=1)
echo "1";
else
echo "2";
@mysql_close($mysql_db);
}
0