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(null, null, null, 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', null, null, array('width' => '20%'), null, 'printRoleSelector()'));
$datagrid->addColumn(new Structures_DataGrid_Column('Edit', null, null, 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' => '⇑',
'sortIconDESC' => '⇓'
);
// 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, $oddRowAttribs, true);
// 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>';
}
?>