Fonction de recherche en PHP - PHP - Programmation
Marsh Posté le 01-05-2006 à 18:21:50
otagun a écrit : Bonjours : |
Idée de base
- récupérer chaque mot de ton formulaire
- générer une requête "$requete" contenant "select * from news where titre like '%mot1%' or titre like '%mot2%' or ..." (autant qu'il y a de mots entrés). Tu peux finir ta requête avec "order by colX" pour trier tes résultats sur la colonne "colX"
- tu lances "$result=mysql_query($requete)" => ça te renvoie dans "$result" toutes les lignes de "news" dont le titre contient un des mots entrés
- tu boucles avec "while($lig=mysql_fetch_array($result))" => ca te donnera une boucle avec une ligne par itération
- il te suffit d'afficher $lig["col1"], $lig["col2"], $lig["col3"] pour avoir, pour chaque ligne, les infos prises dans leurs colonnes respectives ("col1" , "col2" et "col3" devant être remplacés par les vrais noms des colonnes de ta table "news" )
- en fin de boucle, tu libères l'espace alloué pour ta requête avec "mysql_free_result($result)
Marsh Posté le 01-05-2006 à 19:26:12
Merci pour tes idées le problémes c'est que je n'ai pas de notion php en fait par exemple je ne sais même pas récupérer les différents mots du formulaire comme tu dis.
Marsh Posté le 01-05-2006 à 20:06:39
otagun a écrit : Merci pour tes idées le problémes c'est que je n'ai pas de notion php en fait par exemple je ne sais même pas récupérer les différents mots du formulaire comme tu dis. |
Evidemment...
Bon, tu écris une page "essai.html" contenant un formulaire fait ainsi
<HTML>
<HEAD></HEAD>
<BODY>
<FORM method="post" action="result.php">
<INPUT type="text" name="mots">
<INPUT type="submit" value="Envoyer">
</FORM>
</BODY>
</HTML>
Ensuite, tu écris ta page "result.php" ainsi
<HTML>
<HEAD></HEAD>
<BODY>
<SCRIPT language="php">
// Récupération des mots venus du formulaire en méthode "post" dans un tableau
$tabMot=explode(" ", $_POST["mots"]);
// Affichage de chaque mot
foreach ($tabMot as $mot)
printf("mot=%s<BR>\n", $mot);
</SCRIPT>
</BODY>
</HTML>
Marsh Posté le 01-05-2006 à 20:31:20
pour les recherches , mettre ton champs en FULLTEXT et utiliser MATCH AGAINST.
Marsh Posté le 02-05-2006 à 19:06:22
Merci bon effectivement j'ai essayé comme ceci d'aprés vos conseils (merci beaucoup) :
Citation : <?php |
Bon la cela ne fait que séparé les mots et ajouté % entre chacun au début et a la fin.
Le probléme c'est qu'il faut plus que rajouté un % entre les mots par exemple si le titre de la news est : "Alonso en Forme".
d'accord je tape "alonso forme" dans mon formulaire sa marche il me trouve la news si je tape :
"forme alonso" la cela ne marche pas .
En fait j'aimerais savoir comment faire pour sélectionner chaque mots indépendamment ?
Marsh Posté le 02-05-2006 à 20:53:04
otagun a écrit : Bon la cela ne fait que séparé les mots et ajouté % entre chacun au début et a la fin. |
Ben oui, faut générer une chaîne contenant
"chapeau like '%forme%' or chapeau like '%alonzo%'"
Ensuite, tu exécutes la requête "select * from actu_gof1 where ".$chaine." ORDER BY..."
|
Marsh Posté le 03-05-2006 à 15:42:58
Merci Sve@r sa marche :
Je suis content de ton script mais j'aimerais un peu l'améliorer en laisant la possibilité au visiteurs de choisir entre une recherche dans les titres des actus OU une recherche dans les texte des actus. J'ai mis les boutons radio correspondant dans mon formulaire mais je ne sait pas comment traiter les donnés du formulaire pour choisir la categorie texte et non titre. Les boutons sont nommés bouton y'a à deux et il sélectionneront soit titre soit texte comme colonne de la base de donnée. A partir du script déja proposer qu'elle sont les choses à rajouter ?
Merci merci beaucoup de votre aide.
Marsh Posté le 06-05-2006 à 15:41:48
ReplyMarsh Posté le 06-05-2006 à 22:27:40
Maintenant que tu as la base, tu peux essayer de comprendre le code et le faire évoluer toi meme
Marsh Posté le 07-05-2006 à 13:14:11
otagun a écrit : Merci Sve@r sa marche : |
Ben tu crées une variable "$column" contenant "chapeau" (colonne de titre) ou "texte" (colonne de texte) en fonction de la valeur de ton bouton et tu refais la boucle
foreach ($tabRecherche as $mot) |
otagun a écrit : Aucune réponse pourtant cela semble pas bien compliquer |
Euh, je suis pas H24 sur le forum à attendre qu'on me soumette un pb...
energiez a écrit : Maintenant que tu as la base, tu peux essayer de comprendre le code et le faire évoluer toi meme |
C'est vrai que la meilleure personne capable de t'aider est toi-même. En analysant le code et en le comprenant, cela te permettra de le faire évoluer pour qu'il corresponde parfaitement à ton besoin...
Marsh Posté le 21-05-2006 à 16:32:04
Petit probleme cela me dit :
[size=2]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'like '%ferrari%' ORDER BY `timestamp` DESC' at line 1
[/size]
Ben j'ai fait comme tu m'as dit apparement y'a une erreur et je voit pas ou
Marsh Posté le 21-05-2006 à 18:42:39
ReplyMarsh Posté le 04-08-2006 à 19:08:04
Merci pour vos réponse maintenant j'ai résolu le probléme.
Merci a toutes les personnes qui m'ont aidés c'est trés sympa .
Marsh Posté le 01-05-2006 à 16:12:16
Bonjours :
Jai rencontré un petit problème lors de la création de mon site sur la Formule 1 en fait jaimerais intégrer une fonction de recherche sur mon site.
Recherche qui seffectuerait dans une base de donnée qui contient les news. La recherche serait faite à partir de lentrée des mots de lutilisateur dans un champ texte dun formulaire. Jaimerais donc créer un petit programme qui va chercher dans la base de donnée (ou jeu denregistrement) tous les titres des news qui contiennent un ou plusieurs mots rentrés par lutilisateur. La variable du champ de recherche et en mode GET pour précision. Si quelquun connaît un script de recherche facile pour php merci de maider. Ou alors si vous êtes bons en langage PHP car je vois bien lidée des moteurs de recherche dans une base de donnée php mais je ne sais pas écrire le script.
Merci davance pour les connaisseurs de php mysql qui pourrait maider dans la création dun moteur de recherche pour mon site.
Petite précision le classement des news se ferait non pas par pertinence (trop complexe) mais par date de création des news les plus récente devant donc.
Message édité par otagun le 01-05-2006 à 17:02:22