Forum Clubic

Recherche mots-clés

Bonjour,

Je viens de créer un site mais je rencontre un problème actuellement. Je voudrais effectuer une recherche via mots-clés sur des fichiers qui se trouvent sur un emplacement précis.
J’ai créé une 1ère page où j’ai placé ce premier script :

Entrez un mot clé:

Ensuite j’ai créé le fichier search.php3

<?php $host = "localhost"; $user = "root"; $password = ""; $bdd = "test"; mysql_connect($host, $user, $password) or die ("Connexion au serveur impossible"); // on choisit la bonne base mysql_select_db($bdd) or die ("Connexion a la base impossible"); echo " Résultat de la recherche "; if (($Mot == "")||($Mot == "%")) { // Si aucun mot clé n'a été saisi, // le script demande à l'utilisateur // de bien vouloir préciser un mot clé echo " Veuillez entrer un mot clé s'il vous plaît!

"; } else { // On selectionne les enregistrements contenant le mot clé // dans les keywords ou le titre $query = "SELECT distinct count(lien) FROM search WHERE keyword LIKE \"%$Mot%\" OR titre LIKE \"%$Mot%\" "; $result = mysql_query($query); $row = mysql_fetch_row($result); $Nombre = $row[0]; // Si aucun enregistrement n'est retourné, // on affiche un message adéquat if ($Nombre == "0") { echo "

Aucun résultat ne correspond à votre recherche

"; } // Sinon, on affiche le nombre d'enregistrements correspondant // et les résultats eux-mêmes else { $query = "SELECT distinct lien,keyword,titre FROM search WHERE keyword LIKE \"%$Mot%\" OR titre LIKE \"%$Mot%\" ORDER by titre ASC"; $result = mysql_query($query); // Si un seul enregistrement est trouvé, on affiche un message au singulier if ($Nombre == "1") { echo "

Résultat: Un article trouvé

"; } // Dans le cas contraire le message est au pluriel... else { echo "

Résultat: $Nombre articles trouvés

"; } while($row = mysql_fetch_row($result)) { echo "

\n $row[2]\n
Visualiser l'article\n

\n "; } } } // on ferme la base mysql_close(); ?>

Ensuite j’ai créé mon fichier de base de données via phpmyadmin

– phpMyAdmin SQL Dump
– version 2.9.1.1
www.phpmyadmin.net…

– Serveur: localhost
– Généré le : Jeudi 19 Juin 2008 à 09:18
– Version du serveur: 5.0.27
– Version de PHP: 5.2.0

– Base de données: pilotage



– Structure de la table search

CREATE TABLE search (
lien varchar(128) NOT NULL,
keyword text NOT NULL,
titre varchar(128) NOT NULL,
id int(11) NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


– Contenu de la table search

INSERT INTO search (lien, keyword, titre, id) VALUES
(‘le lien vers la documentation’, ‘nom de la consigne’, ‘titre’, 1);

–> Quand je lance ma recherche cela ne marche pas, je précise que les valeurs se trouvant dans le fichier base de données sont fictifs volontairement. J’utilise easyphp et j’ai testé en local. Pourriez-vous m’aider svp? Je vous en remercie par avance

Qu’est-ce qui ne marche pas, ça ne te renvoie rien ?

Sinon, deux remarques sans lien direct avec le problème :
1 : Tu ouvres ta connexion à la base avant de vérifier que le mot entré est valide (alors que, dans le cas où le mot est vide, tu ne fais pas de requêtes et tu ouvres donc une connexion pour rien)
2 : Tu fais deux requêtes (une pour compter le nombre de résultats et une pour renvoyer la liste) là où une suffirait. Garde juste le $query = “SELECT distinct lien,keyword,titre FROM search WHERE keyword LIKE “%$Mot%” OR titre LIKE “%$Mot%” ORDER by titre ASC”;, et fait un mysql_num_rows sur le résultat pour avoir le nombre de lignes :wink:
Edité le 19/06/2008 à 13:42

Je te remercie Kookiz d’avoir pris la peine de me répondre.

En fait, lorsque je lance une recherche avec un mot clé, cela me retourne ma page de code. Je teste simplement avec un mot car je voulais d’abord que cela marche pour implémenter ma base de données.