Problème de pagination.

Réduire
Ce sujet est fermé.
X
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Problème de pagination.

    Bonjour,

    Je créé un composant sous Joomla 3 (je suis connectée à une BDD externe (qui ne contient qu'une seule table))

    J'ai plusieurs vues, dont une servant de page d'accueil, contenant des boutons afin de me rediriger vers les vues nécessaires (la redirection se fait dans le controller), et mes fonctions contenant mes requêtes SQL dans un helper (dans lequel la récupération des données pour se connecter à la BDD se fait)

    Lorsque je veux afficher une vue (qui affiche mon tableau entier avec un SELECT *), sachant qu'il y a quasiment 7000 enregistrements dans ma BDD, ma vue met longtemps à se chercher (pratiquement 1 minute parfois).

    J'ai pensé qu'il serait peut être plus facile, et plus "léger" de ne pas faire apparaitre tous les enregistrements d'un coup, mais plutôt une centaine par une centaine, et passer de l'un à l'autre avec un "page suivante" ou "page précédente" . Autrement dit, utiliser une pagination.

    J'ai trouvé un tutoriel ( http://www.creativedev.in/2012/03/to...ion-in-joomla/ ) que j'ai suivi, seulement il m'affiche le message d'erreur suivant "Warning: Creating default object from empty value in /rrs.fs/x-sic/tele-joomla-dev/publish/components/com_taxation/models/taxation.php on line 36" ) du coup je ne sais pas quoi faire...

    Le tuto est il bon ? Y a t'il une manière "simple" de créer cette pagination ?
    Si quelqu'un pouvait m'expliquer, ou me donner un ou deux tuyaux, j'en serais très heureuse !


    Je vous remercie.


    -S

  • #2
    Re : Problème de pagination.

    Salut,
    Le tuto est il bon ? Y a t'il une manière "simple" de créer cette pagination ?
    il faut faire attention aux tutos joomla, surtout si ils datent un peu (ici, 2012).
    Pas mal de choses ont changé entre temps.
    Comme :
    JRequest::getVar
    , qui est "deprecated" (obsolète) depuis un moment.
    Voir ici par exemple :
    joomla 3.3 deprecated function for JRequest::getVar() - Joomla Stack Exchange
    -> http://joomla.stackexchange.com/ques...jrequestgetvar

    NB : joomla.stackexchange contient des trésors de code :
    Joomla Stack Exchange ->
    Q&A for Joomla! administrators, users, developers and designers

    Il faut s'inscrire.

    Une liste précieuse :
    Potential backward compatibility issues in Joomla 3 and Joomla Platform 12.2 - Joomla! Documentation
    -> https://docs.joomla.org/Potential_ba..._Platform_12.2

    Par ailleurs, j'ai lu qq uns de tes posts sans intervenir, car tu paraissais obtenir des réponses satisfaisantes.
    Certains posts portaient (grosso-modo) sur la mise en place de "forms".
    Je pense que ces 2 liens t'intéresseront - à moins que tu ne les connaisses déjà:
    Creating a custom form field type - Joomla! Documentation
    -> https://docs.joomla.org/Creating_a_c...orm_field_type

    Et cette autre liste absolument précieuse :
    Standard form field types - Joomla! Documentation
    -> https://docs.joomla.org/Standard_form_field_types

    Keep up the good work.
    Un message d’erreur sur votre site Joomla ... ayez le reflexe de consulter lla base de connaissance : https://kb.joomla.fr

    Ce forum, vous l'aimez ? il vous a sauvé la vie ? Vous y apprenez chaque jour ? Alors adhérez à l'AFUJ https://www.joomla.fr/association/adherer

    Commentaire


    • #3
      Re : Problème de pagination.

      Bonjour ghazal,
      merci de ton soutient
      Situation

      j'ai acces a ma table qui ce situte dans une BDD externe aucun soucis cela fonctionne.

      j'utilise dans mon model " extends JModelLegacy " si j'ai bien compris pour faire de la pagination
      il faut utiliser " extends JModelList " donc voici ma class

      fichier site/helper/helper.php // comexion bdd externe
      Code PHP:
      public static function getDbo(){
                  if(
      self::$dbo) return self::$dbo;
                  
      $componentParams=JFactory::getApplication()->getParams('com_taxation');
                  
      $options = array();
                      
      $options['driver']   = 'mysqli';
                      
      $options['host']     = 'localhost';
                      
      $options['user']     = 'root';
                      
      $options['password'] = '';
                      
      $options['database'] = 'tele_dev';
                      
      $options['prefix']   = '';

                      
      self::$dboJDatabase::getInstance($options);
              return 
      self::$dbo
      fichier site/models/taxation.php

      Code PHP:
        jimport('joomla.application.component.modellist');
               
      // -----------------------------------------------------------------------------
               // conextion a la bdd externe
               // -----------------------------------------------------------------------------
                  
      $path=dirname(JPATH_COMPONENT).DIRECTORY_SEPARATOR.'com_taxation'
                                                
      .DIRECTORY_SEPARATOR.'helpers'
                                                
      .DIRECTORY_SEPARATOR.'helper.php';
                  
      $a=JLoader::register('comTaxationHelper',$path);
                  
      $db ComTaxationHelper::getDbo();
        class 
      TaxationModelTaxation extends JModelList{
              
              
      //----------------------------------------------------------------------
              // populateState initialisation des donnees pour le model
              //----------------------------------------------------------------------
                  
      protected function populateState($ordering='ordering'$direction='ASC'){
                          
      $app JFactory::getApplication();
                     
      // ------------------------------------------------------------    
                     // Information de la pagination de la liste
                     // ------------------------------------------------------------
                          
      $limit $app->getUserStateFromRequest('global.list.limit''limit'$app->getCfg('list_limit'), 'uint');
                          
      $this->setState('list.limit'$limit);
                          
      $limitstart $app->input->get('limitstart','uint');
                     
      // ------------------------------------------------------------    
                     // Information du tri de la liste
                     // ------------------------------------------------------------
                          
      $orderCol =$app->input->get('filter_order'$ordering);
                          
      $this->setState('list.ordering'$orderCol);
                          
      $listOrder $app->input->get('filter_order_Dir'$direction);
                          
      $this->setState('list.direction',$listOrder);   
                  }
              
      //----------------------------------------------------------------------
              //  methode pour reconstruit la requet (pour le tri)
              //----------------------------------------------------------------------
                  
      protected function _getListQuery(){ 
                     
      // --------------------------------------------------------------
                     //Conexion a la bdd externe
                     // --------------------------------------------------------------            
                          
                          
      $requete  $db->getQuery(true); 
                     
      // --------------------------------------------------------------
                     // Requet sql
                     // --------------------------------------------------------------
                          
      $requete->select('*');
                          
      $requete->from($db->quoteName('entrepot'));
                     
      // --------------------------------------------------------------
                     // tri des colonnes
                     // --------------------------------------------------------------
                          
      $ordeCol    $this->getState('list.ordering''id');
                          
      $orderDirn  $this->getState('list.direction''ASC');
                          
      $requete->order($db->escape($ordeCol.' '.$orderDirn));                                                        
                  return 
      $requete;
                  
                  }  
        } 
      et voici le retour de jooumla
      ///
      500 La table 'joomla_.entrepot' n'existe pas SQL=SELECT COUNT(*) FROM `entrepot`
      La table 'joomla_.entrepot' n'existe pas SQL=SELECT * FROM `entrepot` ORDER BY ordering ASC LIMIT 0, 20
      La table 'joomla_.entrepot' n'existe pas SQL=SELECT COUNT(*) FROM `entrepot`
      La table 'joomla_.entrepot' n'existe pas SQL=SELECT COUNT(*) FROM `entrepot`

      depuis que je suis passer de JModelLegacy vers JModelList joomla va rechercher ma table en interne et non sur ma base de donnee externe

      avez vous une idee
      merci d'avance
      Dernière édition par ghazal à 19/06/2015, 09h38 Raison: meilleure lisiblité du code

      Commentaire


      • #4
        Re : Problème de pagination.

        salut
        perso dans ma vue view.html.php j'ai ça
        $this->pagination = $this->get('Pagination');
        qui fait appel à la fonction de la classe parent JModelList
        et dans la vue default.php je l'appelle:
        <?php echo $this->pagination->getLimitBox(); ?>
        regardes comment c'est fait dnas libraries/legacy/models/list
        c'est le meilleur moyen pour trouver le souci, tu y trouveras la fonction getPagination()

        bon courage !
        CEd
        et
        <?php echo $this->pagination->getListFooter(); ?>
        normalement tout se fait tout seul à condition d'avoir ta query qui colle avec le JModelList
        Vive Joomla! http://www.joomlack.fr Tutoriels et extensions pour Joomla!. Livre création de template Joomla de plus de 200 pages.
        http://www.template-creator.com Outil de création de templates
        Module Maximenu CK - Megamenu, multicolonnes, chargement de module, description de lien, deroulement animé - Compatible Virtuemart, Hikashop

        Commentaire


        • #5
          Re : Problème de pagination.

          Sinon, tu peux aussi te tourner vers chronoconnectivity http://www.chronoengine.com/download...nectivity.html qui te permettra de gérer la connexion distante à ta bd, la pagination, les filtres, les tris en 2 coups de cuiller à pot
          Christophe
          http://www.webcrea.fr

          Commentaire


          • #6
            Re : Problème de pagination.

            Bonjour webcrea,

            j'ai téléchargé chronoconnectivity5 et j'ai un message d'erreur
            voici les messages

            Message

            Paquet : installation effectuée avec succès.
            DB tables have been installed.
            Your ChronoConnectivity installation on localhost is NOT validated.

            je vais regarder sur le net
            cela est peut être le message est du a la base externe pour mon composent ?

            si tu as déjà rencontrer ce type de problème

            Commentaire


            • #7
              Re : Problème de pagination.

              Bonjour,

              S'il s'agit de la version Free, sans achat de clés, ce message est normal.
              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


              • #8
                Re : Problème de pagination.

                Bonjour Jisse03,

                tu as raison, après lecture sur plusieurs site cela est un message d'information
                j'ai installer donc cette version Free et fait une essai d'une création de table " trop facile "
                le seul inconvénient ces qu'il la créé dans la base Joomla "Interne " et non dans ma base externe.

                avant d'utiliser ma carte bleu!
                il y a t-il quelqu'un qui peut me confirmer si il est possible de créé des éléments sur une base externe ?
                Je me demande si une traduction française existe pour ChronoForms V5.
                merci d'avance
                kaddour

                Commentaire


                • #9
                  Re : Problème de pagination.

                  Quand tu ouvres une connexion le 5ème onglet est assez explicite : "External database"

                  Pas de traduction française à ma connaissance mais un support maintenu par Bob à qui tu payes des binouzes pour améliorer la relation :-) est assez efficace
                  Tu as un faq mais aussi

                  le message ne s'affiche que dans l'admin et ne bride aucunement le composant
                  Christophe
                  http://www.webcrea.fr

                  Commentaire


                  • #10
                    Re : Problème de pagination.

                    bojour webcrea,

                    j'ai bien vue le 5ème onglet est assez explicite : "External database" et donc j'ai renseignés les information de connexions a la BDD externe puis fait un test de création d'une table

                    puis j'ai été voir dans phpMyAdmin et je constat que la table a été créé dans la base joomla et non dans ma base externe

                    voila pourquoi ma question cette extension consulte bien une base interne/externe mais toutes les formulaires son obligatoirement sur la base interne? ou il y a une autre astuce

                    pour la traduction en FR-fr pas de soucis je vais le faire, le payement normale tres bon outils

                    mon seul soucis ces que je ne peut pas faire référence a la base joomla pour mon composent. Obligation de faire référence a une base externe pour tout autre développement.

                    Commentaire

                    Annonce

                    Réduire
                    Aucune annonce pour le moment.

                    Partenaire de l'association

                    Réduire

                    Hébergeur Web PlanetHoster
                    Travaille ...
                    X