Moteur de recherche

Georgina03 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Bonjour,
J'ai installé ce moteur de recherche qui correspond exactement à l'esprit de celui que je souhaite réaliser pour mon site mais j'obtiens un message d'erreur lorsque je fais ma recherche sur mot clè.

Saisissez un ou plusieurs mots :
"$mots[0]""; $phrase="'%$mots[0]%'"; while($z<$nombre_mots) { $phrase.=" ".$et_ou." mots like '%$mots[$z]%'"; $texte.=" "; if($et_ou=="and"){$texte.="et";}else{$texte.="ou";} $texte.=" "$mots[$z]""; $z++; } if($debut==""){$debut=0;} $debut=$page*$limit; // NOMBRE TOTAL D'ENREGISTREMENTS... toute la syntaxe du code php s'affiche...


Voici le code source :
<?
/******************************************************************
* VARIABLES A MODIFIER
******************************************************************/

// NOMBRE DE RESULTATS PAR PAGE
$limit=2;

// NOM DE CE SCRIPT
$script_name="recherche.php";

// SERVEUR SQL
$sql_serveur="localhost";

// LOGIN SQL
$sql_user="root";

// MOT DE PASSE SQL
$sql_passwd="";

// BASE DE DONNEE
$sql_bdd="infos";

// RECHERCHE AVEC TOUS LES MOTS : METTEZ "and"
// RECHERCHER LES PAGES QUI CONTIENNENT AU MOINS UN MOT : METTEZ "or"
$et_ou="or";


/******************************************************************
* PROGRAMME PRINCIPAL
******************************************************************/

$db_link = mysql_connect("$sql_serveur","$sql_user","$sql_passwd");

$mot=strtolower($mot);
$mots=split(" ",$mot);
$nombre_mots=count($mots);

$z=1;
$texte="Pages contenant <b>"$mots[0]"</b>";
$phrase="'%$mots[0]%'";
while($z<$nombre_mots)
{
$phrase.=" ".$et_ou." mots like '%$mots[$z]%'";
$texte.=" ";
if($et_ou=="and"){$texte.="et";}else{$texte.="ou";}
$texte.=" <b>"$mots[$z]"</b>";
$z++;
}

if($debut==""){$debut=0;}
$debut=$page*$limit;

// NOMBRE TOTAL D'ENREGISTREMENTS REPONDANT A LA REQUETE
$requete=mysql_db_query("$sql_bdd","select count(*) from recherche where mots like $phrase order by id",$db_link);
$nb_total=mysql_result($requete,0,"count(*)");

$requete=mysql_db_query("$sql_bdd","select * from recherche where mots like $phrase limit $debut,$limit",$db_link);
$num=mysql_num_rows($requete);

// DEFINITION DU MESSAGE A AFFICHER
if ($num==0) {echo "Désolé, aucune page de ce site ne contient <b>$mot</b>...";}
else if ($mot=="") {echo "Veuillez saisir un ou plusieurs mot-clés avant de cliquer sur 'OK' !";}
else if (strlen($mot)<2) {echo "Veuillez saisir au moins 2 caractères.";}

// AFFICHAGE DES RESULTATS
else {

echo "<b>$nb_total</b> réponse";
if ($nb_total>1) {echo "s";}
echo "<br>$texte";

$i=0;
while($i<$num)
{
$url=mysql_result($requete,$i,"url");
$description=mysql_result($requete,$i,"description");
$titre=mysql_result($requete,$i,"titre");
echo "<br><br><a href=\"$url\"><b>$titre</b></a><br>$description<br><font size=1>$url</font>\n";
$i++;
}

echo "<br><br>";

// AFFICHAGE DU LIEN PRECEDENT SI BESOIN EST
// (LA PREMIERE PAGES EST 0)
if ($page>0)
{
$precedent=$page-1;
print "<a href=\"$script_name?page=$precedent&mot=$mot\">PRECEDENT</a> \n";
}


// AFFICHAGE DES NUMEROS DE PAGE
$i=0;$j=1;
if($nb_total>$limit)
{
while($i<($nb_total/$limit))
{
if($i!=$page){echo "(<a href=\"$script_name?page=$i&mot=$mot\">$j</a>) ";}
else {echo "<b>($j)</b> ";}
$i++;$j++;
}
}


// AFFICHAGE DU LIEN SUIVANT SI BESOIN EST
if($debut+$limit<$nb_total)
{
$suivant=$page+1;
echo "<a href=\"$script_name?page=$suivant&mot=$mot\">SUIVANT</a>";
}
}


// DECONNEXION DE LA BASE DE DONNEE
mysql_close($db_link);
?>

</font>
</body>
</html>

+ la page formulaire.html

Je souhaite faire une installation en local pour le moment afin de tester mais j'ai ce message d'erreur...
Peut-être un problème avec ma configuration, au départ, il s'agit de php3, j'ai winamp d'installé, php5...
Si quelqu'un peut avoir la gentillesse de me donner des conseils...
Merci beaucoup :)

14 réponses

Utilisateur anonyme
 
bah d'aprés le code d'erreur, c'est qu'il n'arrive pas à acceder à ta base ... vérifie l'ortographe (en prenant en compte les majuscules^^)

aprés je ne sais pas :
$phrase limit $debut,$limit

ce limit est'il la variable? si oui, mets un $ devant, mais je vois pas trop ce qu'il fait la, vu qu'il y a un $limit aprés ...


en plus tu avais ouvert une requete avant :

$requete=mysql_select_db("$sql_bdd","select count(*) from recherche where mots like $phrase order by id",$db_link);
$nb_total=mysql_result($requete,0,"count(*)");

$requete=mysql_select_db("$sql_bdd","select * from recherche where mots like $phrase limit $debut,$limit",$db_link);

et tu ne la ferme pas avant d'en refaire une, essaye de la fermer avant d'en rouvrir une ^^
1
Utilisateur anonyme
 
pour ton test, t'as utilisé un serveur mettant en place le php (comme easy php pour le test) ? sinon il ne comprend pas et le traite comme une page html -> il affiche le contenu :)
0
Georgina03 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,
Merci pour ta réponse. J'utilise Wamp, c'est pour ça que je ne comprend pas ce qui se passe.
Merci
0
Utilisateur anonyme
 
yop ! je ne le connais pas mais apparement faut activer le service. verifis que celui ci l'est bien (j'avais eu le meme problème ... )

une autre question, pour tes tests, tu vas bien sur http://127.0.0.1 ? (je sais c'est des questions cons mes des fois on fait des erreurs simples =) ... et comme ca j'en saurai plus ^^)
0

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

Posez votre question
Georgina03 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Oui, je le teste bien comme il faut. Mes autres scripts marchent bien mais pour celui-là, j'ai ce problème.
J'ai testé d'autres moteurs de recherche avec lesquels tout s'est bien passé, requête sur la base de données sans problème.
merci
0
Utilisateur anonyme
 
et encore un truc con : à la première ligne c'est normal que tu ai mis

<?

et pas
<?php

... fin je sais pas, je dis ca comme ca =), je comprend qu'il y ai pas le pw root mais ca non ^^
0
Georgina03 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai modifié en rajoutant le <?php, j'obtiens un message d'erreur mais la syntaxe de mon code php ne s'affiche plus :


Notice: Undefined variable: mot in C:\wamp\www\MoteurRecherche\recherche.php3 on line 35

Deprecated: Function split() is deprecated in C:\wamp\www\MoteurRecherche\recherche.php3 on line 36

Notice: Undefined variable: page in C:\wamp\www\MoteurRecherche\recherche.php3 on line 51

Deprecated: mysql_db_query() [function.mysql-db-query]: This function is deprecated; use mysql_query() instead in C:\wamp\www\MoteurRecherche\recherche.php3 on line 55

Deprecated: mysql_db_query() [function.mysql-db-query]: This function is deprecated; use mysql_query() instead in C:\wamp\www\MoteurRecherche\recherche.php3 on line 58
Veuillez saisir un ou plusieurs mot-clés avant de cliquer sur 'OK' !

