Exemple - Simple (Previous) (Next) Custom DataSources

View this page in Last updated: Sun, 28 Sep 2008
English | Dutch | French | German | Hungarian | Japanese | Polish | Russian | Spanish | Plain HTML

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 62-1. 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>';
}
?>

Exemple - Simple (Previous) (Next) Custom DataSources

Download Documentation Last updated: Sun, 28 Sep 2008
Do you think that something on this page is wrong? Please file a bug report or add a note.
User Notes:
There are no user contributed notes for this page.