Page 1 sur 1

moteur de recherche multi champs Au secours...

Posté : 10 janv. 2006, 15:10
par fersayn
Bonjour,
je souhaite créer un moteur de recherche multi champs.
Je m'explique je souhaite que s'affiche sur la meme page contenant deux champs de recherche (un ou deux formulaires) qui interroge une meme base sql d'une meme table.
Le premier champ doit afficher les résultats du champs A de la table.
Le second champ doit afficher les résultats du champs B de la table.

Le soucis est que quand je modifie le script suivant le deuxieme champs me ressort toujours les résultats du champ A.

Merci pour votre aide...

voici le Script de départ que je souhaite modifié:
<form action="recherchelabo.php" method="post">
  <div align="center"><font size="1">Rechercher un Laboratoire pharmaceutique:</font> 
    <input type="text" name="mot" size="20">
    <input type="submit" value="Rechercher">
  </div>
</form>
<?
/******************************************************************
* VARIABLES A MODIFIER
******************************************************************/

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

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

// SERVEUR SQL
$sql_serveur="xxxxxx";

// LOGIN SQL
$sql_user="xxxxxxxx";

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

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

// 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
$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 "<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,"Nom");
      $Adresse=mysql_result($requete,$i,"Adresse");
  $Adresse1=mysql_result($requete,$i,"Adresse2");
        $Tel=mysql_result($requete,$i,"Tel");
        $Fax=mysql_result($requete,$i,"Fax");
        $Site=mysql_result($requete,$i,"Site web");
        echo "<br><br><a href=\"$url\"><b>$Labo</b></a><br>$Adresse<br><br>$Adresse1<br><br>$Tel<br><br>$Fax<br><br>$Site<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>&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> 
</body>
</html>
Merci

Posté : 10 janv. 2006, 15:19
par Cyrano
fersayn, voudrais-tu bien éditer ton message et encadrer ton code en utilisant le bouton [php] :?:

[Edit]fersayn, comme tu es inscrit, tu peux éditer un mesage déjà posté pour y apporter des correction incluant ce que j'avais demandé. J'ai tenu compte de l'effort et procédé à la correction puis effacé le doublon inutile. Penses-y la prochaine fois.[/Edit]