Requete mysql ajax

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

  • Votes
  • Date
  • Date décroissante
  1. 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 !
    1. 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!
      1. Bonjour,
        " Je n'y arrive pas " veux dire qu'il y a une erreur ??
      2. 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
      3. Comment veux tu appeller la fonction checkpseudo dans checkpseudo ?????
      4. 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);
        }