Page 1 sur 1

moteur de recherche multicritere

Posté : 06 janv. 2006, 12:47
par fersayn
Bonjour,
j'essaie de créer un moteur de recherche muliticritere ou on peut rechercher des infos dans deux champs distincts qui recherche dans un db sql dans deux champs differents mais dans la meme table...

voici le code et l'erreur qui me revient:

Code : Tout sélectionner

<html> <head> <title>Résultat de la recherche</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body text="#000000" bgcolor="#FFFFFF" link="#9999FF" vlink="#9999FF" alink="#9999FF"> <font face="Verdana" size=2> <form name="entreprise" form action="fournisseur.php" method="post"> <div align="center"><font size="1">Rechercher par Entreprise Fournisseur:</font> <input type="text" name="mot" size="20"> <input type="submit" value="Rechercher"> </div> </form> <form name="appareillage" form action="fournisseur.php" method="post"> <div align="center"><font size="1">Rechercher par Matériel </font> <input type="text" name="mot" size="20"> <input type="submit" value="Rechercher"> </div> </form> </font> <p><font face="Verdana" size=2> <? /****************************************************************** * VARIABLES A MODIFIER ******************************************************************/ // NOMBRE DE RESULTATS PAR PAGE $limit=6; // NOM DE CE SCRIPT $script_name="fournisseur.php"; // SERVEUR SQL $sql_serveur=""; // LOGIN SQL $sql_user=""; // MOT DE PASSE SQL $sql_passwd=""; // BASE DE DONNEE $sql_bdd=""; // 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"); $page = isset($_GET['page']) ? $_GET['page'] : 0; $mot = isset($_POST['mot']) ? $_POST['mot'] : (isset($_GET['mot']) ? $_GET['mot'] : ""); $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=="or"){$texte.="et";}else{$texte.="ou";} $texte.=" <b>"$mots[$z]"</b>"; $z++; } if(!isset($debut)) { $debut=0; } if(!isset($page)) { $page=0; } $debut=$page*$limit; // NOMBRE TOTAL D'ENREGISTREMENTS REPONDANT A LA REQUETE if(extract($_POST)) { //Si le champ entreprise est poster if($cherche = $_POST['entreprise']) { $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); if(extract($_POST)) { //Si le champ appareillage est poster if($cherche = $_POST['appareillage']) { $requete=mysql_db_query("$sql_bdd","select count(*) from recherche where Produits like $phrase order by id",$db_link); $nb_total=mysql_result($requete,0,"count(*)"); $requete=mysql_db_query("$sql_bdd","select * from recherche where Produits 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 "<font size=1>Veuillez saisir un ou plusieurs mot-clés avant de cliquer sur 'OK' !</font>";} else if (strlen($mot)<2) {echo "Veuillez saisir au moins 2 caractères.";} // AFFICHAGE DES RESULTATS else { echo "<b>$nb_total</b> r&eacute;ponse"; if ($nb_total>1) {echo "s";} echo "<br>$texte"; $i=0; while($i<$num) { $url=mysql_result($requete,$i,"url"); $Labo=mysql_result($requete,$i,"mots"); $Adresse=mysql_result($requete,$i,"Adresse1"); $Adresse1=mysql_result($requete,$i,"Adresse2"); $Tel=mysql_result($requete,$i,"Tel"); $Fax=mysql_result($requete,$i,"Fax"); $Site=mysql_result($requete,$i,"web"); $Prod=mysql_result($requete,$i,"Produits"); echo "<font size=1><br><br><a href=\"$url\"><b>$Labo</b></a><br>$Adresse<br><br>$Adresse1<br><br>$Tel<br><br>$Fax<br><br>$Prod<br><br>$Site<br></font><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>&nbsp;\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>)&nbsp;";} else {echo "<b>($j)</b>&nbsp;";} $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></p> <p>&nbsp; </p> </body> </html>
il me retourne l'erreur suivante:

Parse error: parse error, unexpected $ in /var/www/data/lri/8/K/4/B/8K4B58RP/docs/fournisseur-.php on line 193

