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 :
Ma vue :
Mon Model :
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
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; ?>
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(500, implode("\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);
}
}
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;
}
}
MERCI
Commentaire