Partage
  • Partager sur Facebook
  • Partager sur Twitter

Autocomplétion avec php sql

    19 juin 2018 à 8:34:23

    philodick a écrit:

    Tu n'as qu'à tester directement :

     
           // Mot tapé par l'utilisateur
            $term = 'a';
      
            // Requête SQL
            $requete = $bdd->prepare("SELECT DISTINCT prenom_pj FROM membre_pj WHERE prenom_pj LIKE :term ORDER BY prenom_pj, id_client_pj ASC");
            $requete->execute(array('term' => "'%".$term."%'"))
      
            // Generate skills data array
            $prenom = array();
      
            while($donnee = $requete->fetch())
            {
            array_push($prenom, $donnee['prenom_pj']);
            }
              
            echo json_encode($prenom);





    • Partager sur Facebook
    • Partager sur Twitter
      19 juin 2018 à 9:58:52

      Donc j'ai essayer deux manière

      Copier coller ce code dans une autre page à part,  ainsi que l'intégrer dans ma page ou je veut réaliser cet autocomplete (la ou il y aura l'input)

      L'un comme l'autre me renvoie rien dans le "array".

      il est donc vite, j'ai essayer avec 2 lettre differente "a" puis "n" et toujours rien.
      Je te met les screen pour te montrer

      Les crochets sont la résultante de : echo json_encode($prenom); donc du array on est bien d'accord ?

      et dans ma base de donnée la requete (en mettant %n%)




      "BONNE NOUVELE"
      j'ai fait ceci dans mon code pour tester : 

      $term = 'n';
      				 
      // Requête SQL
       $requete = $bdd->query("SELECT DISTINCT prenom_pj FROM membre_pj WHERE prenom_pj LIKE '%n%' ORDER BY prenom_pj, id_client_pj ASC");
      //$requete->execute(array('term' => "'%".$term."%'"));
      				 
      // Generate skills data array
      $prenom = array();
      				 
       while($donnee = $requete->fetch())
      {
       array_push($prenom, $donnee['prenom_pj']);
       }
      				    
      echo json_encode($prenom); ?>


      Et voici le résultat dans ma page :



      J'ai donc un retour dans l'array mais rien dans l'input.

      Voila j'essaye de comprendre un peu pourquoi mais on a peut etre une piste.
      Merci encore.

      • Partager sur Facebook
      • Partager sur Twitter
        19 juin 2018 à 11:52:45

        Tu peux montrer les lignes de connexion à ta bd.

        • Partager sur Facebook
        • Partager sur Twitter
          19 juin 2018 à 12:01:09

          session_start ();
          
          
          		try {
          			$bdd = new PDO('mysql:host=localhost;dbname=poitiers_jeune;charset=utf8', 'root','', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
          			}catch (Exception $e){
          				die('Erreur : ' . $e->getMessage());
          			}

          -
          Edité par AnthonyChevalier 19 juin 2018 à 12:08:36

          • Partager sur Facebook
          • Partager sur Twitter
            19 juin 2018 à 12:15:09

            $requete->execute(array('term' => "%${term}%"))

            Est ce que tu peux essayer cette instruction à la place de l'autre.

            Ou bien 

            $requete->execute(array('term' => '%".$term."%'))



            -
            Edité par DevMercenaire 19 juin 2018 à 12:19:15

            • Partager sur Facebook
            • Partager sur Twitter
              19 juin 2018 à 12:27:41

              je l'ai donc mise dans la page search.php (les deux requetes l'une puis l'autre)

              mais toujours pas de liste (en testant avec la lettre "n" que je tape dans le input vu qu'il va me ressortir 2 éléments)

              Si on fait le récapitulatif :

              - Connexion a la base de donnée apparement OK

              - Listing en Local OK (donc l'erreur ne proviendrait peut etre pas du module Jquery/Jquery-ui/autocompletion )
              - Requete de base (sans le term) Valide

              Qu'est ce qui pourrait causer problème autre que ceci (ou dans ceci mais si ca a l'air valide ?) j'essaye de voir et de cerner le probleme 

              -
              Edité par AnthonyChevalier 19 juin 2018 à 12:31:37

              • Partager sur Facebook
              • Partager sur Twitter
                19 juin 2018 à 12:30:25

                Teste directement comme philodick a dit.

                Ta bdd s'appelle bien poitiers_jeune

                • Partager sur Facebook
                • Partager sur Twitter
                  19 juin 2018 à 12:33:47

                  Oui regarde les screen précédent la connexion a la bdd marche



                  de plus voici le contenu de la bdd
                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 juin 2018 à 12:37:50

                    teste en mettant directement
                    $term = 'n';
                    avec les lignes que je t'ai mises.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      19 juin 2018 à 12:40:00

                      toujours rien :(

                      Edit pour le : 

                      DevMercenaire a écrit:

                      Manque les : à term

                      array(':term' =>

                      Rien encore :( j'ai fait quelques manips du style :

                      $requete = $bdd->prepare("SELECT DISTINCT * FROM membre_pj WHERE prenom_pj LIKE '%':term'%' ORDER BY prenom_pj, id_client_pj ASC");

                      mais toujours la meme finalité..rien




                      -
                      Edité par AnthonyChevalier 19 juin 2018 à 13:15:24

                      • Partager sur Facebook
                      • Partager sur Twitter
                        19 juin 2018 à 12:48:32

                        Manque les : à term

                        array(':term' =>



                        • Partager sur Facebook
                        • Partager sur Twitter
                          19 juin 2018 à 13:29:17

                          Mais non, la requête est bonne puisqu"elle renvoie un résultat.

                          Je reste sur mon idée de départ, les bibliothèques Jquery n'ont pas l'air d'être chargées correctement.

                          Tu as essayé de déboguer le Javascript ?

                          • Partager sur Facebook
                          • Partager sur Twitter
                            19 juin 2018 à 13:46:09

                            Je suis passé en :

                            <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
                            <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>


                            mais rien n'y fait.

                            Avec l'outil : debugger; ?

                            oui je l'ai mise a ces trois endroits (lun après l'autre)

                            $(document).ready(function() {
                            	debugger;
                            	$('#search1').change(function(){
                            		debugger;
                            	    $('#search1').autocomplete({
                            
                            	        source: '../adminConfig/search.php',
                            	    });
                            	    debugger;
                            	});
                            });


                            j'ai meme deplacé mon code JS (je me suis dis au cas ou que ce serait une fonction précédente qui ferait foirer... mais rien non plus

                            Edit : apres je ne sais pas ce que je doit checker avec l'outil debugger

                            EDIT 2 : j'ai fait un console.log de mon input voila toute les infos que j'ai


                            EDIT 3 :

                            On est bien d'accord pour que l'autocomplete on a juste besoin au total : 

                            Jquery 3.3.1.js

                            <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

                            jquery-ui.js

                            <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>

                            de notre script perso

                            jquery-ui.css du style : 

                            <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css" />


                            et c'est tout ? (après par logique si l'autocomplétion en local marche alors ou est le probleme ??)
                            celui en local qui marche

                            var departements = [ "01 - Ain", "02 - Aisne", "03 - Allier", [...],  "989 - Île de Clipperton" ];
                            
                            $( "#departement" ).autocomplete({
                                source: departements,
                                minLength : 1
                            });

                            -
                            Edité par AnthonyChevalier 19 juin 2018 à 15:10:17

                            • Partager sur Facebook
                            • Partager sur Twitter
                              19 juin 2018 à 16:08:19

                              C'est bizarre en effet. Tu es sûr du chemin de ton fichier php ?
                              • Partager sur Facebook
                              • Partager sur Twitter
                                19 juin 2018 à 16:28:47

                                oui sinon dans la console d'erreur j'ai 

                                jquery.min.js:2 GET http://localhost/adminConfig/search.php?term=n 404 (Not Found)

                                si je modifie ou se trouve le fichier (plus bas ou plus haut dans l'architecture)

                                edit : oui mais la c'était fait expres  pour montrer , sinon j'ai pas d'erreur (la je l'avait provoquée)

                                -
                                Edité par AnthonyChevalier 19 juin 2018 à 16:45:31

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  19 juin 2018 à 17:29:01

                                  edit : oui mais la c'était fait expres  pour montrer , sinon j'ai pas d'erreur (la je l'avait provoquée)
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    21 juin 2018 à 18:36:17

                                    JAI TROUVER NON DIDJU !

                                           // Mot tapé par l'utilisateur
                                            $term = $_GET['term'];
                                     
                                            // Requête SQL
                                            $requete = $bdd->query("SELECT DISTINCT * FROM membre_pj WHERE prenom_pj LIKE '%".$term."%' ORDER BY prenom_pj, id_client_pj ASC");
                                     
                                    		$array = array(); // on créé le tableau
                                    
                                    		while($donnee = $requete->fetch()) // on effectue une boucle pour obtenir les données
                                    		{
                                    		    array_push($array, $donnee['prenom_pj']); // et on ajoute celles-ci à notre tableau
                                    		}
                                    
                                    		echo json_encode($array); // il n'y a plus qu'à convertir en JSON


                                    Encore apparement c'est le prepare qui doit entrer en collision quelque part mais voila c'est résolu !

                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Autocomplétion avec php sql

                                    × 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