Salut je suis au gros debutant en programmation et je suis en train de creer un site web et j'ai maintenant besoin d'un moteur de recherche. Je voudrais que quelqu'un me donne le lien d'un tuto où je peux apprendre à creer un moteur de recherche avec php et mysql car j'ai pas trouvé de réponse convaincaantes après mes recherches.
merci d'avance pour vos reponses.

9 réponses


Salut,

Pour faire ton moteur de recherche, tu peux le faire comme un formulaire de contact presque, voici un bout de code :

<form method="post" action="recherche.php">
    <input type="text" name="keywords">
    <input type="submit" value="Rechercher">
</form>

Le code ci-dessous, va te permettre de passer en POST les mots clés du champs input.

Après dans ton fichier recherche.php tu peux faire comme ça (toutes les fonctions que tu ne comprends pas regarde sur la doc PHP, je ne vais pas les expliquer car trop long) :

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

        // Je commence à séparer les différents mots clés
        $keywords = explode(' ', $_POST'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. Si tu veux que se soit une recherche explicite retire les %
                $like.= " COLONNE_DE_TA_TABLE LIKE '%".$keyword."%' OR";
            }
        }
        // Je retire le dernier OR qui n'a pas lieu d'être
        $like = substr($like, 0, strlen($like) - 3);
        Connexion à ta base de données
        $req = "SELECT TES_COLONNES FROM TA_TABLE WHERE ".$like;
        Traitement de tes résultats
    } else {
        // Je n'ai rien, j'informe l'utilisateur 
        die('Veuillez saisir quelque chose dans le champs de recherche.');
    }
?>

Cette méthode n'est pas forcément la meilleur mais au moins tu as un début de quelque chose.

Tiens nous au courant de l'avancement

A+

<u><strong>EDIT :</strong></u>

Au fait voici comment te connecter à ta base de données : https://github.com/babeuloula/database-PDO

Ok je l'essaie et je vous dirai le resultat. Merci

D'accord par contre juste un truc sympa sur les forums, évite de mettre "Je veux" mais plutôt je voudrais, certains pourraient mal le prendre

/!\ Attention /!\
Je veux que quelqu'un me donne le lien d'un tuto où je peux apprendre à creer un moteur de recherche avec php !

Comme le dit BaBeuloula, nous pouvons mal le prendre.

Mais voici pour vous : Allez ICI

Je m'excuse. Le mot vient d'être transformé. Merci pour le conseil.

De rien :)

Salut,

Pour le like il faut en faire 3

<?php
$like.= " COLONNE_DE_TA_TABLE LIKE '%".$keyword."' OR";
$like.= " COLONNE_DE_TA_TABLE LIKE '%".$keyword."%' OR";
$like.= " COLONNE_DE_TA_TABLE LIKE '".$keyword."%' OR";
?>

De tel manière à ce qu'il cherche au début des mots, au milieu des mots et à la fin des mots sinon il ne cherchera qu'au milieu.

@princelionelnzi Surtout n'oublie pas de ne jamais faire confiance dans se que te donne le visiteur !

Petit cadeau :)

function cleartexte($string){ 
            $string = str_replace( array('à','á','â','ã','ä', 'ç', 'è','é','ê','ë', 'ì','í','î','ï', 'ñ', 'ò','ó','ô','õ','ö', 'ù','ú','û','ü', 'ý','ÿ', 'À','Á','Â','Ã','Ä', 'Ç', 'È','É','Ê','Ë', 'Ì','Í','Î','Ï', 'Ñ', 'Ò','Ó','Ô','Õ','Ö', 'Ù','Ú','Û','Ü', 'Ý'), array('a','a','a','a','a', 'c', 'e','e','e','e', 'i','i','i','i', 'n', 'o','o','o','o','o', 'u','u','u','u', 'y','y', 'A','A','A','A','A', 'C', 'E','E','E','E', 'I','I','I','I', 'N', 'O','O','O','O','O', 'U','U','U','U', 'Y'), $string);
            $string = strtolower(str_replace(array(" ", "_", "-"), array("-","-","-"), $string));
            return $string;
        }

@ Wapaca : Vu que c'est le caractère joker, normalement tu n'as pas besoin de faire 3 requêtes. Une seule suffit. Sauf si je me trompe

@ vavoir : mais normalement le LIKE de SQL le fait nativement, j'avais déjà testé avec des caractères accentués et je n'ai jamais eu de soucis. Les seuls qu'il faut bien faire gaffe, se sont les " et '