[php] moteur de recherche interne
darksaif
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
bbar Messages postés 436 Date d'inscription Statut Membre Dernière intervention -
bbar Messages postés 436 Date d'inscription Statut Membre Dernière intervention -
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
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Google moteur de recherche page d'accueil - Guide
- Copernic moteur de recherche - Télécharger - Navigateurs
- Copernic Desktop Search - Télécharger - Utilitaires
- Rechercher ou entrer l'adresse 4 - recherche google ✓ - Forum Réseaux sociaux
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