Je te remercie pour ton aide.
0
Utilisateur anonyme
 
$mot=strtolower($mot);

tu ne déclare pas ta variable, d'ou vient ce "mot"??

je pense que c'est de la que viennent les problèmes, tu dois déclarer ta variable plus tot, car la tu utilise la variable pour cette variable sans déclaration au préalable.

en fait cette fonction met en minuscule ce que contient mot c'est ca? donc si elle ne contient rien (car pas déclarée), ca rique de poser soucis =p
0
Georgina03 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Je vais changer tout ça et je regarde ce que ça donne. Je ne suis pas encore très habile avec le code, ça ne fait pas très longtemps que je m'essaye au php...
C'est passionnant mais parfois un peu compliqué...
Merci beaucoup pour ton aide, je regarde et te donne le résultat.
Bonne journée
0
Utilisateur anonyme
 
oki ca marche !

en gros j'ai pas bien regardé, mais je suppose que c'est ce "mot" que tu recherche dans ta base sql, essaye deja en déclarant : $mot = "recherche"; (en mettant un mot a rechercher à la place de recherche) , et par la suis récupérer gràce à un $_POST['mot']; , avec sur ta page html un post mettant en fait :

http://127.0.0.1/pagephp.php?mot=recherche
0
Georgina03 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai déclaré ma variable mot, j'ai les erreurs suivantes sur mes requetes, j'ai modifié mysql_db_query qui me générait une erreur deprecated... mais maintenant j'ai ces erreurs :

Warning: mysql_select_db() expects at most 2 parameters, 3 given in C:\wamp\www\MoteurRecherche\recherche.php on line 79

Warning: mysql_result() expects parameter 1 to be resource, null given in C:\wamp\www\MoteurRecherche\recherche.php on line 80

Warning: mysql_select_db() expects at most 2 parameters, 3 given in C:\wamp\www\MoteurRecherche\recherche.php on line 82

Warning: mysql_num_rows() expects parameter 1 to be resource, null given in C:\wamp\www\MoteurRecherche\recherche.php on line 83
Désolé, aucune page de ce site ne contient ...

Ma page modifiée :
<?php
error_reporting(E_ALL ^ E_NOTICE);
$mot = $_POST['mot'];
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Résultat de la recherche</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body text="#FFFFFF" bgcolor="#000000" link="#9999FF" vlink="#6699FF" alink="#FFFF00">

<font face="Verdana" size=2>

<form action="recherche.php" method="post">
Saisissez un ou plusieurs mots :
<input type="text" name="mot" size="20">
<input type="submit" value="Rechercher">
</form>
</body>
</html>



<?php
/******************************************************************
* VARIABLES A MODIFIER
******************************************************************/

// NOMBRE DE RESULTATS PAR PAGE
$limit=2;

// NOM DE CE SCRIPT
$script_name="recherche.php";

// SERVEUR SQL
$sql_serveur="localhost";

// LOGIN SQL
$sql_user="root";

// MOT DE PASSE SQL
$sql_passwd="";

// BASE DE DONNEE
$sql_bdd="infos";

// RECHERCHE AVEC TOUS LES MOTS : METTEZ "and"
// RECHERCHER LES PAGES QUI CONTIENNENT AU MOINS UN MOT : METTEZ "or"
$et_ou="or";


/******************************************************************
* PROGRAMME PRINCIPAL
******************************************************************/
$db_link = mysql_connect("$sql_serveur","$sql_user","$sql_passwd");

$mot=strtolower($mot);

$nombre_mots=count($mots);

$z=1;
$texte="Pages contenant <b>"$mots[0]"</b>";
$phrase="'%$mots[0]%'";
while($z<$nombre_mots)
{
$phrase.=" ".$et_ou." mots like '%$mots[$z]%'";
$texte.=" ";
if($et_ou=="and"){$texte.="et";}else{$texte.="ou";}
$texte.=" <b>"$mots[$z]"</b>";
$z++;
}

if($page==""){$page=0;}
$debut=$page*$limit;