que dois je faire?

Merci pour votre aide..

Posté : 06 janv. 2006, 13:10
par fersayn
j'ai modifié une partie du code :

Code : Tout sélectionner

// NOMBRE TOTAL D'ENREGISTREMENTS REPONDANT A LA REQUETE if(isset($_POST['entreprise'])) { //Si le champ entreprise est poster $cherche = $_POST['entreprise']; { $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); //Si le champ appareillage est poster else if($cherche2 = $_POST['appareillage']) { $requete=mysql_db_query("$sql_bdd","select count(*) from recherche where Produits like $phrase order by id",$db_link); $nb_total=mysql_result($requete,0,"count(*)"); $requete=mysql_db_query("$sql_bdd","select * from recherche where Produits like $phrase limit $debut,$limit",$db_link); $num=mysql_num_rows($requete);
et maintenant, j'obtient une erreur qui est la suivante:

Parse error: parse error, unexpected T_ELSE in /var/www/data/lri/8/K/4/B/8K4B58RP/docs/fournisseur-.php on line 117

??

Posté : 06 janv. 2006, 13:36
par fersayn
Bon ca y est ca marche j'arrive a me connecter et à faire une recherche dans le premier champ.
Par contre, pour le deuxieme champ: il me retourne aucune réponse...comme si il recherchait encore dans le meme champs que le premier?

Merci...

Voici le code php

Code : Tout sélectionner

$db_link = mysql_connect("$sql_serveur","$sql_user","$sql_passwd"); $page = isset($_GET['page']) ? $_GET['page'] : 0; $mot = isset($_POST['mot']) ? $_POST['mot'] : (isset($_GET['mot']) ? $_GET['mot'] : ""); $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=="or"){$texte.="et";}else{$texte.="ou";} $texte.=" <b>"$mots[$z]"</b>"; $z++; } if(!isset($debut)) { $debut=0; } if(!isset($page)) { $page=0; } $debut=$page*$limit; // NOMBRE TOTAL D'ENREGISTREMENTS REPONDANT A LA REQUETE if(isset($_POST['entreprise'])) { //Si le champ entreprise est poster $cherche = $_POST['entreprise']; { $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); } } if(isset($_POST['appareillage'])) { //Si le champ appareillage est poster $cherche2 = $_POST['appareillage']; { $requete=mysql_db_query("$sql_bdd","select count(*) from recherche where Produits like $phrase order by id",$db_link); $nb_total=mysql_result($requete,0,"count(*)"); $requete=mysql_db_query("$sql_bdd","select * from recherche where Produits 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 "<font size=1>Veuillez saisir un ou plusieurs mot-clés avant de cliquer sur 'OK' !</font>";} else if (strlen($mot)<2) {echo "Veuillez saisir au moins 2 caractères.";} // AFFICHAGE DES RESULTATS else { echo "<b>$nb_total</b> r&eacute;ponse"; if ($nb_total>1) {echo "s";} echo "<br>$texte"; $i=0; while($i<$num) { $url=mysql_result($requete,$i,"url"); $Labo=mysql_result($requete,$i,"mots"); $Adresse=mysql_result($requete,$i,"Adresse1"); $Adresse1=mysql_result($requete,$i,"Adresse2"); $Tel=mysql_result($requete,$i,"Tel"); $Fax=mysql_result($requete,$i,"Fax"); $Site=mysql_result($requete,$i,"web"); $Prod=mysql_result($requete,$i,"Produits"); echo "<font size=1><br><br><a href=\"$url\"><b>$Labo</b></a><br>$Adresse<br><br>$Adresse1<br><br>$Tel<br><br>$Fax<br><br>$Prod<br><br>$Site<br></font><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>&nbsp;\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>)&nbsp;";} else {echo "<b>($j)</b>&nbsp;";} $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></p> <p>&nbsp; </p> </body> </html>

Posté : 06 janv. 2006, 17:37
par brani
Salut, j'ai suivi ce que tu fesai tu n'est pas tout seule t'inquete pas


a+