Exemple élaboré

Exemple élaboré – Comment construire une grille de données en utilisant plusieurs fonctionalités

Description

Une interface pour un système de gestion d'utilisateurs.

Cet exemple va vous expliquer comment créer une interface pour un système de gestion d'utilisateurs en utilisant le paquet DB_DataObject pour gérer l'aspects base de données de cet exemple.

Exemple d'un système de gestion d'utilisateurs

<?php
require_once 'Structures/DataGrid.php';
require_once 
'HTML/Table.php';
require_once 
'myclasses/User.php';

// Instanciation de l'objet DataObject ; c'est notre conteneur DataSource
$utilisateur = new User_DataObject();

// Création de la grille de données
$datagrid =& new Structures_DataGrid(20); // Display 20 records per page

// Spécifie comment la grille de données doit être triée par défaut
$datagrid->setDefaultSort(array('lname' => 'ASC'));

//et on lie le conteneur DataSource : $utilisateur à la grille
$test $datagrid->bind($utilisateur);
if (
PEAR::isError($test)) {
    echo 
$test->getMessage();
}

// Définition des colonnes
$datagrid->addColumn(new Structures_DataGrid_Column(nullnullnull, array('width' => '10'), null'printCheckbox()'));
$datagrid->addColumn(new Structures_DataGrid_Column('Name'null'lname', array('width' => '40%'), null'printFullName()'));
$datagrid->addColumn(new Structures_DataGrid_Column('Username''username''username', array('width' => '20%')));
$datagrid->addColumn(new Structures_DataGrid_Column('Role'nullnull, array('width' => '20%'), null'printRoleSelector()'));
$datagrid->addColumn(new Structures_DataGrid_Column('Edit'nullnull, array('width' => '20%'), null'printEditLink()'));

// Définition de l'apparence
$tableAttribs = array(
    
'width' => '100%',
    
'cellspacing' => '0',
    
'cellpadding' => '4',
    
'class' => 'datagrid'
);
$headerAttribs = array(
    
'bgcolor' => '#CCCCCC'
);
$evenRowAttribs = array(
    
'bgcolor' => '#FFFFFF'
);
$oddRowAttribs = array(
    
'bgcolor' => '#EEEEEE'
);
$rendererOptions = array(
    
'sortIconASC' => '&uArr;',
    
'sortIconDESC' => '&dArr;'
);

// Création du tableau HTML
$table = new HTML_Table($tableAttribs);
$tableHeader =& $table->getHeader();
$tableBody =& $table->getBody();

// Demande à la grille de données de remplir le tableau HTML avec les données, en utilisant les options d'affichage définies
$test $datagrid->fill($table$rendererOptions);
if (
PEAR::isError($test)) {
    echo 
$test->getMessage();
}

// Définition des attributs pour la ligne d'en-tête
$tableHeader->setRowAttributes(0$headerAttribs);

// Définition des attributs de lignes alternativement
$tableBody->altRowAttributes(0$evenRowAttribs$oddRowAttribstrue);

// Affichage de la table et des liens page par page
echo $table->toHtml();

// Affichage des liens page par page
$test $datagrid->render(DATAGRID_RENDER_PAGER);
if (
PEAR::isError($test)) {
    echo 
$test->getMessage();
}

function 
printCheckbox($params)
{
   
extract($params);
   return 
'<input type="checkbox" name="idList[]" value="' $record['id'] . '">';
}
function 
printFullName($params)
{
   
extract($params);
   return 
$record['fname'] . ' ' $record['lname'];
}
function 
printRoleSelector($params)
{
   global 
$roleList;

   
extract($params);

   
$html '<select name="role_id">';
   foreach (
$roleList as $roleId => $roleName) {
      
$html .= "<option value=\"$roleId\">$roleName</option>\n";
   }
   
$html .= '</select>';

   return 
$html;
}
function 
printEditLink($params)
{
   
extract($params);
   return 
'<a href="edit.php?id=' $record['id'] . '">Edit</a>';
}
?>