Partage
  • Partager sur Facebook
  • Partager sur Twitter

Mini-Moteur de recherche php

    16 septembre 2017 à 2:45:50

    Bonjour , j'ai développer un site en html  css et je compte le rendre dynamique avec du php , j'utilise le server MAMP.

     Il faudrait que l'utilisateur puisse écrire une ou plusieurs mots-clefs qui seront recherchait dans une table de ma base de donnée phpmyadmin et qui affichera le contenu des ranger qui les contiennent.

    Par ou commencer ?

    Pour information dans ma base de données , j'ai une table nommé Titre et dans chaque rangée 3 colonne qui sont  id, titre, définition. L'affichage de 'id' n'est bien sure pas nécessaires.

    Merci d'avance.

    -
    Edité par Numerix13 23 août 2019 à 9:30:20

    • Partager sur Facebook
    • Partager sur Twitter
      16 septembre 2017 à 2:54:48

      Bonsoir,

      >> j'aurais besoin d'un script qui me permettrais d'avoir une barre de recherche

      Humm pas vraiment au bon endroit pour cela. Ici on ne donne pas de code tout fait, la communauté est la pour vous guider et vous orienter suivant le code que vous avez écrit. Vous pouvez compléter votre message par votre code que vous pouvez copier/coller sur ce forum en utilisant le bouton code </>. Merci

      • Partager sur Facebook
      • Partager sur Twitter
        16 septembre 2017 à 2:58:12

        C'est bien sa le problème je n'ai pas de code php et mes bases ne sont plus très solide je pense. 

        -
        Edité par Numerix13 23 août 2019 à 9:32:04

        • Partager sur Facebook
        • Partager sur Twitter
          16 septembre 2017 à 3:08:21

          Numerix13 a écrit:

          c'est bien sa le problème je n'ai pas de code php

          Dans ce cas il faut l'écrire. Avez vous lu le cours PHP de ce site? https://openclassrooms.com/courses/concevez-votre-site-web-avec-php-et-mysql

          • Partager sur Facebook
          • Partager sur Twitter
            16 septembre 2017 à 11:38:42

            Oui, Il y'a quelques années quand j'ai débuter en informatique avec le css et l'html mais depuis j'ai explorer d'autres domaines de l'informatique et je ne suis pas revenu dessus.

            -
            Edité par Numerix13 23 août 2019 à 9:33:33

            • Partager sur Facebook
            • Partager sur Twitter
              16 septembre 2017 à 13:25:22

              Alors on va reprendre, pas méchamment : 

              • Avant toute chose, lire le cours officiel sur le PHP de Mathieu Nebra.
              • Se concentrer sur la façon de se connecter à une base de données, et de faire afficher les erreurs MySQL.
              • Se pencher sur la façon d'insérer des données en base, de les lire et de les retourner. Et au cas où, les mettre à jour et les effacer.
              • Une fois que ceci est acquis, on peut se focaliser sur les façons de sélectionner les données avec les operateurs SQL.

              Là marche à suivre :

              • PDO pour la connexion MySQL, avec une gestion des erreurs par exceptions ou warning,
              • Un formulaire HTML pour envoyer les valeurs recherchées au script de traitement.
              • Un script PHP de traitement récupérant les données du formulaire, les sécurisant et lançant la recherche en base.
              • L'utilisation de requêtes préparées pour sécuriser un minimum.
              • Une clause WHERE LIKE % (je te laisse chercher la mise en place) pour effectuer la recherche dans la base.
              • Une boucle pour lister les éléments retournés à adapter selon la mise en page.

              Sur ce forum nous ne donnons pas de code, comme l'a dit AbcAbc6. En revanche, nous aidons les membres dans le besoin en regardant le code qu'ils ont développé, en pointant les erreurs, en proposant des marches à suivre, en proposant des optimisations, et dans le cas où ils sont vraiment bloqués, on débloque la situation en proposant des bouts de code pouvant les aider s'ils adaptent.

              La meilleure façon d'apprendre est de faire et défaire, se documenter et prototypr. En copiant collant des choses toutes faites venues d'autres personnes, tu as plusieurs risques :

              • Ça ne fonctionne pas (où alors pas complètement),
              • Ça ne correspond pas à ton besoin,
              • C'est beaucoup trop "usine à gaz" pour un simple projet,
              • Tu ne le comprends pas,
              • Et par conséquent, tu ne sais pas l'adapter à ton besoin,
              • Tu te retrouves donc au point de départ, en ayant perdu X jours à attendre un code qui ne te va pas.

              En parcourant le cours dans ses grandes lignes, d'ici ce soir au plus tard tu auras un code fonctionnel, très simpliste. Et d'ici demain soir, au plus tard, tu auras un code parfaitement adapté et intégré à ton projet (si tu as une certaine assiduité).

              Si tu as des questions durant la création de ton moteur de recherche, tu peux venir en parler sur le forum (conseils en logique, en organisation, en code, sur une fonction, ...).

              Sinon, tu peux trouver des scripts ailleurs, gratuits ou payant, que tu devras adapter. Et sans connaissance, la tâche sera bien trop complexe pour toi. Et pas sûr que tu trouves toute l'aide dont tu aurais besoin, étant donné que tu ne comprendras pas ce qu'il faudra faire ...

              Bon courage pour la suite.

              E

              • Partager sur Facebook
              • Partager sur Twitter
              Kwo:re / topic OC | Aidez les autres, indiquez un sujet résolu ! | Vous êtes bloqué ? Suivez le guide ! | N'aide pas par MP
                16 septembre 2017 à 22:36:00

                Bonjour , j'ai suivi vos conseils et je suis maintenant bien avancer sauf que la je bloque eupeu mon code qui devrait etre maintenant fonctionnelle  ne marche pas et il m'affiche une erreur "Parse error: syntax error, unexpected end of file in/Applications/MAMP/htdocs/amal/index.phpon line409 " 


                    
                    <form method="post" action="index.php">
                       <label for="nom"> Quels sont vos symptomes ?</label>
                       <input type="text" name="mot" id="nom" />
                
                <input type="submit" name="envoyer" value="rechercher" />
                
                </form>
                
                
                <?php
                
                 if(!empty($_POST['envoyer'])) // Si le formulaire est envoyé.          
                {  
                // Mon script php
                
                
                $_POST['mot'];
                $mot_clef = $_POST['mot']
                try { $bdd = new PDO('mysql:host=localhost;dbname=ma_base;charset=utf8', 'root', 'momdp');} catch (Exception $e ) { die('Erreur : ' .$e->getMessage()); } $reponse = $bdd->query("SELECT * FROM Titre WHERE Symptome LIKE '%$mot_clef%' OR Definition LIKE '%$mot_clef%' ORDER BY id DESC"); while ($donnees = $reponse->fetch()) { ?> <p> <strong>On a </strong> : <?php echo $donnees['titre']; ?> <br/> <strong>Nous savons a propos du <?php echo $donnees['titre']; ?> : </strong> <form method="post" action="index.php"> <input type="submit" name="ouvrir" value=" Voir <?php echo $donnees['titre'] ?> " /> </form> <?php if(!empty($_POST['ouvrir'])) // Si le formulaire est envoyé. { echo $donnees['Definition']; } ?> </p> <?php } else { echo("Verifier votre saisit ");} $reponse->closeCursor(); ?> }

                -
                Edité par Numerix13 23 août 2019 à 9:36:22

                • Partager sur Facebook
                • Partager sur Twitter
                  16 septembre 2017 à 23:49:21

                  Tu as, quelque part dans ton script, une accolade manquante.

                  je te conseille aussi de condenser tout le code PHP en haut de ton fichier pour y faire appel plus loin dans la page. Ce sera plus facile de debugger.

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Kwo:re / topic OC | Aidez les autres, indiquez un sujet résolu ! | Vous êtes bloqué ? Suivez le guide ! | N'aide pas par MP
                    17 septembre 2017 à 17:31:05

                    D'accord ou se situe l'accolade  ??

                    -
                    Edité par Numerix13 23 août 2019 à 9:37:04

                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 septembre 2017 à 17:36:33

                      Je ne vais pas cherche ton accolade à ta place, désolé mais c'est à toi de debbuger ton code. Si ca se trouve, elle est même dans un morceau de code que tu ne nous a pas donné.

                      Tu ne sembles pas comprendre ce que je dis pour condenser le php.

                      fais tout ton traitement de formulaire en haut, en préparant les variables à l'avance. Ensuite, dans ton HTML, tu ne fais que des echo de tes varibales (au besoin des boucles et des conditions, mais rien de plus).

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Kwo:re / topic OC | Aidez les autres, indiquez un sujet résolu ! | Vous êtes bloqué ? Suivez le guide ! | N'aide pas par MP
                        18 septembre 2017 à 0:44:07

                        C'est bon , c'est réglé mais encore une fois un petit probléme :

                        <?php
                        $nb_resultats = mysql_num_rows($reponse);
                        if($nb_resultats!= 0) 
                        {
                        // maintenant, on va afficher les résultats et la page qui les donne ainsi que leur nombre, avec un peu de code HTML pour faciliter la tâche.
                        echo $nb_resultats; // on affiche le nombre de résultats 
                        if($nb_resultats > 1) 
                        {
                         echo ('résultats'); 
                        } else { echo ('résultat'); }
                         // on vérifie le nombre de résultats pour orthographier correctement. 
                        } 
                        
                        else 
                        
                        {
                            echo("nous n'avons rien trouver , Vérifier votre saisit ");
                        }
                        ?>

                        je ne comprend pas pourquoi ce bout de code ne marche pas et lorsque je le met ma page s'affiche mais rien de plus mon script php n'a plus d'effet.

                        -
                        Edité par Numerix13 23 août 2019 à 9:40:14

                        • Partager sur Facebook
                        • Partager sur Twitter
                          18 septembre 2017 à 10:03:42

                          Quel est le problème exactement ?

                          Ce code ne fonctionne pas du tout ? Ce code fonctionne mais pas comme il faut ? Ce code fait planter la page complète ? Ce code fonctionne bien mais il ne fait pas tout comme il faut ...

                          Essaye celui-ci :

                          <?php
                          $nb_resultats = mysql_num_rows($reponse);
                          if($nb_resultats > 0) {
                              echo $nb_resultats . ' résultat' . (($nb_resultats > 1) ? 's' : '';
                              }
                          else {
                              echo "Nous n'avons rien trouvé. Verifiez votre saisie ";
                          }
                          ?>

                          Je te conseille également de passer par PDO, comme indiqué dans le cours ...

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Kwo:re / topic OC | Aidez les autres, indiquez un sujet résolu ! | Vous êtes bloqué ? Suivez le guide ! | N'aide pas par MP
                            18 septembre 2017 à 20:57:43

                            Celui ci aussi ne marche pas mais j'ai finalement réussi a régler le problème.

                            -
                            Edité par Numerix13 23 août 2019 à 9:40:44

                            • Partager sur Facebook
                            • Partager sur Twitter
                              22 septembre 2017 à 18:02:06

                              Bonjour 

                              Maintenant il faut que  permettre a mon moteur de recherche de découper la phrase saisi par l'utilisateur comportant des espaces et des ponctuation qui seront logiquement supprimée et puis de stocker tout les  mot clef  dans une variable , j'ai essayer d'utiliser explode() mais sa ne marche pas

                              <?
                              
                              $saisi= htmlspecialchars($_POST['mot']);
                              
                              $mot_clef = explode(" ", $saisi);
                              try
                              {
                                  $bdd = new PDO('mysql:host=localhost;dbname=base;charset=utf8', 'pi', 'it');}
                              
                              catch (Exception $e )
                              
                              {
                              
                                  die('Erreur : ' .$e->getMessage());
                              }
                              
                              
                              $reponse = $bdd->query("SELECT * FROM Titre WHERE Symptome LIKE '%$mot_clef%' OR Definition LIKE '%$mot_clef%' OR titre LIKE '%$mot_clef%' ORDER BY id ASC");
                              
                              $nb_resultats = $reponse -> rowCount();
                              if ($nb_resultats > 0)
                              {
                              
                              
                              echo (" $nb_resultats resultat(s)" ) ;
                              
                              } 
                              else 
                              { 
                              ?>
                                  <br/><strong><?echo ("Desoler nous n'avons pas trouver , Veuillez verifier votre saisi."); ?> <br/> <? echo (" Cela n'exclu pas l'importane de consulter un specialiste  ");}?> </strong>
                              
                                  <? 
                              
                              
                              while ($donnees = $reponse->fetch())
                              {
                              
                              ?> 
                              <p>
                              
                              <strong> <? echo $donnees['id']; ?> </strong><?php echo $donnees['titre']; ?> <br/>
                              
                               <form method="post" action="<?php echo $donnees['titre']?>.php">
                              
                                <input type="submit" name="ouvrir" value=" Voir  " >
                                </form>
                                 <br/>
                              <?php
                              
                              
                              }
                              
                              
                              $reponse->closeCursor(); 
                               
                              } 
                              ?>
                              



                              -
                              Edité par Numerix13 23 août 2019 à 9:43:49

                              • Partager sur Facebook
                              • Partager sur Twitter
                                22 septembre 2017 à 18:35:51

                                C’est normal. Ton explode retourne un tableau, alors que tu dois passer une chaine de caractère à ta requête SQL.

                                • Partager sur Facebook
                                • Partager sur Twitter
                                Kwo:re / topic OC | Aidez les autres, indiquez un sujet résolu ! | Vous êtes bloqué ? Suivez le guide ! | N'aide pas par MP
                                  22 septembre 2017 à 18:54:10

                                  Donc concrètement il faut faire quoi ?

                                  -
                                  Edité par Numerix13 23 août 2019 à 9:42:49

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    22 septembre 2017 à 21:36:26

                                    Revoir ta logique. 

                                    Tu demandes au gens de mettre une chaine de caractère, il faut aussi penser à comment tu vas la traiter. 

                                    Tu peux par exemple faire une recherche pour chacun des mots entrés, ou sur la chaine complète. A toi de voir

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Kwo:re / topic OC | Aidez les autres, indiquez un sujet résolu ! | Vous êtes bloqué ? Suivez le guide ! | N'aide pas par MP
                                      22 septembre 2017 à 21:51:36

                                      Hello,

                                      Je vois que cela fait quelque jours que tu te prends la tête sur ton moteur de recherche. Tu as de la chance, je dois en faire un pour l'école pour la semaine prochaine.

                                      J'ai trouvé un script qui est franchement pas mal. Tu vas devoir l'adapter car certains points ne marchaient pas (chez moi en tout cas). Mais ce sera toujours moins prise de tête que de devoir le faire de A à Z.

                                      https://owlcation.com/stem/Simple-search-PHP-MySQL

                                      En espérant que cela en aidera plus d'un !

                                      ++

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Eat, code, sleep, what a wonderful lifestyle!
                                        23 septembre 2017 à 3:39:50

                                        Hello , 

                                        Tout dabord merci j'ai jeter un coup d'oeil a ton script mais il fait a peu prés la meme chose que le mien moi mon problèmes est de séparer la phrase inscrite par l'utilisateur en mot clef de les mèttres dans une variables et d'en faire la recherche sur ma base de donnés  a l'aide de LIKE '%$ma_variable%'   , biensure les separer en mot clef implique d'enlever les ponctuation , espace.

                                        -
                                        Edité par Numerix13 23 août 2019 à 9:42:00

                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        Mini-Moteur de recherche php

                                        × 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