Colonne triable MVC Composent

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

  • [Problème] Colonne triable MVC Composent

    Bonjour à vous,

    Cela fait deux jours que j'essaye que essaye de rapatrier mes donnée de ma table SQL dans des colonnes triables mais malgré quelque tutoriel trouvé sur le net aucun ne marche correctement.

    http://docs.joomla.org/Adding_sortab...in_a_component : erreur au niveau de l'instruction ORDER BY



    J'arrive à afficher mes données mais le problème se situe au niveau de ma requête SQL car ma variable "filter_order" ressoie correctement le nom de colonne que ce soit au niveau du template, de ma vue ou de mon model.

    Mon affichage :
    Code PHP:
    <?php
    /**
     * @version     2.0.0
     * @package     com_gagnantsmagnum
     * @copyright   Copyright (C) 2012. All rights reserved.
     * @license     GNU General Public License version 2 or later; see LICENSE.txt
     * @author      Laurent DECOTTEGNIE <support@magnumintouch.fr> - http://www.magnumintouch.fr
     */


    // no direct access
    defined('_JEXEC') or die;
    ?>

    <?php if($this->items) : ?>
    <form id="adminForm" action="<?php echo JRoute::_'index.php' );?>" method="post" name="adminForm">
        <table>
        <tr>
            <th><?php echo JHTML::_'grid.sort''Date''a.date_gain'$this->sortDirection$this->sortColumn); ?></th>
            <th><?php echo JHTML::_'grid.sort''Prenom''a.prenom'$this->sortDirection$this->sortColumn); ?></th>
            <th><?php echo JHTML::_'grid.sort''Nom''a.nom'$this->sortDirection$this->sortColumn); ?></th>
            <th><?php echo JHTML::_'grid.sort''CP et ville''a.cp_et_ville'$this->sortDirection$this->sortColumn); ?></th>
            <th><?php echo JHTML::_'grid.sort''Cadeau''a.nom_du_cadeau'$this->sortDirection$this->sortColumn); ?></th>
        </tr>
                    
        <?php foreach ($this->items as $item) :?>
            <tr>
                <th><?php echo $item->date_gain?></th>
                <th><?php echo $item->prenom?></th>
                <th><?php echo $item->nom?></th>
                <th><?php echo $item->cp_et_ville?></th>
                <th><?php echo $item->nom_du_cadeau?></th>
            </tr>
        <?php endforeach; ?>

         <div class="pagination">
            <?php if ($this->params->def('show_pagination_results'1)) : ?>
                <p class="counter">
                    <?php echo $this->pagination->getPagesCounter(); ?>
                </p>
            <?php endif; ?>
            <?php echo $this->pagination->getPagesLinks(); ?>
        </div>
    <?php //echo $this->sortColumn; ?>
    <input type="hidden" name="filter_order" value="<?php echo $this->sortColumn?>" />
    <input type="hidden" name="filter_order_Dir" value="<?php echo $this->sortDirection?>" />
    <table>
    </form>
    <?php endif; ?>
    Ma vue :
    Code PHP:
    class GagnantsmagnumViewGagnants extends JView
    {
        protected 
    $items;
        protected 
    $pagination;
        protected 
    $state;
        protected 
    $params;

        
    /**
         * Display the view
         */
        
    public function display($tpl null)
        {
            
    $app                JFactory::getApplication();
            
    $this->state        $this->get('State');
            
    $this->items        $this->get('Items');
            
    $this->pagination    $this->get('Pagination');
            
    $this->params       $app->getParams('com_gagnantsmagnum');

            
    // Check for errors.
            
    if (count($errors $this->get('Errors'))) {
                
    JError::raiseError(500implode("\n"$errors));
                return 
    false;
            }
            
            
    $this->sortDirection $this->state->get('filter_order_Dir');
            
    $this->sortColumn $this->state->get('filter_order');
            
    //echo $this->sortColumn;
            
            
    $this->_prepareDocument();
            
            
    parent::display($tpl);
        }

    Mon Model :
    Code PHP:
    class GagnantsmagnumModelGagnants extends JModelList {

        
    /**
         * Constructor.
         *
         * @param    array    An optional associative array of configuration settings.
         * @see        JController
         * @since    1.6
         */
        
    public function __construct($config = array()) {
            
    parent::__construct($config);
        }

        
    /**
         * Method to auto-populate the model state.
         *
         * Note. Calling getState in this method will result in recursion.
         *
         * @since    1.6
         */
         //$ordering = null, $direction = null
        
    protected function populateState() {
            
            
    // Initialise variables.
            
    $app JFactory::getApplication();

            
    // List state information
            
    $limit $app->getUserStateFromRequest('global.list.limit''limit'$app->getCfg('list_limit'));
            
    $this->setState('list.limit'$limit);

            
    $limitstart JRequest::getVar('limitstart'0'''int');
            
    $this->setState('list.start'$limitstart);
            
            
    /////////
            // AJOUT
            ////////
            
    $filter_order JRequest::getCmd('filter_order','a.date_gain');
            
    $filter_order_Dir JRequest::getCmd('filter_order_Dir','DESC');
            
    //echo $filter_order;
            
            
    $this->setState('filter_order'$filter_order);
            
    $this->setState('filter_order_Dir'$filter_order_Dir);
            
    //echo $this->setState('filter_order');
            
            // List state information.
            
    parent::populateState();
        }

        
    /**
         * Build an SQL query to load the list data.
         *
         * @return    JDatabaseQuery
         * @since    1.6
         */
        
    protected function getListQuery() {
            
    // Create a new query object.
            // echo $filter_order;
            // echo $filter_order_Dir;

            //$db = $this->getDbo();
            
    $db JFactory::getDbo();
            
    $query $db->getQuery(true);

            
    // Select the required fields from the table.
            
    $query->select(
                    
    $this->getState(
                            
    'list.select''a.*'
                    
    )
            );
            
    $query->from('`#__gagnantsmagnum_gagnants` AS a');

            
            
    // Filter by published state
            
    $published $this->getState('filter.state');
            if (
    is_numeric($published)) {
                
    $query->where('a.state = '.(int) $published);
            } else if (
    $published === '') {
                
    $query->where('(a.state IN (0, 1))');
            }
            
            
    $query->order($db->getEscaped($this->getState('list.ordering''a.date_gain')).' '.$db->getEscaped($this->getState('list.direction''DESC')));
            
            return 
    $query;
        }


    Je sais sa fait beaucoup de code mais si quelqu'un veux jeter un coup d'oeil ou si vous connaissez un tutoriel qui marche !

    MERCI

  • #2
    Re : Colonne triable MVC Composent

    Bonjour,

    Passes Joomla! en mode debug, et donnes ici la requête SQL qui plante. En voyant la tête de la requête on trouvera certainement pourquoi chez toi ça coince.
    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


    • #3
      Re : Colonne triable MVC Composent

      En faite j'ai réussi à le mettre en place mais je ne comprend pas toutes les lignes encore si quelqu'un pourrais m'aider :
      $filter_order = JRequest::getCmd('filter_order','a.date_gain');
      $filter_order_Dir = JRequest::getCmd('filter_order_Dir','DESC');
      Les 2 variables reçoivent les paramètre du formulaire ?

      $this->state = $this->get('State'); A quoi correspond cette ligne ?

      $this->sortDirection = $this->state->get('filter_order_Dir'); sortDirection reçoit l'ordre de tri qu' décidé l'utilisateur ?

      Commentaire

      Annonce

      Réduire
      Aucune annonce pour le moment.

      Partenaire de l'association

      Réduire

      Hébergeur Web PlanetHoster
      Travaille ...
      X