Partage
  • Partager sur Facebook
  • Partager sur Twitter

Autocomplétion avec php sql

    14 juin 2018 à 17:08:59

    Bonjour,

    J'aimerai aller chercher mes données contenues dans ma bdd.

    J'arrive a faire l'autocomplétion en local mais pas liée à la base de donnée, j'ai regardé x sites mais je n'y arrive pas, après j'ai ptet pas encore eu le declic. Si vous pouviez m'aider. Merci.

    Mon form de recherche:

    <div class="recherche1">
        <label for="recherche1">Rechercher :</label>
        <input type="text" autocomplete="off" placeholder="A remplir..." name="recherche1" id="search1">	
    </div>

    Mon js :

    $(document).ready(function() {
        $('#search').autocomplete({
            source: 'search.php',
    	minLength: 0 
    	}); 
    });

    Et enfin mon php : search.php

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

    Merci de votre aide.

    Question + : doit-on être toujours en GET dans le form ou peut-on etre en POST, j'avoue avoir du mal dans ce cas la. Merci de l'explication.

    j'aurais peut-être d'autres questions, mais en tout cas merci des explications et du temps que vous aller prendre pour mon cas. merci



    -
    Edité par AnthonyChevalier 14 juin 2018 à 17:49:12

    • Partager sur Facebook
    • Partager sur Twitter
      14 juin 2018 à 17:12:03

      Bonjour,

      Revoie la doc, c'est $_GET['term'] que tu devrais récupérer.

      • Partager sur Facebook
      • Partager sur Twitter
        14 juin 2018 à 17:23:11

        c-a-d ?
        la ou j'ai trouver ?  ==> https://openclassrooms.com/courses/decouvrez-la-puissance-de-jquery-ui/l-autocompletion-1#/id/r-510006

        le get['term'] correspond a quoi en fait le term ? car c'est "expiqué" mais sans plus , merci 

        • Partager sur Facebook
        • Partager sur Twitter
          14 juin 2018 à 17:27:40

          La fonction envoie automatiquement la variable $_GET['term'] avec ce que tu as mis dans l'input.
          • Partager sur Facebook
          • Partager sur Twitter
            14 juin 2018 à 17:35:37

            d'accord deja ca de compris merci.
            après j'ai donc pas de resultat (j'ai verifier ma base de donner pour que les lettres correspondent)

            j'update mon post pour changer mes erreurs que j'ai remarquer

            EDIT : est-ce que 'autocomplete="off" bloquerait ?? car la c'est du forcing pour que chrome ne me mette pas les choses deja enregistrées.

            -
            Edité par AnthonyChevalier 14 juin 2018 à 17:51:46

            • Partager sur Facebook
            • Partager sur Twitter
              14 juin 2018 à 18:52:13

              Non l'autocomplete="off" ne gène en rien.

              Par contre pour ta requête tu devrait avoir "prenom_pj" à la place de "*"

              Supprime également le htmlentities

              • Partager sur Facebook
              • Partager sur Twitter
                14 juin 2018 à 18:55:27

                fait. 
                Mais toujours rien :/
                • Partager sur Facebook
                • Partager sur Twitter
                  14 juin 2018 à 19:02:26

                  J'avais pas vu, mais tu as mis search1 au lie de search dans l'id de ton input.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    15 juin 2018 à 0:05:11

                    ah deja ! j'avais pas vu non plus ! merci

                    du coup j'ai plus que ca comme message d'erreur je copie colle si tu as solution niquel, apres je chercherai demain aussi ! merci

                    jquery-3.3.1.min.js:2 GET http://localhost/test/xxx/search.php?term=a                       404 (Not Found)

                    • Partager sur Facebook
                    • Partager sur Twitter
                      15 juin 2018 à 10:28:35

                      Apparemment il ne trouve pas ton fichier search.php
                      • Partager sur Facebook
                      • Partager sur Twitter
                        15 juin 2018 à 14:08:33

                        bah oui jsuis bete le chemin était pas le même , nan mais j'étais fatigué !
                        bon plus d'erreur ca ne trouve rien mais a voir c'est ptet la requete qui n'est pas bonne
                        merci pour tout en tout cas !

                        -
                        Edité par AnthonyChevalier 15 juin 2018 à 14:08:45

                        • Partager sur Facebook
                        • Partager sur Twitter
                          15 juin 2018 à 16:35:49

                          Je suis entrain apparement la requete serait fausse a partir du like %n% (par exemple)

                          SELECT DISTINCT prenom_pj FROM membre_pj WHERE prenom_pj LIKE "%n%" ORDER BY prenom_pj, id_client_pj ASC
                          => fallait mettre des "" autour de %n% (pour la requete en direct dans phpmyadmin) je vais voir pour via le "term"

                          (désolé du retard je faisais autre chose en meme temps)

                          EDIT : voila ce que j'ai dans mon php

                          // Mot tapé par l'utilisateur
                                  $term = $_GET['term'];
                           
                                  // 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);



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

                          • Partager sur Facebook
                          • Partager sur Twitter
                            18 juin 2018 à 10:29:28

                            toujours pas résolu :( j'essaye de voir et comprendre

                            HTML

                            <div class="recherche1">
                            						<label for="recherche1">Rechercher :</label>
                            						<input type="text" autocomplete="off" placeholder="A remplir..." name="recherche1" id="search1">	
                            					</div>


                            JS

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

                            Et Php

                            if (isset($_SESSION['login']) && isset($_SESSION['pwd'])) {
                            		try {
                            			$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', $_SESSION['login'], $_SESSION['pwd'], array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
                            			}catch (Exception $e){
                            				die('Erreur : ' . $e->getMessage());
                            			}
                            
                            
                                   // Mot tapé par l'utilisateur
                                    $term = $_GET['term'];
                             
                                    // 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);



                            merci car je commence a desesperer


                            • Partager sur Facebook
                            • Partager sur Twitter
                              18 juin 2018 à 11:02:50

                              As-tu essayé le php tout seul (avec $term='a' par exemple) ?

                              Si c'est tout ton code, il manque le session_start().

                              -
                              Edité par philodick 18 juin 2018 à 11:03:07

                              • Partager sur Facebook
                              • Partager sur Twitter
                                18 juin 2018 à 11:07:20

                                ha oui j'avais mis dans le header et vu que la c'est une page annexe je l'avais pas mis.

                                J'ai essayer avec oui, mais je comprend pas a quel moment cela m'ouvrira une fenetre si je met le $term='a' , enfin j'ai essayer , mais y'a rien tout de même
                                merci de ta patience

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  18 juin 2018 à 11:21:29

                                  Ton javascript peut se limiter à ça :

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


                                  Dés que tu tapes une lettre dans ton input, ça devrait te proposer la liste en dessous.

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    18 juin 2018 à 11:29:35

                                    Ca devrait : direct dans phpmyadmin : 

                                    SELECT DISTINCT prenom_pj FROM membre_pj WHERE prenom_pj LIKE '%n%' ORDER BY prenom_pj, id_client_pj ASC 

                                    marche très bien. ca me ressort ce qu'il faut.

                                    Mais si je tape dans mon input n j'ai rien qui ressort :/ j'ai test d''enlever les ' autour ca donne donc 'term' => "%".$term."%" ou array('term' => "'%".$term."%'"))

                                    mais rien ne change. 

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      18 juin 2018 à 14:57:23

                                      Tu dois avoir un problème dans le chargement des bibliothèques Jquery alors, je ne vois que ça.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        18 juin 2018 à 17:01:23

                                        hmm j'avais pas pensé a ca , il faudrait que je les prennent a la source genre chercher directement les lib sur le site ?
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          18 juin 2018 à 17:05:40

                                          Oui, tu dois avoir besoin de jquery.js et jquery-ui.js normalement;
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            18 juin 2018 à 18:34:03

                                            j'ai les deux 

                                            	<script type="text/javascript" src="<?php if(is_file('./js/jquery-3.3.1.min.js')){
                                            				echo './js/jquery-3.3.1.min.js';
                                            			}else{
                                            				echo '../js/jquery-3.3.1.min.js';
                                            			}?>"></script>
                                            	<script type="text/javascript" src="<?php if(is_file('./js/jquery-ui.js')){
                                            				echo './js/jquery-ui.js';
                                            			}else{
                                            				echo '../js/jquery-ui.js';
                                            			}?>"></script>
                                            	<script type="text/javascript" src="<?php if(is_file('./js/script.js')){
                                            				echo './js/script.js';
                                            			}else{
                                            				echo '../js/script.js';
                                            			}?>"></script>


                                            j'ai essayer aussi : 

                                            <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>


                                            rien n'y fais :(
                                            apreès si les valeurs en local marche c'est juste la connexion mon code => base de donnée je suppose mais la reuete est "bonne" donc bizarre ou alors c'est wamp le probleme ?

                                            -
                                            Edité par AnthonyChevalier 18 juin 2018 à 18:47:15

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              18 juin 2018 à 19:04:43

                                              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
                                                18 juin 2018 à 19:30:39

                                                deja tester aussi rien ne change

                                                après il est vrai que je suis un peu bete j'avais mis : 

                                                $term = $_GET['term'];

                                                alors que j'avais dans mon html :

                                                <input type="text" autocomplete="off" placeholder="A remplir..." name="recherche1" id="search1">

                                                donc c'était pas logique ca aurait dut etre recherche1 par rapport au name 

                                                mais ca ne change rien


                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  18 juin 2018 à 19:35:23

                                                  Non pas du tout, c'est bien $_GET['term']

                                                  Quand tu dis rien en change, as-tu essayé d'appeler cette page DIRECTEMENT ?

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    18 juin 2018 à 19:43:05

                                                    term est en rapport avec l'autocompletion du fichier jquery-ui ? 

                                                    c'est-a-dire ?

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      18 juin 2018 à 21:33:22

                                                      Oui, cette variable est générée automatiquement par Jquery.

                                                      Ce que je veux dire, c'est tu nommes la page ci-dessus "essai.php" et tu l'affiches dans ton navigateur.

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        18 juin 2018 à 22:10:29

                                                        bon forcement j'ai changer pour avoir :

                                                         $term = 'n';
                                                         
                                                                // 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."%'"));

                                                        et donc ce que ca m'écrit c'est : []


                                                        donc rien dans le array/push 
                                                        alors qu'il y devrait y avoir 2 nom le mien et un autre.
                                                        la question est pourquoi ? je cherche en meme temps


                                                        voila xd


                                                        et oui ca me semblait logique apres

                                                        -
                                                        Edité par AnthonyChevalier 18 juin 2018 à 23:34:52

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          19 juin 2018 à 0:29:08

                                                          désolé je n'ai pas compris alors ce que tu voulais en venir. j'ai appeler la page donc ou y'a la requete et le term etc.

                                                          je pensais que tu faisais allusion a ceci

                                                          • 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