Moteur de recherche mysql php

Bonjour,

Je viens de modifier quelque source que j'ai télécharger pour un moteur de recherche
mais à chaque fois que je lance une recherche aucun résultat n'apparaît et il n'y a pas d'erreur mais il me renvois toujours qu'aucun résultat trouvé alors je me dis qu'il y a certainement un souci dans ma requête sql mais je ne me retrouve pas si vous pouvez jété un oeil et m'aider s'il vous plait.

Merci !

Voici le code

CHAMP DE RECHERCHE

<!--debut du formulaire-->
<form class="ajax" action="search.php" method="get">
	<p>
		<label for="name_search">Rechercher un article</label>
		<input type="text" name="name_search" id="name_search" />
		<input type="submit" name="search" value="search">
	</p>
</form>
<!--fin du formulaire-->
 
<!--preparation de l'affichage des resultats-->
<div id="results"></div>


CODE PHP

<?php
// information pour la connection à le DB
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'cybernet'; 
// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error());
mysql_select_db($db) or die ('Erreur :'.mysql_error()); 
 
//recherche des résultats dans la base de données
$result =   mysql_query( 'SELECT prenom
                          FROM agent
                          WHERE nom = \'publish\'
                          AND nom LIKE \'' . safe( $_GET['name_search'] ) . '%\'
                          LIMIT 0,20' );
 
// affichage d'un message "pas de résultats"
if( mysql_num_rows( $result ) == 0 )
{
?>
    <h3 style="text-align:center; margin:10px 0;">Pas de résultats pour cette recherche</h3>
<?php
}
else
{
    // parcours et affichage des résultats
    while( $post = mysql_fetch_object( $result ))
    {
    ?>
        <div class="article-result">
            <h3><a href="<?php echo $post->guid; ?>"><?php echo utf8_encode( $post->nom ); ?></a></h3>
            <p class="date"><?php echo $post->nom; ?></p>
            <p class="url"><?php echo $post->guid; ?></p>
        </div>
    <?php
    }
}
 
/*****
fonctions
*****/
function safe($var)
{
	$var = mysql_real_escape_string($var);
	$var = addcslashes($var, '%_');
	$var = trim($var);
	$var = htmlspecialchars($var);
	return $var;
}
?>


1 réponse

  1. Contributeur
    Hello,

    D'après ta requête il faut absolument que le nom commence par le mot insérer dans le champ de recherche. Sinon il faut ajouter un % au début également.

    1. Où dois-je ajouter cela ?
    2. Contributeur
      $result = mysql_query( 'SELECT prenom
      FROM agent
      WHERE nom = \'publish\'
      AND nom LIKE \'%' . safe( $_GET['name_search'] ) . '%\'
      LIMIT 0,20' );
    3. ça y est j'ai trouvé j'ai modifier cette ligne le résultat s'affiche maintenant :
      $result =   mysql_query( 'SELECT nom FROM agent WHERE nom LIKE \'' . safe( $_GET['name_search'] ) . '%\'