Barre de recherche interne au site : me mettre sur la piste - PHP - Programmation
Marsh Posté le 11-11-2017 à 20:34:56
method="get" action="/search" dit que quand on lance la recherche le navigateur va faire une requête GET vers $adresse_du_site/search avec le contenu du formulaire comme paramètres, soit http(s)://$adresse_du_site/search?m=all&q=recherche ou semblable. Ensuite c'est au serveur d'en faire quelque chose et de répondre avec un site HTML.
J'ai pas regardé le site indiqué, mais si tu commences à toucher au SQL et Co. (probable pour une fonction de recherche) merci de te renseigner sur quelque "good practices", notamment pour éviter les injections SQL et autres failles de sécurité de débutant...
Marsh Posté le 11-11-2017 à 20:47:55
Merci pour ta réponse, rat de combat (tu dois avoir de l'humour => ) !
Comment dire... Mes vieux restes en HTML-CSS et bricolage web m'ont permis à construire le site que je voulais, souple, rapide, « SEO friendly » et tout le tralala. Sans ça, je serais passé par un professionnel pour le faire. Il ne me manque plus que cette barre de recherche ; rien d'autre.
Or, je ne vais pas me mettre à l'étude de langages de programmation pour cela : je n'ai pas le temps. D'ailleurs, pour en connaître quand même le parfum (lors d'études en graphisme, j'avais fait du Javascript et je côtoie de loin le PHP, l'Ajax, tout ça, depuis des années) je sais que ça me prendrait un temps fou pour y arriver.
Je me vois donc obligé de demander de l'aide. Je sais que je ne peux pas retrouver, à partir du site en question, le code « back end », PHP (je crois). Mes recherches (des heures) sur le Web me perdent : je peux trouver des scripts, que j'ai un mal de chien à adapter à mon site (sa présentation, son CSS) déjà en place, avec un résultat d'affichage exactement tel que celui du site pris en exemple.
Marsh Posté le 11-11-2017 à 21:12:54
Citation : Je sais que je ne peux pas retrouver, à partir du site en question, le code « back end », PHP (je crois) |
Exact.
Ton site web c'est du statique, donc des fichiers .html et .css ou du PHP ou autre? Dans le premier cas tu peux oublier ta fonction de recherche je pense, à moins de rediriger vers un moteur de recherche existant en précisant de faire la recherche sur ton site uniquement (mot clé site:$adresse).
Marsh Posté le 11-11-2017 à 21:22:56
Oui, un peu de PHP pour une fonction de traduction, quelques includes, une section commentaires, mais là, tu n'y es pas... Qu'il ne soit qu'en html ou html / php, dans les deux cas, bien entendu qu'une barre de recherche est possible.
Marsh Posté le 11-11-2017 à 22:31:30
Question bête : si t'es pas développeur et que tu ne souhaites pas passer des heures à apprendre, pourquoi ne pas déployer un wordpress ou similaire qui sera correctement côté et qui t'apportera les fonctions de base dont tu sembles avoir besoin
Parce que clairement, on ne va pas te faire le boulot à ta place. AU mieux, on va t'expliquer que le script php doit récupérer les paramètres de ton formulaire de recherche puis effectuer cette recherche. là, ça dépend si la recherche toit être faite dans des données stockées dans une BD auquel cas il te faudra faire la requête SQL appropriée via la lib PDO (ou similaire) et une requête préparée. Naturellement, sans connaissance du schéma de la BD, on ne va pas aller bien loin pour t'aider. Si les données sont ailleurs (dans des fichiers HTML, CSV, XML, TXT ou autre...), ben là, ça va être une fonction de recherche textuel qu'il va te falloir coder puis présenter les résultats. Autant dire que sans connaissances en dév et sans volonté d'apprendre, c'est pas gagné
D'où ma proposition de déployer un wordpress. Tout ça sera fait vite fait, bien fait
Marsh Posté le 11-11-2017 à 23:01:30
Bonsoir Rufo. Je suis déjà passé plusieurs fois par le CMS et j'en suis toujours revenu, tout simplement parce que Wordpress me dégoûte. La console utilisateur, comme, surtout, le fait que je n'arrive pas à obtenir le site que je veux au poil de cul près, alors qu'à la main, j'ai un site d'orfèvre, très beau, comme je le veux à la virgule près, que je contrôle parfaitement. Bien entendu, je contrôlerais sans doute également le site si je connaissais bien mieux le fonctionnement du CMS. Mais ça ne m'intéresse pas -- et c'est une formation (« WYSIWYG ») en plus dans un domaine qui n'est pas (plus) le mien. Les quelques sites que j'ai faits pour différents clients à l'époque, c'était toujours de façon artisanale, à la main.
Je n'ai pas créé de BD, mais je crois qu'il existe des méthodes pour s'en passer. Si tu regardes mon exemple, les données sont des mots des pages quoi, donc, oui, des mots présents dans les fichiers HTML/PHP du site.
Du peu que je connais en PHP, de ce que j'ai pu voir en me renseignant aussi,
à partir du moment où tu as le code source du site, celui précisément du formulaire (<form method="get" action="/search"> ...), et que tu vois la façon dont il affiche les résultats (comme dans la structure de son blogue, en présentant non pas le mot de recherche trouvé lui-même, mais la vignette d'introduction de l'article qui le contient), je sais qu'une explication précise ne demanderait pas trois heures.
Je ne demande pas que le boulot soit fait à ma place : je l'ai déjà fait, quelques centaines d'heures. Si ce n'est plus un forum d'entraide, si personne ne peut m'aider, tant pis, j'irai demander ailleurs, je me passerai de cette fonction de recherche, ou encore y reviendrai plus tard.
Bien à vous et bonne nuit.
Marsh Posté le 11-11-2017 à 23:57:15
fnisse a écrit : Oui, un peu de PHP pour une fonction de traduction, quelques includes, une section commentaires, mais là, tu n'y es pas... Qu'il ne soit qu'en html ou html / php, dans les deux cas, bien entendu qu'une barre de recherche est possible. |
Oui c'est vrai, on peut utiliser le PHP pour chercher dans les fichiers html, même si c'est pas forcément très élégant je dirais.
Sinon je t'ai déjà donné une piste je pense: Si tu prends le code HTML cité pour le formulaire tu dois avoir un bout de PHP à l'endroit /search qui va récupérer le(s) terme(s) de la recherche dans les paramètres de la requête et faire la recherche, dans ton cas donc fouiller des fichiers html. Après faudra penser à certaines choses, p.ex. quelqu'un n'entre pas de terme ou qu'une seule lettre (->limiter le nombre de résultats histoire de pas bouffer la mémoire du serveur), il faut voir pour faire fonctionner la recherche avec les accents (ils sont présents sous forme d'entités HTML ou ce genre de trucs dans les fichiers il me semble, pas directement sous forme de caractères), si on veut pouvoir chercher une chaîne de plusieurs mots avec des guillemets ça ce complique encore (genre on cherche "machin truc bidule" mais dans le fichier HTML il y a du code HTML mélangé au texte, donc avec une simple comparaison exacte on ne va pas trouver machin <b>truc</b> bidule p.ex.) etc... Et il faut penser à la sécurité aussi, faire un truc qui résiste aux diverses cochonneries qu'on peut rencontrer, que ce soit des injections ou du denial of service (terme de recherche vide -> recherche qui va bouffer trop de mémoire ou autre) ou le cross site scripting ou ... C'est certainement un peu de boulot.
Sinon comme je disais tu peux utiliser un moteur de recherche externe, soit avec une redirection (ou un iframe mais c'est considéré comme mauvais aujourd'hui il me semble (je suis pas développeur web moi!)) ou avec une fonction d'intégration au site que p.ex. Google propose de mémoire. Aucune idée de comment ça marche, je suis pas fan de ça, je suppose que c'est un bout de Javascript à mettre quelque part et un compte à créer ou autre.
Marsh Posté le 12-11-2017 à 09:50:31
fnisse a écrit : Bonsoir Rufo. Je suis déjà passé plusieurs fois par le CMS et j'en suis toujours revenu, tout simplement parce que Wordpress me dégoûte. La console utilisateur, comme, surtout, le fait que je n'arrive pas à obtenir le site que je veux au poil de cul près, alors qu'à la main, j'ai un site d'orfèvre, très beau, comme je le veux à la virgule près, que je contrôle parfaitement. Bien entendu, je contrôlerais sans doute également le site si je connaissais bien mieux le fonctionnement du CMS. Mais ça ne m'intéresse pas -- et c'est une formation (« WYSIWYG ») en plus dans un domaine qui n'est pas (plus) le mien. Les quelques sites que j'ai faits pour différents clients à l'époque, c'était toujours de façon artisanale, à la main. |
Dans la mesure où Wordpress a un système de templates, tu peux tout à fait produire l'IHM du front exactement comme tu veux. Tu as parfaitement la main sur le HTML et CSS (et pas en WYSIWYG même si certaines extensions le permettent). Si aujourd'hui un très grand nb de sites sont construits sur ce type de CMS, c'est qu'il y a de bonnes raisons. Perso, il y a quelques années, j'étais comme toi plutôt partisan de faire moi-même mon site web car je trouvais les CMS trop limitatifs. Mais aujourd'hui, Wordpress est vraiment mature mais si au niveau architecture, certains points internes au code laissent à désirer. Mais pour quelqu'un qui veut juste faire un site assez simple, ces défauts ne le concernent pas et Wordpress est vraiment une bonne solution.
Marsh Posté le 12-11-2017 à 15:06:42
Merci à tous les deux pour vos réponses patientes !
Je comprends ce que je lis, mais à partir de là, je risque de rester bloquer indéfiniment, pour des résultats bancals : le prix n'en vaut pas la chandelle, et je vais mettre en <!-- --> ce <form> pour le moment. Je réalise que même si quelqu'un me dirigeait vers un script qui répond à ce que je cherche, son adaptation et sa mise en place me demanderaient trop de temps de toute façon. Puis, pour un tout petit site, la barre de recherche n'est pas indispensable, loin de là. Au plaisir.
Marsh Posté le 12-11-2017 à 16:10:01
Effectivement, on ne peut que te donner des principes de fonctionnement mais après, comme chaque site est spécifique, il te faudra nécessairement adapter ces principes. C'est pas que c'est très compliqué à faire quand on connaît le dév mais ça peut l'être quand on ne l'est pas. D'où l'intérêt des CMS (désolé, si j'en remets une couche)
Marsh Posté le 12-11-2017 à 17:13:48
Oui, je connais un peu l'intérêt du CMS, mais vraiment, dans ma pratique ils m'ont dégoûté. J'ai acheté plusieurs thèmes d'ailleurs, dont un dont je n'oserais même pas dire le prix, que je regrette, puisqu'ils ne me servent pas du tout. EDITION : C'est que je suis entêté, et que j'aime prendre du plaisir dans ce que je fais. Or, je ne vis Wordpress que comme une contrainte. Il y a donc l'apprentissage aussi, qu'il ne faut pas oublier : j'ai d'autres choses à apprendre dans mes propres domaines d'activité. Etre bon en CMS, c'est tout un métier, comme tu le sais déjà. Têtu et aussi un peu perfectionniste: j'ai fait des sites sous Wordpress qui tenaient plus ou moins la route, bien qu'ils restaient assez simples, mais le fait que je ne sache pas exactement comment avoir accès au code source et de me retrouver, partant, avec des pages très lourdes, bourrées de lignes inutiles, me donne littéralement des boutons. Bref, c'est un choix réfléchi.
Marsh Posté le 12-11-2017 à 18:35:27
Bonjour,
Comme proposé plus haut, pourquoi ne pas utiliser l'api de Google? Je ne l'ai jamais implémentée mais comme toutes les apis Google ce n'est probablement pas les ressources qui manquent. Tu devrais facilement trouver un tuto pour l'implémenter.
https://developers.google.com/custom-search/
De toute façon je ne vois pas ce qui pourrait répondre mieux à ta demande puisque tu veux un script sans le coder. Il ne te reste donc que les apis externes dans ton cas.
Marsh Posté le 11-11-2017 à 19:43:55
Bonsoir,
Je développe un site dont le menu ressemble assez à celui-ci.
Le module de recherche (tout à droite du menu : la loupe), interne au site, est exactement ce qu'il me faut.
Je peux sans problème reproduire ce code HTML/CSS, mais pas voir ce qu'il y a derrière ceci :
<form method="get" action="/search">
<input type="hidden" value="all" name="m" />
<input type="text" value="" name="q" id="search" />
<input type="submit" value="Rechercher" id="button"/>
</form>
Je n'ai pas le temps ni l'énergie pour complètement me former en PHP, MYSQL itou, ce n'est pas mon domaine. Cette fonction de recherche est la seule chose qui me manque, j'ai pu me débrouiller pour tout le reste sans passer par une agence web hors de prix pour moi. Quelqu'un aurait l'amabilité de me mettre sur la bonne piste ? J'ajoute que l'affichage des résultats sur le site montré est idéal pour moi également.
Bien cordialement.
Message édité par fnisse le 12-11-2017 à 15:07:11