// NOMBRE TOTAL D'ENREGISTREMENTS REPONDANT A LA REQUETE
$requete=mysql_select_db("$sql_bdd","select count(*) from recherche where mots like $phrase order by id",$db_link);
$nb_total=mysql_result($requete,0,"count(*)");

$requete=mysql_select_db("$sql_bdd","select * from recherche where mots like $phrase limit $debut,$limit",$db_link);
$num=mysql_num_rows($requete);

// DEFINITION DU MESSAGE A AFFICHER
if ($num==0) {echo "Désolé, aucune page de ce site ne contient <b>$mot</b>...";}
else if ($mot=="") {echo "Veuillez saisir un ou plusieurs mot-clés avant de cliquer sur 'OK' !";}
else if (strlen($mot)<2) {echo "Veuillez saisir au moins 2 caractères.";}

// AFFICHAGE DES RESULTATS
else {

echo "<b>$nb_total</b> réponse";
if ($nb_total>1) {echo "s";}
echo "<br>$texte";

$i=0;
while($i<$num)
{
$url=mysql_result($requete,$i,"url");
$description=mysql_result($requete,$i,"description");
$titre=mysql_result($requete,$i,"titre");
echo "<br><br><a href=\"$url\"><b>$titre</b></a><br>$description<br><font size=1>$url</font>\n";
$i++;
}

echo "<br><br>";

// AFFICHAGE DU LIEN PRECEDENT SI BESOIN EST
// (LA PREMIERE PAGES EST 0)
if ($page>0)
{
$precedent=$page-1;
print "<a href=\"$script_name?page=$precedent&mot=$mot\">PRECEDENT</a> \n";
}


// AFFICHAGE DES NUMEROS DE PAGE
$i=0;$j=1;
if($nb_total>$limit)
{
while($i<($nb_total/$limit))
{
if($i!=$page){echo "(<a href=\"$script_name?page=$i&mot=$mot\">$j</a>) ";}
else {echo "<b>($j)</b> ";}
$i++;$j++;
}
}


// AFFICHAGE DU LIEN SUIVANT SI BESOIN EST
if($debut+$limit<$nb_total)
{
$suivant=$page+1;
echo "<a href=\"$script_name?page=$suivant&mot=$mot\">SUIVANT</a>";
}
}


// DECONNEXION DE LA BASE DE DONNEE
mysql_close($db_link);
?>

</font>
</body>
</html>

Merci
0
Utilisateur anonyme
 
essaye à la place de :

$requete=mysql_select_db("$sql_bdd","select * from recherche where mots like $phrase limit $debut,$limit",$db_link);


$requete=mysql_select_db("$sql_bdd","select * from recherche where mots like $phrase limit $debut,$limit","$db_link");
0
Georgina03 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Je viens de tester mais j'ai toujours des erreurs...
// NOMBRE TOTAL D'ENREGISTREMENTS REPONDANT A LA REQUETE
$requete=mysql_select_db("$sql_bdd","select * from recherche where mots like $phrase limit $debut,$limit","$db_link");
$nb_total=mysql_result($requete,0,"count(*)");

$requete=mysql_select_db("$sql_bdd","select * from recherche where mots like $phrase limit $debut,$limit","$db_link");
$num=mysql_num_rows($requete);


Warning: mysql_select_db() expects at most 2 parameters, 3 given in C:\wamp\www\MoteurRecherche\recherche.php on line 78

Warning: mysql_result() expects parameter 1 to be resource, null given in C:\wamp\www\MoteurRecherche\recherche.php on line 79

Warning: mysql_select_db() expects at most 2 parameters, 3 given in C:\wamp\www\MoteurRecherche\recherche.php on line 81

Warning: mysql_num_rows() expects parameter 1 to be resource, null given in C:\wamp\www\MoteurRecherche\recherche.php on line 82

Merci beaucoup pour ton aide...
0
Utilisateur anonyme
 
essaye :
$requete=mysql_select_db("$sql_bdd","SELECT * FROM recherche WHERE mots like $phrase limit $debut,$limit","$db_link");
0
Georgina03 Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai toujours les mêmes erreurs... malgré les changements...
C'est un casse-tête...
0