Petit Moteur de recherche

fabrice8
Invité n'ayant pas de compte PHPfrance

15 nov. 2016, 16:09

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.'); } ?>

Mammouth du PHP | 1967 Messages

15 nov. 2016, 16:18

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.');
    }
?>
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube