IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

moteur de recherche [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    goc
    goc est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 6
    Par défaut moteur de recherche
    Bonsoir, voila je suis en train de réaliser un petit moteur de recherche sur une de mes base mysql

    Mais j'ai un petit souci, c'est que la recherche, ne s'arrête pas aux tables que je désire
    C’est à dire que si le mot rechercher apparaît dans un autre champ, il sera visible au moment de ma recherche, ce que je ne veut pas puisque je veux une recherche par mot clef et categorie

    Voila mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
    $categorie=$_POST["select"];
    $region=$_POST["region"];
    $motclefs=$_POST["recherche"];
     
    if (empty($_POST['recherche']))
    {                                      
    $reponse = mysql_query("SELECT * FROM annonces WHERE categorie = '$categorie' AND region = '$region'"); //cette line marche nickel
    }
     
    if ($motclefs=$_POST["recherche"])
    {
    $reponse = mysql_query("SELECT * FROM annonces WHERE categorie = '$categorie' AND region = '$region' AND titre_annonce LIKE '%".$motclefs."%' or texte_annonce LIKE '%".$motclefs."%'");
    }

    Merci d’avances a celui qui sera m’aider

  2. #2
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Bonsoir,
    Mais j'ai un petit souci, c'est que la recherche, ne s'arrête pas aux tables que je désire
    Tu ne confonds pas 'table' et 'champs' ...
    Je ne comprends pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($motclefs=$_POST["recherche"])
    puisqu'au dessus tu indiques
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $motclefs=$_POST["recherche"];
    ???

  3. #3
    goc
    goc est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 6
    Par défaut
    Oui dsl c'etais bien champ et non pas table

    et autent pour moi j'ai pas coller le bon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (empty($_POST["recherche"]))						
    $reponse = mysql_query("SELECT * FROM annonces WHERE categorie = '$base' AND region = '$region'");
    else
    $reponse = mysql_query("SELECT * FROM annonces WHERE categorie = '$base' AND region = '$region' or titre_annonce LIKE '%".$motclefs."%' or texte_annonce LIKE '%".$motclefs."%'");

  4. #4
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Re,
    Lorsque tu effectues un : il te renvoi tous les champs présents dans ta table.
    Si tu ne veux que certains champs tu dois indiquer après le SELECT les champs que tu désires :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (empty($_POST["recherche"]))						
    $reponse = mysql_query("SELECT categorie,region FROM annonces WHERE categorie = '$base' AND region = '$region'");
    else
    $reponse = mysql_query("SELECT categorie,region,titre_annonce,texte_annonce FROM annonces WHERE categorie = '$base' AND region = '$region' or titre_annonce LIKE '%".$motclefs."%' or texte_annonce LIKE '%".$motclefs."%'");

  5. #5
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Bonsoir,

    Il faut mettre un AND ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND region = '$region' AND (titre_annonce LIKE '%".$motclefs."%' or texte_annonce LIKE '%".$motclefs."%')"
    car sinon tu vas rechercher égalements les enregistrements qui contiennent les mots-clés.

  6. #6
    goc
    goc est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 6
    Par défaut
    merci de ton aide, j'avais essaye mais sa ne resout pas le probleme


    si sa peu te permetre d'y voir plus lcair voici mon formulaire de recherche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <form action="index.php?page=recherche" method="post" class="moteurrecherche">
              <input name="recherche" type="text" id="recherche" / style="background-color: #FFFFFF; height: 20px; max-height: 15px; color: #FF00FF;" />
              <select name="select" id="select" style="color:fuchsia; margin:0; height: 20px;">
                <option value="automobille">Automobille</option>
                <option value="jeux_video">jeux video</option>
                <option value="Moto">Moto</option>
                <option value="Bateau">Bateau</option>
              </select>
              <select id="searcharea" name="region" / style="background-color: #FFFFFF; height: 20px; max-height: 15px; color: #FF00FF;">
                <option value="01">Ain (01)</option>
                <option value="07">Ardèche (07)</option>
                <option value="26">Drôme (26)</option>
                <option value="38">Isère (38)</option>
                <option value="42">Loire (42)</option>
                <option value="rhone" selected="selected">Rhône (69)</option>
                <option value="73">Savoie (73)</option>
                <option value="74">Haute Savoie (74)</option>
                <option value="paris">Paris</option>
                <option value="''">All</option>
              </select>
              <input name="envoyer" type="submit" id="envoyer" value="Ok" / style="font-style:oblique; color:fuchsia; background-color: #FFFFFF; height: 20px; border-bottom-width: 0px; border-style: none;" />
            </form
    et la base de donner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    -- phpMyAdmin SQL Dump
    -- version 2.11.6
    -- http://www.phpmyadmin.net
    --
    -- Serveur: localhost
    -- Généré le : Jeu 13 Novembre 2008 à 21:58
    -- Version du serveur: 5.0.51
    -- Version de PHP: 5.2.6
     
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
     
    --
    -- Base de données: `coursphp`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `annonces`
    --
     
    CREATE TABLE `annonces` (
      `ID` int(10) NOT NULL auto_increment,
      `region` varchar(100) NOT NULL default 'N/C',
      `code_postal` varchar(6) NOT NULL default 'N/C',
      `type_annonce` varchar(50) NOT NULL,
      `nom` text NOT NULL,
      `email` varchar(100) NOT NULL default 'N/C',
      `telephone` varchar(50) NOT NULL default 'N/C',
      `titre_annonce` varchar(100) NOT NULL,
      `annee` varchar(50) NOT NULL default 'N/C',
      `texte_annonce` text NOT NULL,
      `prix` varchar(10) NOT NULL default 'N/C',
      `photo_annonce` varchar(200) NOT NULL default 'metal-6.jpg',
      `mots_de_passe_annonce` varchar(100) NOT NULL,
      `categorie` varchar(100) NOT NULL,
      `date` varchar(100) NOT NULL,
      `validation` varchar(20) NOT NULL default 'non_visible',
      `validation_editorial` varchar(100) NOT NULL default 'non_visible',
      `ip` varchar(100) NOT NULL,
      `kilometrage` varchar(10) NOT NULL default 'N/C',
      `Cylindree` varchar(5) NOT NULL default 'N/C',
      `Carburant` varchar(10) NOT NULL default 'N/C',
      PRIMARY KEY  (`ID`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
     
    --
    -- Contenu de la table `annonces`
    --
     
    INSERT INTO `annonces` (`ID`, `region`, `code_postal`, `type_annonce`, `nom`, `email`, `telephone`, `titre_annonce`, `annee`, `texte_annonce`, `prix`, `photo_annonce`, `mots_de_passe_annonce`, `categorie`, `date`, `validation`, `validation_editorial`, `ip`, `kilometrage`, `Cylindree`, `Carburant`) VALUES
    (2, 'rhone', '75000', 'jeux_video', 'stephanie', 'Davidt', '06', 'mario bras', '2006', 'Sur le site, passez des annonces gratuites et sans commission. Vous pouvez consulter des petites annonces de particuliers et de professionnels partout en France', '200', '1d_3.jpg', '', 'jeux_video', '', 'non_visible', 'non_visible', '', 'N/C', 'N/C', ''),
    (3, 'rhone', '75000', 'professionnel', '', 'Davidt', '0', 'mario bros', '2006', 'dfdfdfd', '200', 'metal-6.jpg', '', 'jeux_video', '26/02/1985', 'non_visible', 'non_visible', '', 'N/C', 'N/C', ''),
    (4, 'paris', '888550', 'particulier', '', 'shark', '06', 'moto ktm', '2006', 'dfdfdfd', '5000', 'ptiterochelaise.jpg', '', 'moto', '', 'non_visible', 'non_visible', '', 'N/C', 'N/C', ''),
    (5, 'rhone', '77544', 'particulier', 'psycho', 'Davidt', '06', 'acura rs', '2007', '', '120 000', '060319c.jpg', '', 'automobille', '26/02/1985', 'non_visible', 'non_visible', '', 'N/C', 'N/C', ''),
    (6, 'rhone', '77544', 'particulier', '060319c.jpg', 'shark', '06', 'Gsxr', '2007', 'dfdfdfd', '7 500', '060319c.jpg', '', 'automobille', '', 'non_visible', 'non_visible', '', 'N/C', 'N/C', ''),
    (7, 'paris', '75000', 'particulier', 'psycho', 'shark.', '06', 'Crasy', '', 'metal-6.jpg', '2', 'metal-6.jpg', '1985', 'Bateau', '', 'non_visible', 'non_visible', '', 'N/C', 'N/C', '');
    Donc en faite mon souci pour être plus précis, c'est que si je fais une recherche par exemple sur dfdfdf (c'est un test) dans la cat automobile
    J’obtiendrais bien mon résultat, mais j'obtiendrais aussi un résulta pour les autres cat

    edit
    Citation Envoyé par ThomasR Voir le message
    Bonsoir,

    Il faut mettre un AND ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND region = '$region' AND (titre_annonce LIKE '%".$motclefs."%' or texte_annonce LIKE '%".$motclefs."%')"
    car sinon tu vas rechercher égalements les enregistrements qui contiennent les mots-clés.

    Merci j'avais pas vu ta reponse

    Alors avec ta methode sa me donner une erreur un peu plus loin

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

  7. #7
    Membre Expert
    Avatar de Jumano
    Profil pro
    Inscrit en
    Février 2007
    Messages
    1 163
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 1 163
    Par défaut
    Bonjour,
    Je n'avais pas bien compris la question apparemment ...
    La solution t'a été donnée par ThomasR :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $categorie=$_POST['select'];
    $region=$_POST['region'];
    $motcles = "%".$_POST['recherche']."%";
     
    if (empty($_POST['recherche']))
    {                                      
    $reponse = "SELECT * FROM annonces WHERE categorie = '$categorie' AND region = '$region'";
    }
    else
    {
    $reponse = "SELECT * FROM annonces WHERE categorie = '$categorie' AND region = '$region' AND (titre_annonce LIKE '$motcles' OR texte_annonce LIKE '$motcles')";
    }
    PS : automobile ne prend qu'un seul 'L'

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Info]moteur de recherche full text en environnement j2ee
    Par ddams dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 03/11/2004, 19h39
  2. comment faire ma base de donnée pour un moteur de recherche
    Par HoB dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 04/05/2004, 15h07
  3. Moteur de recherche par date
    Par Prue dans le forum ASP
    Réponses: 17
    Dernier message: 27/08/2003, 16h07
  4. [Technique] Index, comment font les moteurs de recherche ?
    Par bat dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 25/10/2002, 15h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo