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 :

Création classe utilisant des reqêtes presque similaires


Sujet :

PHP & Base de données

  1. #1
    Membre habitué Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 350
    Points : 149
    Points
    149
    Par défaut Création classe utilisant des reqêtes presque similaires
    Bonjour à tous,

    J'essaye de migrer (progressivement) vers de la POO.

    Parfois je reste coincé sur des requêtes simples car je me pose la question de l'optimisation de ma classe.

    Je voudrais savoir comment feriez-vous lorsque je dois utiliser 2 requêtes quasi similaires afin d'optimiser le code.

    Exemple de requêtes séquentielles:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //liste déroulante maison
    $stmtHousesList = $connexion->prepare("SELECT * FROM houses ");
    $stmtHousesList->execute();
     
    //affichage maison
    $stmtHouses = $connexion->prepare("SELECT * FROM houses WHERE id = :id_house");
    		$stmtHouses->BindParam(":id_house",$id_house);
    		$stmtHouses->execute();
    		$dspHousesTitle = $stmtHouses->fetch(PDO::FETCH_ASSOC);
    La première requête est utilisée pour afficher une liste déroulante de toutes les maisons disponibles via une boucle foreach.
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <select class="form-control input-lg" name="house" onchange="selectHouse(this.value);"   >
                       			<?php 
    		                    foreach ($stmtHousesList as $houseList) {
     
                                $selected_house = $id_house === $houseList['id'] ? ' selected="selected"  ' : ''; 
                                $id = $houseList['id'];
                                $houseName = $houseList['name'].' '.$houseList['capacity']; ?>
                                <option  class="form-control" value="<?php echo $id;?>" <?php echo $selected_house;?> ><?php echo $houseName;?></option>
     
    		                   <?php } ?>
    		               </select>


    La seconde est utilisée afin d'afficher un ou plusieurs éléments selon la clause WHERE...
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="hidden" class="form-control input-lg" name="house_id" value="<?php echo $dspHousesTitle['id'] ?>"/>
    Hormis le WHERE... elles sont "presque" similaires.


    Comment feriez-vous pour créer une ou plusieurs méthode(s) pour être utilisée dans une classe sur base des ces 2 requêtes ?

    Je ne vois pas comment optimiser cela.

    Merci pour vos conseils

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    une seule méthode paramétrée suffit amplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class Foo
    {
        public function getList(array $where = []): array
        {
            if ( ! empty($where)) {
                // ... construction de la clause sql where
            }
        }
    }

  3. #3
    Membre habitué Avatar de legrandse
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Décembre 2010
    Messages
    350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Décembre 2010
    Messages : 350
    Points : 149
    Points
    149
    Par défaut
    Merci pour ton aide.

    Malheureusement mes connaissances sont modestes.

    Je ne comprend pas rien
    Alors qu'en programmation séquentielle je me débrouille ici en POO c'est le vide complet.

    par exemple voici le début de ma classe:
    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
    class House 
    {
       
        public $_id_house;
        private $_db;
        
        
     
        function __construct($DB_con)
        {
          $this->_db = $DB_con;
          
          
        }
       
        public function showHouse(array $where = []): array  // je ne comprend pas cette partie.
        {
            if ( ! empty($where)) {
                $stmt = $this->_db->prepare("SELECT * FROM houses $where");
            }
            
        }
        
        
        
    	 
    }
    Je ne sais pas comment traduire en langage courant la partie en rouge que tu m'a suggérée.

    un peu d'aide svp

    Merci

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Basiquement, la partie en rouge dit : la fonction prend un paramètre, qui doit être un tableau ; si le paramètre n'est pas renseigné à l'appel, on utilise un tableau vide.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. Création et utilisation des trigger
    Par zerros dans le forum Débuter
    Réponses: 4
    Dernier message: 28/11/2016, 09h08
  2. Création et utilisation des Plugins pour les applications
    Par tayeb.meftah dans le forum Langage
    Réponses: 3
    Dernier message: 20/02/2009, 18h03
  3. Réponses: 1
    Dernier message: 18/01/2007, 11h45

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