Moteur de recherche marche pas..

Fermé
COCOOO - 15 déc. 2011 à 15:45
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 - 25 déc. 2011 à 23:10
Bonjour,

J'ai installe un moteur de recherche mais il ne onfctionne pas, je n'ai pas de résultat


Fichier search.php :
<?


include("include/config.inc.php"); //fichier de config
include("include/header.html"); //header html
include("include/form.php"); //formulaire de recherche
if (!isset($debut)) $debut = 0;
if (!empty($recherche))
{
$recherche=strtolower($recherche); //on passe en minuscule
$mots = str_replace("+", " ", trim($recherche)); //on remplace les + par des espaces
$mots = str_replace("\"", " ", $mots); //idem pour \
$mots = str_replace(",", " ", $mots); //idem pour ,
$mots = str_replace(":", " ", $mots); //idem pour :
$recherche=rawurlencode($recherche); //on encode la recherche

$tab=explode(" " , $mots);
$nb=count($tab);

$sql="select * from search where 1 and mot_cles like \"%$tab[0]%\" ";

for($i=1 ; $i<$nb; $i++)
{
$sql.="$operateur mot_cles like \"%$tab[$i]%\" ";
}

$sql2=$sql; //requete permettant de connaitre le nombre de résultats
$sql.=" Limit $debut,$limit "; // requête limitante.

mysql_connect($host,$user, $password);
$result2 = mysql_db_query($db,$sql2);
$result = mysql_db_query($db,$sql);

if($result)
{
$nrows = mysql_num_rows($result2);
$flag = 1;
if(mysql_num_rows($result)==0) echo "<center><b>Pas de Résultat</b></center><br>";
else
{
include("include/header_tab.html");
while($row = mysql_fetch_array($result))
{
echo $row["id"]." | ".$row["titre"];
$url = $row["url"];
echo " | <a href=\"$url\">$url</a><br>";
echo "Description : ".$row["description"]."<br><br>";
}
include("include/footer_tab.html");
mysql_free_result($result);





/****************** Mise en place de la navigation. ************************************/
$nombre=ceil($nrows/$limit);

if($debut>0)
{
echo "<a href=search.php3?recherche=$recherche&operateur=$operateur&debut=".($debut-$limit)."><<</a> ";
}

if ($nombre>1)
{
for($i=1; $i<=$nombre; $i++)
{
echo "<a href=search.php3?recherche=$recherche&operateur=$operateur&debut=".(($i-1)*$limit).">".$i."</a> ";
}
}
if(($debut+$limit)<$nrows)
{
echo "<a href=search.php3?recherche=$recherche&operateur=$operateur&debut=".($debut+$limit).">>></a>";
}

echo "</CENTER>";

}

}
echo "La requete SQL execute est : $sql" ;
}

else
{
echo("<center><br><b>Entrer au moins un mot</b></center>");
}


include("include/footer.html");
?>




FICHIER config.php.inc :
<?

$host="localhost";
$user="root";
$password="vodka";

$db="hc"; #pour free c'est ton login
$table="search"; #nom de la table (par defaut)

$limit=10; //nombre de résultats par page.

?>

Dans ma base MYSQL j'ai excusé ceci dans la base "hc" :
#
# Table structure for table 'search'
#

CREATE TABLE search (
id tinyint(255) NOT NULL auto_increment,
titre varchar(255) NOT NULL,
url varchar(255) NOT NULL,
description text NOT NULL,
mot_cles text NOT NULL,
PRIMARY KEY (id)
);

#
# Dumping data for table 'search'
#

INSERT INTO search VALUES ( '1', 'phpinfo', 'http://www.phpinfo.net', 'Site sur php et mysql.
Comportant un forum, de la documentation, des scripts.
Une valeur sûr.', 'php et mysql php3 php4
forum articles doc');
INSERT INTO search VALUES ( '2', 'Ma Page', 'http://gregory.kokanosky.free.fr', 'Site web personnel.
Scripts php/mySQL : phpMyNewsLetter et phpMyGenealogy.
Documentation sur le protocole ip, sur le html au format pdf.', 'script php php3 php4 mysql phpmunewsletter newsletter ip html pdf');
INSERT INTO search VALUES ( '3', 'Da Linux French Page', 'http://linuxfr.org', 'Da Linux French page est un site Linux francais communautaire.
Au programme news, sondages, discussions.', 'Linux news dacode mandrake debian red hat slackware slashdot info dacode LUG');



MERCI DAVANCE !!!!! <3


A voir également:

9 réponses

UPPPPPPPP petite prime à la clé :)))
0
up
0
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 120
16 déc. 2011 à 01:36
Le problème est la taille de votre poste, il est difficile de détecter l'erreur surtout si on n'a pas un serveur sur la machine.

Est ce qu'il y a un message d'erreur PHP ou seulement les résultats sont faux?
0
Bonsoir! Merci de ta réponse !

Oui mais je ne sais pas où localiser le problème..

Lorsque j'appui sur le bouton "OK" pour lancer la recherche en utilisant un mot clé normalement présent comme "php" je n'ai aucun résultat, la page reste la même avec toujours "Entrer au moins un mot", comme avant, à l'arrivée sur la page de recherche.

J'ai l'impression qu'il s'agit d'un problème de liaison avec la base et j'ai vérifié durant 3h le fichier config etc mais je suis débutant pour ce qui Mysql..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 120
16 déc. 2011 à 02:14
Dans ce cas, le problème est dans le passage du paramètre "recherche", il faut voir est ce que "form.php" est correct, c'est à dire, le champs de recherche "input" est nommé "recherche". Dans votre cas, on n'entre même pas dans l'exécution des requêtes:

<?


include("include/config.inc.php"); //fichier de config
include("include/header.html"); //header html
include("include/form.php"); //formulaire de recherche
if (!isset($debut)) $debut = 0;
if (!empty($recherche))
{

// Code non exécuté.

else
{
echo("<center><br><b>Entrer au moins un mot</b></center>");
}


include("include/footer.html");
?>


0
Le champ input text à un name="recherche"

Le bouton valider à un name="B1"

(Je précise que je suis en local avec MAMP)
0
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 120
16 déc. 2011 à 14:04
Bonjour,

Normalement, le bouton d'envoi est défini par son type="submit", le nom n'influence pas.

Dans ce cas, c'est un peut délicat et un débogage est nécessaire, parce que l'erreur est que le valeur de recherche est vide.

Vous pouvez faire l'essaie suivant:
Après la sauvegarde de votre moteur, vous pouvez provoquer une erreur dans le code SQL, par exemple changer le nom de la table dans la requête de sélection. Si vous obtenez un message d'erreur, alors il passe par là, autrement, le problème est loin de SQL et est encore dans le passage des mots clés de la recherche.

Bon Courage.
0
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 120
16 déc. 2011 à 14:05
Et le fait d'être en local n'a pas d'influence, tant dit que vous accédez via un navigateur en utilisant "localhost" ou "127.0.0.1" sous le protocole HTTP cela vous mettra dans le cas d'un client distant.
0
Bonjour, et merci encore !

J'ai changer la table dans config.inc.php par "searchh" alors que dans la base la table est "search" et cela ne change rien, je n'ai pas d'erreur lors de l'envoi d'un mot clé.

Mais ce script fonctionne normalement sur ce site où je l'ai telecharger :
http://gregory.kokanosky.free.fr/tutorial/moteur/
voir demo : http://gregory.kokanosky.free.fr/tutorial/moteur/search.php3

Donc c'est le lien avec ma base de donnée qui pose problème et non le code même ?

Merci d'avance
0
COCOOP Messages postés 6 Date d'inscription vendredi 23 décembre 2011 Statut Membre Dernière intervention 25 décembre 2011
24 déc. 2011 à 12:19
Toujours le même problème..
0
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 120
24 déc. 2011 à 18:06
Bonjour,

Vous n'avez pas encore trouvé de solution?
Je ne sais pas pourquoi, mais les liens donnés ci-dessus sont inaccessibles!

Bon Courage.
0
COCOOP Messages postés 6 Date d'inscription vendredi 23 décembre 2011 Statut Membre Dernière intervention 25 décembre 2011
25 déc. 2011 à 04:51
La solution est ici :
https://forums.commentcamarche.net/forum/affich-23984911-aucun-script-moteur-de-recherche-ne-marche#p23987246

Merci de votre aide quand même !! et joyeuse fête
0
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 120
25 déc. 2011 à 23:10
Alors le nom du champs était "mot" et pas "recherche".
Très bien.
Bon Continuation et joyeuse fête.
0