Page 1 sur 1

Petit Moteur de recherche

Posté : 15 nov. 2016, 16:09
par fabrice8
Bonjour,
j’essaie de faire un petit formulaire par rapport a des titres qui sont ma base de données.
J'ai fait un petit form et une gestion via php sql mais aucunes données ne ressort.
Pouvez m'aider svp à avancer dans mon schmilblick

Code : Tout sélectionner

<?php $keywords = $_POST["keywords"]; // Je teste pour savoir si j'ai quelque chose dans POST if(isset($keywords) && !empty($_POST)) { // J'ai quelque chose donc je peux continuer // Je commence à séparer les différents mots clés $keywords = explode(' ', $keywords); // J'initialise ma variable pour la requête SQL $like = ""; foreach($keywords as $keyword) { // Si le mot clé est supérieur à 3 caractères (tu n'es pas obligé) if(strlen($keyword) >= 3) { // Je concatène // Le % en SQL est un joker, ça remplace n'importe quel caractère. $like.= " recettes '%".$keyword."%' OR"; } } // Je retire le dernier OR qui n'a pas lieu d'être $like = substr($like, 0, strlen($like) - 3); $req = mysql_query("SELECT nom FROM recettes ").$like; while( $result = mysql_fetch_array( $req ) ) { echo $result['nom'].'<br/>'; } } else { // Je n'ai rien, j'informe l'utilisateur die('Veuillez saisir quelque chose dans le champs de recherche.'); } ?>

Re: Petit Moteur de recherche

Posté : 15 nov. 2016, 16:18
par Spols
Affiche ta requète, tu verra très vite qu'elle est incomplète

Il manque une clause WHERE et les mots clé LIKE
ton like doit aussi etre inclu dans ta requète et pas ajouter au résultat de celle ci.
J'ai un doute également sur le nom de ton champs recettes dans ta table recettes, ne faut il pas chercher dans les nom ?
à mon avis, ceci serait mieux
<?php




   $keywords = $_POST["keywords"]; 
    // Je teste pour savoir si j'ai quelque chose dans POST
    if(isset($keywords) && !empty($_POST)) {
        // J'ai quelque chose donc je peux continuer


        // Je commence à séparer les différents mots clés
        $keywords = explode(' ', $keywords);
        // J'initialise ma variable pour la requête SQL
        $like = "";
        foreach($keywords as $keyword) {
            // Si le mot clé est supérieur à 3 caractères (tu n'es pas obligé)
            if(strlen($keyword) >= 3) {
                // Je concatène
                // Le % en SQL est un joker, ça remplace n'importe quel caractère. 
                $like.= " nom LIKE '%".$keyword."%' OR";
            }
        }
        // Je retire le dernier OR qui n'a pas lieu d'être
        $like = substr($like, 0, - 3);//petit plus, pas besoin de calculer la longueur de la chaine, substr sait le faire aussi
        $req = mysql_query("SELECT nom FROM recettes WHERE ".$like);
      while( $result = mysql_fetch_array( $req ) )
         {
        echo $result['nom'].'<br/>';
      }
    } else {
        // Je n'ai rien, j'informe l'utilisateur 
        die('Veuillez saisir quelque chose dans le champs de recherche.');
    }
?>