Partage
  • Partager sur Facebook
  • Partager sur Twitter

[AJAX/PHP] Optimisation d'un code

Récupérer une valeur de retour

Sujet résolu
    1 novembre 2010 à 17:10:03

    Bonsoir,

    Je viens poster ici car j'ai un soucis avec un script que j'ai tenté d'adapter à mon site (j'ai un niveau débutant en web), mon but était du vérifier en temps réel si lorsque l'utilisateur entre son pseudo dans un champ formulaire, si celui-ci existe ou non dans ma BDD, et grâce au code ci-dessous, j'ai pû mettre cette fonctionalité en place.

    Le problème est que lorsque dans le 2eme fichier, je test si le pseudo existe, j'aimerais non pas printer mais retourner une valeur dans ma fonction javascript du 1er fichier, retourner 1 ou 2 ou vrai ou faux, histoire de faire d'autres manipulations que de printer un texte (disabled un bouton submit, changer le display d'une balise etc).

    Sur le code que j'ai trouvé, l'auteur avait apperemment prévut cela, puisqu'il y a un "if (texte==1) etlse if (texte==2"), mais je n'arrive pas à accéder à ses conditions ! Ca fait bientôt une semaine que je bloque là dessus alors si quelqu'un pouvait me donner l'astuce ce serait vraiment génial ! Voici le code:

    FICHIER 1

    function writediv(texte)
    {
      document.getElementById('doublon_or_not').innerHTML = texte;
    }
    
    function verifGroupe(groupe)
    {
    	if (groupe != '')
    	{
    		if (groupe.length > 20)
    			writediv('<span style="color:red"><b>'+groupe+' :</b> ce nom de groupe est trop long</span>');
    		else if (texte = file('check_doublon_groupe.php?groupe='+escape(groupe)))
    		{
    		<couleur nom="rouge">if (texte == 1)
    			writediv('<span style="color:red"><b>'+groupe+' :</b> ce nom de groupe est deja pris</span>');
    		else if (texte == 2)
    			writediv('<span style="color:green"><b>'+groupe+' :</b> ce nom de groupe est libre</span>');</couleur>		else
    			writediv(texte);
    		}
    	}
    	else
    		writediv('<span style="color:yellow"><b>'+groupe+'</b> Veuillez Entrer un nom de groupe</span>');
    }
    
    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);
    }
    


    Champ de formulaire

    <input type="text" name="groupe" id="groupe" onKeyUp="verifGroupe(this.value)"/>
    


    FICHIER 2

    <?php
    	try
    	{
    		$bdd = new PDO('mysql:host=localhost;dbname=name', 'root', '');
    	}
    	catch(Exeption $e)
    	{
    		die('Erreur : '.$e->getmessage());
    	}
    	$reponse = $bdd->query("SELECT nom FROM groupes WHERE nom='".$_GET["groupe"]."'");
    	$reponse->execute();
    	$donnees = $reponse->fetch();
    	$reponse->closeCursor();
    
    	echo ($donnees ? 1 : 2);
    }
    
    • Partager sur Facebook
    • Partager sur Twitter
      1 novembre 2010 à 17:16:05

      Salut,
      Pourquoi est-ce que tu ne poste pas la partie importante de ton code (la fonction file) ?
      • Partager sur Facebook
      • Partager sur Twitter
        1 novembre 2010 à 18:21:04

        Salut,

        En effet j'ai eût un petit soucis technique lors de la création du post :-°

        Je l'ai éditée et complétée.

        Merci !
        • Partager sur Facebook
        • Partager sur Twitter
          1 novembre 2010 à 20:02:37

          EDIT : Non rien.

          EDIT 2 : Après la ligne 13, as-tu essayé de faire un alert(texte) pour voir la valeur effectivement retournée ?

          (Le zCode de couleur ne fonctionne pas dans les blocs de code... Par contre, tu peux utiliser l'option "surligne" pour mettre en valeur certaines lignes. Edite ton premier message à nouveau stp.

          http://www.siteduzero.com/tutoriel-3-3 [...] tml#ss_part_3 )
          • Partager sur Facebook
          • Partager sur Twitter
            1 novembre 2010 à 20:06:38

            Ok, ce qu'il te faut c'est un tuto, regarde les 2 premiers chapitres de celui-ci
            • Partager sur Facebook
            • Partager sur Twitter
              1 novembre 2010 à 20:08:14

              @LCaba : il est en synchrone, son code devrait fonctionner... ? :euh:
              • Partager sur Facebook
              • Partager sur Twitter
                1 novembre 2010 à 20:22:45

                Ah oui en effet... quelle horreur !! Sans parler des accolades sacrifiées et des variables non déclarées... Alors le problème doit venir des conditions plus que douteuses dans la fonction verifGroupe()...
                • Partager sur Facebook
                • Partager sur Twitter
                  1 novembre 2010 à 20:49:53

                  Citation : zerocop


                  FICHIER 1


                  else if (texte = file('check_doublon_groupe.php?groupe='+escape(groupe)))
                  		{
                  		<couleur nom="rouge">if (texte == 1)
                  			writediv('<span style="color:red"><b>'+groupe+' :</b> ce nom de groupe est deja pris</span>');
                  


                  On dirait que tu donnes une affectation au lieu d'émettre une condition à ton else if
                  Ne devrais-tu pas écrire: else if(texte == file...) ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    1 novembre 2010 à 20:54:48

                    @lolown, il effectue en effet une affectation. Mais c'est volontaire. La condition sera validée si texte n'est pas une chaîne vide.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      2 novembre 2010 à 8:53:39

                      Salut à tous,

                      Ok apparemment ce code n'est pas super propre o_O.

                      Comme je le dit plus haut je l'ai récupéré sur internet (sur un forum de "commmentcamarche.net").

                      Merci pour le lien vers le tuto LCaba, je vais me lancer dedans attentivement, mais il est fort probable que je revienne poser quelques questions de noob ici au fur et à mesure de mon avancement :-°

                      Merci !
                      • Partager sur Facebook
                      • Partager sur Twitter
                        2 novembre 2010 à 11:19:52

                        Pas de problème, mais c'est mieux de partir avec de bonnes bases, on est pas là pour refaire le cours :D
                        • Partager sur Facebook
                        • Partager sur Twitter

                        [AJAX/PHP] Optimisation d'un code

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown