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

Langage SQL Discussion :

Moteur de recherche PDO


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2013
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Moteur de recherche PDO
    Bonjour, j'aimerais savoir si il est possible de réécrire cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM livres WHERE $critere LIKE '%$mot%' ORDER BY $critere $ordre
    en PDO et sans concaténation.

    Voilà ce que j'aimerais faire :

    Ce que je veux faire, c'est une requête avec DEUX données aléatoires, en fonction de ce que le visiteur saisi. La première donnée représentée par '%$mot%' correspond au mot que je veux rechercher dans la base de données. Mais j'ai également une deuxième donnée aléatoire, celle du champ dans lequel faire la recherche. Je ne veux faire la recherche que dans un seul champ et ignorer les autres champs. Mais je ne veux pas faire la recherche dans tous les champs, ni à la fois ni l'un après l'autre, ni de quelque autre manière que ce soit. Je veux pouvoir sélectionner, aléatoirement, un des champs dans lequel faire la recherche, et ne faire la recherche que dans ce champ là uniquement et pas dans les autres. Pour sélectionner un champ de la base de données, je veux que le visiteur choisisse un des champs de la base de données dans un liste déroulante, et je récupère l'information, qui correspond à $critere, et en fonction du choix du visiteur (le critère de recherche, autrement dit dans quel champ de la base données il faut chercher ?), je cherche dans un des champs de la base de données.

    Donc, traduire en requête écrite avec l'objet PDO la demande suivante : Sélectionnes toutes les informations de la table livres où "le critère de recherche" (qui correspond au nom du champ de la table dans laquelle il faut faire la recherche) choisi par le visiteur contient un mot qui ressemble au mot que le visiteur recherche, que le résultat soit ordonné selon le critère (nom d'un champ de la table) sélectionné par le visiteur.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 786
    Points
    30 786
    Par défaut
    Qu'est que PDO ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 130
    Points : 38 543
    Points
    38 543
    Billets dans le blog
    9
    Par défaut
    Bonsoir

    Ce que vous décrivez s'appelle du SQL Dynamique peu propice aux performances.
    Facteur agravant : vous prévoyez une recherche générique en encadrant la valeur saisie par des % de part et d'autre.
    Ce type de requete n'est pas indexable

    Du coup ATTENTION LES PERFS, si vos tables contiennent plus que quelques centaines de milliers de lignes, vous vous exposez à des temps de réponse redoutables

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Le SQL dynamique n'est pas particulièrement moins performant, s'il est correctement codé pour être sécurisé (utilisation des variables de liaison)
    De toute façon, grophies a l'air de coder ses requêtes dans PHP, il ne fait donc que du SQL dynamique.

    Après évidemment un like %% ne sera pas performant, il est généralement préférable d'utiliser une recherche textuelle (mysql est limité sur ce point)

    Concernant la question, je ne comprends pas le problème, il suffit de générer par code (en PHP pour grophies, ou en procédure stockée pour d'autres, ou autres langages) la requête en fonction des critères sélectionnés.
    C'est l'approche classique pour un "moteur de recherche" qui laisse l'utilisateur libre de filtrer sur différents critères (différentes colonnes de la BDD).

    PDO est une librairie PHP de connexion aux BDD (mysql généralement) et n'a pas, à ma connaissance, de syntaxe SQL spécifique.

Discussions similaires

  1. [PDO] Moteur de recherche avec PDO + fonction LIKE
    Par malaka44 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/10/2013, 16h16
  2. [PDO] Moteur de recherche et PDO
    Par elwood973 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/08/2010, 17h12
  3. 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
  4. Moteur de recherche par date
    Par Prue dans le forum ASP
    Réponses: 17
    Dernier message: 27/08/2003, 16h07
  5. [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