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 :

Externalisation du code sql


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2012
    Messages : 11
    Par défaut Externalisation du code sql
    Bonjour,
    J'ai lu dans un bouquin sur le php qu'il était commode d'externaliser les requêtes en mysql mais sans plus de précisions. Je pense qu'il s'agit de regrouper les requêtes dans un même fichier. Je suis intéressé par cette option car je ne suis pas très expérimenté et il arrive souvent que je découvre un bon tuyau qui nécessite pour le mettre en application de vérifier unes à unes toutes mes requêtes.
    Mais je me pose des questions quand à la méthode:
    Comment identifier(labeliser) la requête souhaitée dans le fichier commun à toutes les requêtes ?
    Comment faire appel à cette requête dans mon script php ?
    Quelle extension choisir pour le nom du fichier qui regroupe les requêtes ?
    Je n'ai rien trouvé sur ce sujet.
    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Par défaut
    Je ne vois pas trop le concept de "fichiers externalisée", mais j'imagine qu'on parle s'isoler les requêtes ailleurs.

    Comment procèdes-tu actuellement ?

    Depuis les dernières versions de PHP (PHP 4 il me semble), on peut utilise le concept d'objets.

    De ce fait, tu peux construire tes classes dans un fichier spécifique. Du coup, dans ce fichier, tu peux créer tes méthodes SQL.
    Par exemple, si tu veux construire une class d'équipe de foot, tu auras ta class Equipe, et dedans des méthodes du genre ajouterJoueur($nom), supprimerJoueur(), ...

    Chaque méthode serait en fait une requête SQL (INSERT et DELETE dans notre cas).

    Il te reste à appeler cette class dans le programme principale (include 'classEquipe.php' et instancier ton objet en suivant pour commencer à travailler avec ses méthodes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    include 'classEquipe.php';
     
    // Instanciation d'une nouvelle equipe
    $instanceEquipe = new Equipe();
     
    // Ajout d'un joueur 
    $instanceEquipe->ajouterJoueur($nom);
    La classe Equipe simplifié
    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
    class Equipe
    {
        function __construct()
        {
    
        }
    
        static function ajouterJoueur($nom)
        {
             // Requête INSERT INTO (nom) VALUES ($nom);
        }
    
        static function supprimerJoueur($nom)
        {
             // Requête DELETE FROM .... WHERE nom = $nom;
        }
    }
    Tu peux aussi utiliser les méthodes dites statique, qui te permettent d'appeler les méthodes sans devoir instancier l'objet (utile lorsque tu dois appeler une méthode, qui est indépendante du reste).

    Bon voilà je sais pas si c'est ce que tu voulais ...

  3. #3
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    J'ai lu dans un bouquin sur le php qu'il était commode d'externaliser les requêtes en mysql mais sans plus de précisions.
    'faut pas croire tout ce qu'on met dans les bouquins. J'ai moi aussi réfléchi à cette problématique et j'en suis venu à la conclusion que dans 99% des cas, le problème pouvait être adressé par un générateur de requête plus que par un dictionnaire. Isoler les requêtes dans un fichier séparé, c'est vrai que c'est pratique lorsqu'on change une requête, mais en règle générale, les requêtes ne changent que lorsque le modèle change (ce qu'on ne fait normalement pas tous les mardis). De plus, quand les structures de données changent de manière conséquente, il est de mise que les comportements de l'application changent eux aussi, le dictionnaire de requêtes perd donc de sa pertinence car dans ce contexte, on doit effectuer les modifications en deux points et non en un seul.

    En bref, je ne vois pas l'utilité d'un dictionnaire. Je crois davantage au générateur car dans le monde réel, la structure des données n'est pas toujours un facteur que le développeur PHP contrôle, pouvoir s'y adapter au runtime, c'est un gain de temps.

    Voici comment j'ai résolu le problème:


    La classe à la plus forte valeur ajoutée est axMySQLObject, elle est capable de comprendre la structure d'une table et de générer les requêtes CRUD à la demande. Elle n'est certes pas parfaite mais dans mon travail, elle couvre presque la totalité des besoins, et pour ceux qu'elle ne peut pas adresser il suffit de l'étendre.

  4. #4
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    la manière la plus simple d'externaliser ton sql est d'utiliser des procédures stockée...

    tu n'as plus que des appels de procédures dans ton php et du coup tu as ton sql dans le sgbd et tu isoles la bd en terme d'accès (plus de sécurité possible) et tu masque son organisation réelle...

    ça revient à manipuler un API...

  5. #5
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Cette dernière option n'est pas idiote du tout. ça demande juste une calibration fine du serveur MySQL car une partie des traitements est alors à sa charge.

  6. #6
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    c'est ce qu'on appelle de la bd "épaisse"

    c'est utilisé depuis longtemps en transaction bancaire par exemple...

  7. #7
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Je me trompe ou c'est surtout le terrain de chasse d'Oracle et de PLSQL

    Avec MySQL c'est pas vraiment ce qu'il y a de plus confortable mais on y arrive tout de même. Mais j'ai personnellement tendance à tout faire en PHP, y compris les traitements modèles car ceux qui savent maintenir ce genre de conception full SQL ne courent pas les rues (les développeurs PHP si).

  8. #8
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    oracle ou oracle?

    ça le fait très bien tout sgbd confondu... postgre, mssql, mysql

    c'est pas si dure à faire, faut juste s'y mettre

    mysql n'a qu'un seul défaut c'est que la compilation se fait à la 1ère demande de chaque session... donc tu n'as un gros avantage de vitesse qu'en cas d'appels multiples...

Discussions similaires

  1. [Mon premier code SQL] Multiples INNER JOIN's
    Par Paulinho dans le forum Langage SQL
    Réponses: 1
    Dernier message: 14/11/2005, 09h04
  2. Création BD Access Code SQL pour relation 1-1 ?
    Par colorid dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 26/10/2005, 16h42
  3. Réponses: 7
    Dernier message: 12/09/2005, 11h05
  4. [IB6] Code SQL.
    Par qi130 dans le forum SQL
    Réponses: 1
    Dernier message: 21/02/2005, 12h21
  5. Récupérer le code SQL à partir d'une requête
    Par Edith_T dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 23/11/2004, 14h10

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