tableau de donnée dans base

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • #16
    Re : tableau de donnée dans base

    Salut,

    J'espère avoir bien compris ton besoin.
    Je te propose une solution simple ci-dessous, en imaginant ce que pourrait être ta BDD :
    Code PHP:
    $bdd =& JFactory::getDBO();
    $query 'SELECT D.dpe, K.kwh'.
            
    ' FROM #__batnrj_dpe as D, #__batnrj_kwh as K'.
            
    ' WHERE D.id = K.id';
    $bdd->setQuery $query );
    $rows $bdd->loadObjectList();

    $total 0;
    foreach ( 
    $rows as $row )
    {
        
    $total += ( $row->dpe $row->kwh );
    }

    echo 
    $total
    ou encore plus simple en intégrant le calcul dans la requête SQL :
    Code PHP:
    $bdd =& JFactory::getDBO();
    $query 'SELECT SUM(D.dpe * K.kwh) as result'.
            
    ' FROM #__batnrj_dpe as D, #__batnrj_kwh as K'.
            
    ' WHERE D.id = K.id';
    $bdd->setQuery $query );
    $rows $bdd->loadObjectList();

    $total $rows[0]->result;

    echo 
    $total
    Espérant être utile ...
    Dernière édition par Benzouye à 15/12/2011, 13h16

    Commentaire


    • #17
      Re : tableau de donnée dans base

      en fait j'ai une série de données parmi d'autres dans ma base #__batnrj qui se nomment
      `dpe09_fioul` int(10) DEFAULT NULL,
      `dpe09_gas` int(10) DEFAULT NULL,
      `dpe09_gasp` int(10) DEFAULT NULL,
      `dpe09_elek` int(10) DEFAULT NULL,
      `dpe09_elec` int(10) DEFAULT NULL,
      `dpe09_boisp` int(10) DEFAULT NULL,
      `dpe09_boisg` int(10) DEFAULT NULL,
      `dpe09_boisb` int(10) DEFAULT NULL,

      puis dans un config.xml j'ai mes params multiplicateur que j'appel par une class $this->params = & Combatnrj::getParams();
      kwh_fioul
      kwh_gasp
      kwh_gasp
      kwh_elec
      kwh_elek
      kwh_boisp
      kwh_boisg
      kwh_boisb

      je veux donc multiplier les valeurs de dpe09 avec le bon paramètres fioul, gas etc.

      LJ
      mon avatar : http://www.ingall-niger.org

      Commentaire


      • #18
        Re : tableau de donnée dans base

        Je ne vois pas où est le souci alors ... d'autant que tu n'as que 8 champs à multiplier ...
        Code PHP:
        $bdd =& JFactory::getDBO();
        $query 'SELECT * FROM #__batnrj';
        $bdd->setQuery $query );
        $rows $bdd->loadObjectList(); 
        Cette requête te retournera tes données "dpe"
        Ensuite, tu peux te crée un array avec tes valeurs de suffixes
        Code PHP:
        $suffixes = [ 'fioul''gas''gasp'etc. ]; 
        Puis tu te fais une boucle de multiplication ... à l'arrache je dirais :
        Code PHP:
        $total 0;
        $step 0;
        foreach ( 
        $suffixes as $suffixe )
        {
             
        $dpe 'dpe09_'.$suffixe;
             
        $kwh 'kwh_'.$suffixe;
             
        $total += $rows[$step]->$dpe $this->params[$step]->$kwh;
             
        $step += 1;

        Mais cela me semble bien compliqué dans ta structure de données. Si tu n'as que 8 champs à traiter, tu dois pouvoir le faire sur 8 lignes écrites en dur ...
        Enfin, je ne sais plus vraiment si je comprends ce que tu fais ?

        Commentaire


        • #19
          Re : tableau de donnée dans base

          dans ma bd j'ai c huit valeurs pour une année
          actuellement j'ai trois années dpe09_ dpe10_ et dpe11_
          chaque année doit être multipliée au kwh_

          lorsque je fais cela $query = 'SELECT * FROM #__batnrj'; je stocke toutes les données alors que je pensais n'extraire que les dpe09_ par exemple ...
          car j'imagine que tout charger prends plus de temps et quand on multiplie les calculs ....
          je vais essayer comme cela quand même

          LJ
          mon avatar : http://www.ingall-niger.org

          Commentaire


          • #20
            Re : tableau de donnée dans base

            Bonjour,

            Là je pense que le vrai problème est la structuration de la table dans la base.

            Au lieu d'avoir des dep_09, dpe_10 etc.. il vaudrait mieux avoir 2 champs, un descripteur (dpe) et un pour l'année.
            Ce qui simplifierait très largement la chose.
            Pas de demande de support par MP.
            S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

            Commentaire


            • #21
              Re : tableau de donnée dans base

              voila la mouture que j"ai faite
              Code PHP:
                  function conso09()
                  {
                  
              // Load the data
                          
              $query ' SELECT * FROM #__batnrj '.
                                  
              '  WHERE id = '.$this->_id;
                          
              $this->_db->setQuery$query );
                          
              $this->_data $this->_db->loadObject();

                  
              $total = ($this->_data->dpe09_fioul $this->params->get'kwh_fioul')) 
                      + (
              $this->_data->dpe09_gas $this->params->get'kwh_gas'))
                      + (
              $this->_data->dpe09_gasp $this->params->get'kwh_gasp'))
                      + (
              $this->_data->dpe09_elec $this->params->get'kwh_elec'))
                      + (
              $this->_data->dpe09_boisp $this->params->get'kwh_boisp'))
                      + (
              $this->_data->dpe09_boisg $this->params->get'kwh_boisg'))
                      + (
              $this->_data->dpe09_boisb $this->params->get'kwh_boisb')) ;

                      return 
              $total;
                  } 
              et que je reproduis pour chaque année ....
              LJ
              mon avatar : http://www.ingall-niger.org

              Commentaire


              • #22
                Re : tableau de donnée dans base

                Envoyé par jisse03 Voir le message
                Bonjour,

                Là je pense que le vrai problème est la structuration de la table dans la base.

                Au lieu d'avoir des dep_09, dpe_10 etc.. il vaudrait mieux avoir 2 champs, un descripteur (dpe) et un pour l'année.
                Ce qui simplifierait très largement la chose.
                D'accord avec jisse03
                Tu pourrais encore être plus performant en créant une table pour tes coéf. kwh et tes suffixes, et tu sortirais directement tes totaux consolidés de ta bdd avec des requêtes de style :
                Code PHP:
                $bdd =& JFactory::getDBO();
                $query 'SELECT * from #__suffixes'// table de ta bdd chargée avec tes fioul, bois, gas, etc.
                $bdd->setQuery $query );
                $suffixes =  $bdd->loadObjectList();

                $annee 2010// Ou une récup $_GET par exemple

                $total 0;
                foreach ( 
                $suffixes as $suffixe )
                {
                    
                $query 'SELECT SUM ( D.dpe_'.$suffixe->name.' * K.kwh_'.$suffixe->name.' )'.
                            
                ' FROM #__batnrj_dpe as D, #__batnrj_kwh as K'.
                            
                ' WHERE D.id = K.id'.
                            
                ' AND D.year='.$annee;
                    
                $bdd->setQuery $query );
                    
                $total += $bdd->loadResult();
                }

                echo 
                $total
                Si vraiment tu préfères rester sur ta structure,dans ta fonction, tu pourrais passer l'année en paramètre et la concatener dans ta requête pour n'avoir qu'une seule fonction. Mais chaque année tu devras modifier ta table dpe pour y ajouter des nouveaux champ genre dpe12_gas ...
                Dernière édition par Benzouye à 17/12/2011, 09h15

                Commentaire


                • #23
                  Re : tableau de donnée dans base

                  ok merci bien j'essaie de revoir la construction de ma base

                  Lj
                  mon avatar : http://www.ingall-niger.org

                  Commentaire


                  • #24
                    Re : tableau de donnée dans base

                    Envoyé par laurent00 Voir le message
                    voila la mouture que j"ai faite
                    Tu peux même aller plus loin en créant une view, puis en filtrant par un simple select la view sur un ID et une année. Dans ce cas, tu déportes la logique de manipulation des données à 100% dans la base, et tu n'as qu'à exploiter les résultats.

                    Et en plus, tu gagnes pas mal de temps en exécution, avec une seule et unique requête paramétrée
                    Pas de demande de support par MP.
                    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

                    Commentaire

                    Annonce

                    Réduire
                    Aucune annonce pour le moment.

                    Partenaire de l'association

                    Réduire

                    Hébergeur Web PlanetHoster
                    Travaille ...
                    X