Moteur de recherche...

Statut
N'est pas ouverte pour d'autres réponses.
WRInaute passionné
Bonjour,

Je me suis servis d'un script de PHPINFO pour avoir créer mon moteur mais j'ai quelques problèmes...Je n'arrive aps a le faire marcher ! Lorsque je fais une recherche ça me donne une page blanche !

formulaire classique :
Code:
<form method="post" action="search.php">
  <input type="text" name="q">
  <input type="submit" name="Submit" value="Rechercher">
</form>


Code:
<?php
$host = "localhost";
$user = "XXXXXX";
$passwd = "XXXXXX";
$db = "XXXXXXXXXX";

// on passe les mots recherchés en minuscules
$q = strtolower($q);

// on remplace les ' + , :  par des espaces
$mots = str_replace('+', ' ', trim($q));
$mots = str_replace('\'', ' ', $mots);
$mots = str_replace(',', ' ', $mots);
$mots = str_replace(':', ' ', $mots);

// on place les differents mots dans un tableau
$tab = explode(' ' , $mots);

// on compte le nbr d'élément du tableau.
$nb = count($tab);

//on prépare la requête SQL.
$sql = "SELECT * FROM moteur WHERE keywords LIKE \'%$tab[0]%\' ";

// on boucle pour integrer tous les mots dans la requête
for($i = 1; $i < $nb; $i++) {
  $sql .= "OR keywords LIKE \'%$tab[$i]%\' ";
}

// on se connecte au serveur
mysql_connect($host, $user, $passwd);

// on execute la requête SQL.
$result = mysql_db_query($db, $sql);

if ($result) {
  
  if (mysql_num_rows($result) == 0) {

    // Si il n'y a pas de résultats
    echo "<center><b>Pas de Résultat</b></center><br>";

  } else {

    echo "<center><b>Résultat(s)</b></center><br>";
    while($data = mysql_fetch_array($result)) {
      echo '<br>'.$data['title'].'<br>';
      echo ''.$data['description'].'<br>';
      echo ''.$data['url'].'<br>';
    }
    mysql_free_result($result);
  }
}
?>

Bon ben merci à ceux qui trouverons l'erreur ! :wink:
 
WRInaute passionné
Ah j'ai oublié :

Une table toute simple :

Code:
CREATE TABLE moteur (
title varchar(255) NOT NULL,
url varchar(255) NOT NULL,
description text NOT NULL,
keywords varchar(255) NOT NULL
);
 
J
JPC
Guest
et si tu mettais un else au

Code:
if ($result) {
?
Code:
if ($result) {
 
  if (mysql_num_rows($result) == 0) {

...
  } else {

...
    }
    mysql_free_result($result);
  }
} 
else {
   echo "<center><b>Problème de connexio à la base de données<br>".mysql_error()."</b></center>"
}
 
J
JPC
Guest
heu, et à part ça, pour moi dans dtes 2 $sql, c'est pas des \' mais des ' simples...

Code:
$sql = "SELECT * FROM moteur WHERE keywords LIKE '%$tab[0]%' ";

// on boucle pour integrer tous les mots dans la requête
for($i = 1; $i < $nb; $i++) {
  $sql .= "OR keywords LIKE '%$tab[$i]%' ";
 
Statut
N'est pas ouverte pour d'autres réponses.
Discussions similaires
Haut