[php] moteur de recherche interne
darksaif
Messages postés
4
Statut
Membre
-
bbar Messages postés 436 Statut Membre -
bbar Messages postés 436 Statut Membre -
Bonjour j'ai un ptit probleme sur mon programme je vous explique :
C'est tout simple lorsque je fait une recherche et qu'il ya plusieurs reponses on trouve un certains nombres de liens qui s'affichent (je l'ai limité a 3). Comme google j'ai voulu étaler les résultats sur plusieurs pages. Là est le probleme quand je clique sur la page numero 2 ca me dit :
Notice: Undefined index: mot in c:\program files\easyphp1-8\www\moteurex-1\moteur.php3 on line 30
Veuillez saisir un ou plusieurs mot-clés avant de cliquer sur Rechercher !
je ne comprends pas pourquoi j'ai cette erreur :s
Merci d'avance pour votre aide
<html>
<head>
<title>Moteur de recherche</title>
<STYLE type=text/css>
A:link{ COLOR: #c0c0c0;TEXT-DECORATION: none }
A:visited{ COLOR: #ffffff;TEXT-DECORATION: none }
A:hover { COLOR: #00ff00;TEXT-DECORATION: none }
</STYLE>
<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="moteur.php3" method="post">
<? include("config.inc.php3");?>
<?
/******************************************************************
* PROGRAMME PRINCIPAL
******************************************************************/
$et_ou="or";
$db_link = mysql_connect("$nomserv","$login","$mdp");
$mot = $_POST['mot'];;
$mots=split(" ",$mot);
$nombre_mots=count($mots);
$z=1;
$page=0;
$debut=0;
$texte=" contenant le mot <font color=00ff00>$mots[0]</font>";
$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 REPONDANT A LA REQUETE
$requete=mysql_db_query("$nombase","select count(*) from moteur where mots like $phrase order by id",$db_link);
$nb_total=mysql_result($requete,0,"count(*)");
$requete=mysql_db_query("$nombase","select * from moteur where mots like $phrase ",$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 $mot...";}
else if ($mot=="") {echo "Veuillez saisir un ou plusieurs mot-clés avant de cliquer sur Rechercher !";}
else if (strlen($mot)<2) {echo "Veuillez saisir au moins 2 caractères.";}
// AFFICHAGE DES RESULTATS
else {
echo "$nb_total réponse";
if ($nb_total>1) {echo "s";}
echo "$texte";
$i=0;
while($i<$num and $i<$limit)
{
$description=mysql_result($requete,$i,"description");
echo "<br><br></b>$description<br><font size=1></font>\n";
$i++;
}
$k=$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\">page précédente</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 "<font color=00ff00>$j</font> ";}
$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\">page suivante</a>";
}
if ($page>0)
{
while($k<$nb_total)
{
echo "<br><br></b>$description<br><font size=1></font>\n";
$k++;
}
}
}
// DECONNEXION DE LA BASE DE DONNEE
mysql_close($db_link);
?>
</font>
</form>
</body>
</html>
C'est tout simple lorsque je fait une recherche et qu'il ya plusieurs reponses on trouve un certains nombres de liens qui s'affichent (je l'ai limité a 3). Comme google j'ai voulu étaler les résultats sur plusieurs pages. Là est le probleme quand je clique sur la page numero 2 ca me dit :
Notice: Undefined index: mot in c:\program files\easyphp1-8\www\moteurex-1\moteur.php3 on line 30
Veuillez saisir un ou plusieurs mot-clés avant de cliquer sur Rechercher !
je ne comprends pas pourquoi j'ai cette erreur :s
Merci d'avance pour votre aide
<html>
<head>
<title>Moteur de recherche</title>
<STYLE type=text/css>
A:link{ COLOR: #c0c0c0;TEXT-DECORATION: none }
A:visited{ COLOR: #ffffff;TEXT-DECORATION: none }
A:hover { COLOR: #00ff00;TEXT-DECORATION: none }
</STYLE>
<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="moteur.php3" method="post">
<? include("config.inc.php3");?>
<?
/******************************************************************
* PROGRAMME PRINCIPAL
******************************************************************/
$et_ou="or";
$db_link = mysql_connect("$nomserv","$login","$mdp");
$mot = $_POST['mot'];;
$mots=split(" ",$mot);
$nombre_mots=count($mots);
$z=1;
$page=0;
$debut=0;
$texte=" contenant le mot <font color=00ff00>$mots[0]</font>";
$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 REPONDANT A LA REQUETE
$requete=mysql_db_query("$nombase","select count(*) from moteur where mots like $phrase order by id",$db_link);
$nb_total=mysql_result($requete,0,"count(*)");
$requete=mysql_db_query("$nombase","select * from moteur where mots like $phrase ",$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 $mot...";}
else if ($mot=="") {echo "Veuillez saisir un ou plusieurs mot-clés avant de cliquer sur Rechercher !";}
else if (strlen($mot)<2) {echo "Veuillez saisir au moins 2 caractères.";}
// AFFICHAGE DES RESULTATS
else {
echo "$nb_total réponse";
if ($nb_total>1) {echo "s";}
echo "$texte";
$i=0;
while($i<$num and $i<$limit)
{
$description=mysql_result($requete,$i,"description");
echo "<br><br></b>$description<br><font size=1></font>\n";
$i++;
}
$k=$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\">page précédente</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 "<font color=00ff00>$j</font> ";}
$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\">page suivante</a>";
}
if ($page>0)
{
while($k<$nb_total)
{
echo "<br><br></b>$description<br><font size=1></font>\n";
$k++;
}
}
}
// DECONNEXION DE LA BASE DE DONNEE
mysql_close($db_link);
?>
</font>
</form>
</body>
</html>
A voir également:
- [php] moteur de recherche interne
- Copernic moteur de recherche - Télécharger - Navigateurs
- Google moteur de recherche page d'accueil - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Le fichier pdf à télécharger est disponible avec le même nom sur le site de bell canada. mais vous ne le trouverez pas directement avec un moteur de recherche… quelle est l’url de ce fichier pdf sur le site web de bell canada ? - Forum Réseaux sociaux
- Copiez la ligne qui indique aux moteurs de recherche de ne pas référencer la page ✓ - Forum Référencement
1 réponse
salut.
déjà sur ta ligne 30, tu as 2 * ; ce qui en fait un de trop. Ensuite, ce message est en fonction des champs que tu fait passer d'une page à l'autre.
Ensuite, ligne 96 :
passer le paramètre dans l'url, c'est la méthode get, il est donc normal que tu n'arrives pas à la récup. Je pense qu'il te faut faire un test pour vérifier l'existance
- de $_POST['mot'] (cas de la première page)
- de $_GET['mot'] (cas des pages suivantes)
dans le cas où tu souhaite garder la page.
Une autre solution consiste à créer un champ :
tout ça dans un formulaire de type post
$mot = $_POST['mot'];;
déjà sur ta ligne 30, tu as 2 * ; ce qui en fait un de trop. Ensuite, ce message est en fonction des champs que tu fait passer d'une page à l'autre.
Ensuite, ligne 96 :
if($i!=$page){echo "<a href=\"$script_name?page=$i&mot=$mot\">$j</a> ";}
passer le paramètre dans l'url, c'est la méthode get, il est donc normal que tu n'arrives pas à la récup. Je pense qu'il te faut faire un test pour vérifier l'existance
- de $_POST['mot'] (cas de la première page)
- de $_GET['mot'] (cas des pages suivantes)
dans le cas où tu souhaite garder la page.
Une autre solution consiste à créer un champ :
<input type=hidden" value="<?echo $mot:?>" name="mot">
tout ça dans un formulaire de type post