récupérer l'id d'un enregistrement

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

  • [RÉGLÉ] récupérer l'id d'un enregistrement

    bonjour
    dans un composant J2.5
    je cherche à récupérer dans un model en admin l'id d'un enregistrement pour afficher les données correspondantes
    Code PHP:
    $query ' SELECT * FROM #__objects '.
                        
    '  WHERE id = '.$this->_id
    mais je n'arrive pas à initialiser le $this->_id

    LJ
    Dernière édition par laurent00 à 15/06/2012, 08h18
    mon avatar : http://www.ingall-niger.org

  • #2
    Re : récupérer l'id d'un enregistrement

    Bonsoir

    Envoyé par laurent00 Voir le message
    mais je n'arrive pas à initialiser le $this->_id
    Je doute que ce soit ta question car pour initialiser une variable, il suffit de lui assigner une valeur comme p.ex.

    Code PHP:
    $this->_id=5
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be
    Logiciel gratuit de scan antivirus : https://github.com/cavo789/aesecure_quickscan (plus de 45.000 virus détectés, 700.000 fichiers sur liste blanche)​

    Commentaire


    • #3
      Re : récupérer l'id d'un enregistrement

      les doutes sont fondés ...
      je veux que le model charge seulement les données de l'enregistrement que je sélectionne
      donc cet id varie
      il faut que je mette un function qui récupère cet id avant !? peut être avec Setid ...

      LJ
      Dernière édition par laurent00 à 31/05/2012, 11h02
      mon avatar : http://www.ingall-niger.org

      Commentaire


      • #4
        Re : récupérer l'id d'un enregistrement

        C'est ce qui se passe quand tu édites un Item. Donc dans le model, plusieurs méthodes, ... en voilà une .
        Code PHP:

        $model 
        = & $this->getModel('my_comp');
        $row $model->getRow();
        $id $row->id 

        // set newstate...
        $row->id new_value 
        Developper of JBreeding Manager: http://www.jbreeding.fr/
        J-cook Referral : Service Générateur d'Extensions pour Joomla

        Commentaire


        • #5
          Re : récupérer l'id d'un enregistrement

          merci
          voici ce que j'ai écris, mais la fonction conso2009 n'est pas calculée correctement donc a priori ne prend pas l'id

          Code PHP:
          <?php

          // No direct access to this file

          defined('_JEXEC') or die; 

          jimport('joomla.application.component.modeladmin');

          class 
          BatenergieModelObject extends JModelAdmin

          {
            public function 
          getForm($data = array(), $loadData true

                { 
          // Get the form
                  
          $form $this->loadForm('com_batenergie.object''object', array('control' => 'jform''load_data' => $loadData));

                  return 
          $form;
                }

            protected function 
          loadFormData() 

            { 
          // Check the session for previously entered form data.
              
          $data JFactory::getApplication()->getUserState('com_batenergie.edit.object.data', array());

                  if(empty(
          $data)){

                    
          $data $this->getItem();
                  }

              return 
          $data;
            } 

                public function 
          getTable($name 'Objects'$prefix 'BatenergieTable'$options = array())
                {
                  return 
          parent::getTable($name$prefix$options);
                } 
              
              function 
          Setid() {
                
          $model = & $this->getModel('com_batenergie');
                
          $row $model->getRow();
                
          $id $row->id 

                
          // set newstate...
                
          $row->id new_value ;
              
              }

              function 
          conso09()
              {    
          //calcul de la conso chauffage 2009
                 
          $params JComponentHelper::getParams('com_batenergie');

                       
          // Load the data
                      
          $query ' SELECT * FROM #__batenergie_objects '
                              
          '  WHERE id = '.$row;
                      
          $this->_db->setQuery$query );
                      
          $this->_data $this->_db->loadObject();
              
          //calcul
              
          $total = ($this->_data->dpe09_fioul $params->get('kwhx_fioul'1) )
                  + (
          $this->_data->dpe09_gas $params->get('kwhx_gas'1))
                  + (
          $this->_data->dpe09_gasp $params->get('kwhx_gasp'1))
                  + (
          $this->_data->dpe09_elec $params->get('kwhx_elec'1))
                  + (
          $this->_data->dpe09_boisp $params->get('kwhx_boisp'1))
                  + (
          $this->_data->dpe09_boisg $params->get('kwhx_boisg'1))
                  + (
          $this->_data->dpe09_boisb $params->get('kwhx_boisb'1));

                  return 
          $total;
              }
          LJ
          mon avatar : http://www.ingall-niger.org

          Commentaire


          • #6
            Re : récupérer l'id d'un enregistrement

            Bonjour,

            Dans la méthode conso09, $row est utilisé dans la requête, mais n'est défini nulle part... ni récupéré.
            Idem dans le reste du code, la portée des variables n'est pas respecté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


            • #7
              Re : récupérer l'id d'un enregistrement

              Envoyé par laurent00 Voir le message
              merci
              voici ce que j'ai écris, mais la fonction conso2009 n'est pas calculée correctement donc a priori ne prend pas l'id

              LJ
              Salut Laurent !
              Je ne saisi pas ta difficulté ?
              Tu veux récupérer $this->_id. Reprend la même méthode que celle utilisée, dans ton composant, pour l'édition d'un Item. Quand tu édites, c'est bien cette variable qui est passée dans la requete ...

              Code PHP:
              $query ' SELECT * FROM #__batenergie_objects '
                                  
              '  WHERE id = '$this->_id 

              Maintenant la question est : tes données sont t'elles postées par un formulaire ($_POST) ?
              Developper of JBreeding Manager: http://www.jbreeding.fr/
              J-cook Referral : Service Générateur d'Extensions pour Joomla

              Commentaire


              • #8
                Re : récupérer l'id d'un enregistrement

                dans ma vue backend c $item->id qui récupère effectivement la variable
                mais ce dernier ne marche pas dans la requête sql ...
                mon avatar : http://www.ingall-niger.org

                Commentaire


                • #9
                  Re : récupérer l'id d'un enregistrement

                  Envoyé par laurent00 Voir le message
                  dans ma vue backend c $item->id qui récupère effectivement la variable
                  mais ce dernier ne marche pas dans la requête sql ...
                  hé bé oui, tout ça dépend du contexte ...
                  Dans l'exemple que tu cites, je ne vois pas $item->id, mais
                  Code PHP:
                  $data JFactory::getApplication()->getUserState('com_batenergie.edit.object.data', array()); 
                  => tu peux donc utiliser
                  Code PHP:
                  $id $data['id']; 
                  => enlève également
                  Code PHP:
                  $row->id new_value 
                  je t'avais mis celà en exemple pour affecter une nouvelle valeur ...
                  Developper of JBreeding Manager: http://www.jbreeding.fr/
                  J-cook Referral : Service Générateur d'Extensions pour Joomla

                  Commentaire


                  • #10
                    Re : récupérer l'id d'un enregistrement

                    chiotte
                    j'ai mis cela mais ca marche pas ...
                    Code PHP:
                        function Setid() { 
                          
                    $model = & $this->getModel('com_batenergie'); 
                          
                    $row $model->getRow(); 
                          
                    $id $data['id'];  
                       
                        } 

                        function 
                    conso09()
                        {    
                    //calcul de la conso chauffage 2009
                         
                    $params JComponentHelper::getParams('com_batenergie');

                                    
                    // Load the data
                                
                    $query ' SELECT * FROM #__batenergie_objects '
                                                
                    '  WHERE id = '$id ;
                                
                    $this->_db->setQuery$query );
                                
                    $this->_data $this->_db->loadObject();
                        
                    //calcul
                        
                    $total = ($this->_data->dpe09_fioul $params->get('kwhx_fioul'1) )
                            + (
                    $this->_data->dpe09_gas $params->get('kwhx_gas'1))
                            + (
                    $this->_data->dpe09_gasp $params->get('kwhx_gasp'1))
                            + (
                    $this->_data->dpe09_elec $params->get('kwhx_elec'1))
                            + (
                    $this->_data->dpe09_boisp $params->get('kwhx_boisp'1))
                            + (
                    $this->_data->dpe09_boisg $params->get('kwhx_boisg'1))
                            + (
                    $this->_data->dpe09_boisb $params->get('kwhx_boisb'1));

                            return 
                    $total;
                        } 
                    mon avatar : http://www.ingall-niger.org

                    Commentaire


                    • #11
                      Re : récupérer l'id d'un enregistrement

                      Pour faire simple, dans ta fonction conso09, $id est toujours indéfini, la fonction n'y ayant pas accès.
                      Dans ta classe crées par exemple une variable statique:
                      Code PHP:
                      <?php

                      // No direct access to this file

                      defined('_JEXEC') or die;
                      jimport('joomla.application.component.modeladmin');

                      class 
                      BatenergieModelObject extends JModelAdmin
                      {
                        public static 
                      $id null ;
                         protected function 
                      Setid()
                         {      
                      $model = & $this->getModel('com_batenergie');      $row $model->getRow();      $this->id $row->id ;   }
                          function 
                      conso09()    {    //calcul de la conso chauffage 2009       $params = JComponentHelper::getParams('com_batenergie');
                                   // Load the data            $query = ' SELECT * FROM #__batenergie_objects '.                    '  WHERE id = '.$this->id;            $this->_db->setQuery( $query );            $this->_data = $this->_db->loadObject();    //calcul    $total = ($this->_data->dpe09_fioul * $params->get('kwhx_fioul', 1) )        + ($this->_data->dpe09_gas * $params->get('kwhx_gas', 1))        + ($this->_data->dpe09_gasp * $params->get('kwhx_gasp', 1))        + ($this->_data->dpe09_elec * $params->get('kwhx_elec', 1))        + ($this->_data->dpe09_boisp * $params->get('kwhx_boisp', 1))        + ($this->_data->dpe09_boisg * $params->get('kwhx_boisg', 1))        + ($this->_data->dpe09_boisb * $params->get('kwhx_boisb', 1));
                              
                      return $total;    }
                      par exemple. Mais vérifie stout, tu as des problèmes de portées de variables.
                      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


                      • #12
                        Re : récupérer l'id d'un enregistrement

                        merci avec cela néanmoins le id n'est toujours pas pris
                        Code PHP:
                        <?php

                        // No direct access to this file

                        defined('_JEXEC') or die; 

                        jimport('joomla.application.component.modeladmin');

                        class 
                        BatenergieModelObject extends JModelAdmin

                        {
                          public function 
                        getForm($data = array(), $loadData true

                              { 
                        // Get the form
                                
                        $form $this->loadForm('com_batenergie.object''object', array('control' => 'jform''load_data' => $loadData));

                                return 
                        $form;
                              }
                            
                            public static 
                        $id null ;
                            protected function 
                        Setid()       {      
                                
                        $model = & $this->getModel('com_batenergie');      
                                
                        $row $model->getRow();      
                                
                        $this->id $row->id ;   }

                          protected function 
                        loadFormData() 

                          { 
                        // Check the session for previously entered form data.
                            
                        $data JFactory::getApplication()->getUserState('com_batenergie.edit.object.data', array());

                                if(empty(
                        $data)){

                                  
                        $data $this->getItem();
                                }

                            return 
                        $data;
                          } 

                              public function 
                        getTable($name 'Objects'$prefix 'BatenergieTable'$options = array())
                              {
                                return 
                        parent::getTable($name$prefix$options);
                              } 


                            function 
                        conso09()
                            {    
                        //calcul de la conso chauffage 2009
                               
                        $params JComponentHelper::getParams('com_batenergie');

                                     
                        // Load the data
                                    
                        $query ' SELECT * FROM #__batenergie_objects '
                                            
                        '  WHERE id = '.$this->id;
                                    
                        $this->_db->setQuery$query );
                                    
                        $this->_data $this->_db->loadObject();
                            
                        //calcul
                            
                        $total = ($this->_data->dpe09_fioul $params->get('kwhx_fioul'1) )
                                + (
                        $this->_data->dpe09_gas $params->get('kwhx_gas'1))
                                + (
                        $this->_data->dpe09_gasp $params->get('kwhx_gasp'1))
                                + (
                        $this->_data->dpe09_elec $params->get('kwhx_elec'1))
                                + (
                        $this->_data->dpe09_boisp $params->get('kwhx_boisp'1))
                                + (
                        $this->_data->dpe09_boisg $params->get('kwhx_boisg'1))
                                + (
                        $this->_data->dpe09_boisb $params->get('kwhx_boisb'1));

                                return 
                        $total;
                            }
                        mon avatar : http://www.ingall-niger.org

                        Commentaire


                        • #13
                          Re : récupérer l'id d'un enregistrement

                          passes ton code en mode debug, et tu verras ce qui n'est pas initialisé ou pas accessible, en commençant par mettre le rapport d'erreur de Joomla! en mode éveloppeur, et tu auras toutes les notices concernant tes variables non initialisées.

                          Et pour aller plus loin, comme tout bon développeur, installes XDebug, qui te permet de tracer pas à pas l'exécution du code, examiner tous les changements de valeur des variables d'instance, etc.
                          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


                          • #14
                            Re : récupérer l'id d'un enregistrement

                            voici le rapport d'erreur de ma page
                            Code:
                            Strict Standards: Declaration of BatenergieController::display() should be compatible with that of JController::display() in /homez.506/ingallni/www/joomlatest/administrator/components/com_batenergie/controller.php on line 38
                            
                            Strict Standards: Only variables should be assigned by reference in /homez.506/ingallni/www/joomlatest/administrator/components/com_batenergie/views/object/view.html.php on line 39
                            
                            Strict Standards: Accessing static property BatenergieModelObject::$id as non static in /homez.506/ingallni/www/joomlatest/administrator/components/com_batenergie/models/object.php on line 52
                            
                            Notice: Undefined property: BatenergieModelObject::$id in /homez.506/ingallni/www/joomlatest/administrator/components/com_batenergie/models/object.php on line 52
                            
                            Notice: Trying to get property of non-object in /homez.506/ingallni/www/joomlatest/administrator/components/com_batenergie/models/object.php on line 56
                            
                            Notice: Trying to get property of non-object in /homez.506/ingallni/www/joomlatest/administrator/components/com_batenergie/models/object.php on line 57
                            
                            Notice: Trying to get property of non-object in /homez.506/ingallni/www/joomlatest/administrator/components/com_batenergie/models/object.php on line 58
                            
                            Notice: Trying to get property of non-object in /homez.506/ingallni/www/joomlatest/administrator/components/com_batenergie/models/object.php on line 59
                            
                            Notice: Trying to get property of non-object in /homez.506/ingallni/www/joomlatest/administrator/components/com_batenergie/models/object.php on line 60
                            
                            Notice: Trying to get property of non-object in /homez.506/ingallni/www/joomlatest/administrator/components/com_batenergie/models/object.php on line 61
                            
                            Notice: Trying to get property of non-object in /homez.506/ingallni/www/joomlatest/administrator/components/com_batenergie/models/object.php on line 62
                            
                            Notice: Undefined property: stdClass::$dpe12fioul in /homez.506/ingallni/www/joomlatest/administrator/components/com_batenergie/models/object.php on line 116
                            
                            Strict Standards: Only variables should be assigned by reference in /homez.506/ingallni/www/joomlatest/administrator/components/com_batenergie/views/object/tmpl/edit.php on line 7
                            
                            Notice: Use of undefined constant E - assumed 'E' in /homez.506/ingallni/www/joomlatest/administrator/components/com_batenergie/views/object/tmpl/edit.php on line 50
                            
                            Notice: Use of undefined constant E - assumed 'E' in /homez.506/ingallni/www/joomlatest/administrator/components/com_batenergie/views/object/tmpl/edit.php on line 65
                            la ligne 52 c'est
                            Code PHP:
                             '  WHERE id = '.$this->id
                            mon avatar : http://www.ingall-niger.org

                            Commentaire


                            • #15
                              Re : récupérer l'id d'un enregistrement

                              remplaces public static $id = null;
                              par public $id = null;

                              Mais le mode développeur te donne d'autres problèmes que tu devrais résoudre.
                              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