Introduction

Introduction – Création d'un tabeau HTML

Qu'est-ce que HTML_Table?

HTML_Table offre une interface pour créer un tableau HTML. Vous pouvez travailler avec une table comme avec une feuille de calcul. Plutôt que de travailler avec le code HTML et l'ajout de cellules, vous pouvez vous adresser et remplir les cellules indépendament de leurs positions. Il n'y a aucune différence, que vous commenciez à remplir une cellule au début, au milieu ou à la fin de la table, une ligne ou même une colonne.

Les valeurs autoGrow et autoFill

Le flag autoGrow

Normalement, vous définissez un tableau avec un nombre de lignes et de colonnes constantes. Mais parfois, vous le savez pas d'avance le nombre de lignes et de colonnes qu'il vous faut : i.e. la transformation d'entrées utilisateurs ou le résultat d'une requête de base de données en un tableau HTML.

Dans ce cas, vous devriez activer la fonctionnalité autoGrow . Dans ce mode, HTML_Table ajoute automatiquement de nouvelles lignes ou de nouvelles colonnes si vous utilisez une cellule dont l'adresse se trouve dans une ligne ou une colonne non existante.

La vaeur autoFill

Si vous créez un tableau de données, parfois, vous ne devez pas remplir toutes les cellules avec des valeurs différentes. Peut-être ne connaissez-vous pas la valeur pour la cellule, ou vous voulez insérer une valeur par défaut - i.e. récupération de données utilisateurs. Tous les utilisateurs n'ont pas forcemment de téléphone mobile, d'adresse e-mail, etc., dans ce cas, une valeur comme "n/a" doit être insérée dans cette cellule.

Donc, définissez simplement "n/a" comme valeur pour le paramètre autoFill et cette valeur sera utilisée pour remplir les cellules pour lesquelles une donnée n'existe pas. Vous n'avez plus à remplir toutes les cellules ; les vides seront automatiquement remplient en utilisant la valeur "n/a" .

Création d'un tableau

Les données de démonstration

Notre tableau HTML doit contenir les données suivantes :

<?php
$data 
= array(
   
'0' => array('Bakken''Stig''''stig@example.com'),
   
'1' => array('Merz''Alexander''alex.example.com''alex@example.com'),
   
'2' => array('Daniel''Adam", '', '')
);
?>

Commencement

Commençons par créer une nouvelle instance de la classe HTML_Table. Le tableau doit avoir une largeur de 600 pixels. Nous ne connaissons pas la quantité de données à insérer dans le tableau - donc, nous activons la fonctionnalité autoGrow feature. Les cellules vides doivent contenir la valeur "n/a" .

<?php
require_once "HTML/Table.php";

$tableAttrs = array('width' => '600');
$table = new HTML_Table($tableAttrs);
$table->setAutoGrow(true);
$table->setAutoFill("n/a");
?>

Ajout de lignes de données

Maintenant, ajotons les données. Ici, nous utilisons également la fonctionnalité de la classe HTML_Table qui permet de colorer alternativement les lignes. Une sur deux sera colorée en rouge.

<?php
for ($nr 0$nr count($data); $nr++) {
      
$table->setHeaderContents$nr+10, (string)$nr);
       for (
$i 0$i 4$i++) {
               if (
'' != $data[$nr][$i])
               
$table->setCellContents($nr+1$i+1$data[$nr][$i]);
       }
  }
  
$altRow = array('bgcolor'=>'red');
  
$table->altRowAttributes(1null$altRow);
?>

Ajout de l'en-tête des cellules

Maintenant, nous voulons définir les cellules de la première ligne et colonne en tant qu'en-tête des cellules. Cela va ressembler à une feuille de calcul, nous utiliserons donc la couleur grise comme arrière-plan de chaque cellule de l'en-tête. La première ligne contient une en-tête de colonne, la première colonne, le nombre de lignes de données définies.

<?php
$table
->setHeaderContents(00'');
$table->setHeaderContents(01'Prénom');
$table->setHeaderContents(02'Nom');
$table->setHeaderContents(03'Site Web');
$table->setHeaderContents(04'E-mail');
$hrAttrs = array('bgcolor' => 'silver');
$table->setRowAttributes(0$hrAttrstrue);
$table->setColAttributes(0$hrAttrs);
?>

Affichage du tableau

C'est fait ! Notre tableau est terminé, maintenant, nous pouvons afficher son code HTML.

<?php
echo $table->toHTML();
?>

La sortie devrait ressembler à cela :


<!-- BEGIN TABLE LEVEL: 0 -->
<table width="600">
 <tr>
  <th bgcolor="silver">&nbsp;</th>
  <th bgcolor="silver">Prénom</th>
  <th bgcolor="silver">Nom</th>
  <th bgcolor="silver">Site Web</th>
  <th bgcolor="silver">E-mail</th>
 </tr>
 <tr>
  <th bgcolor="silver">0</th>
  <td>Bakken</td>
  <td>Stig</td>
  <td>n/a</td>
  <td>stig@example.com</td>
 </tr>
 <tr>
  <th bgcolor="silver">1</th>
  <td bgcolor="red">Merz</td>
  <td bgcolor="red">Alexander</td>
  <td bgcolor="red">alex.example.com</td>
  <td bgcolor="red">alex@example.com</td>
 </tr>
 <tr>
  <th bgcolor="silver">2</th>
  <td>Daniel</td>
  <td>Adam</td>
  <td>n/a</td>
  <td>n/a</td>
 </tr>
</table>
<!-- END TABLE LEVEL: 0 -->

Utilisaton de thead, tfoot et tbody

Si vous voulez diviser vos tableaux en groupes thead, tfoot et tbody, vous devez récupérer vos objets de tableaux en utilisant les fonctions getHeader(), getFooter() et getBody(), que vous utiliserez comme un objet de tableau normal.

<?php
$table 
= new HTML_Table();
$head =& $table->getHeader();
$foot =& $table->getFooter();
$body =& $table->getBody();
$head->setCellContents(...);
$body->setCellContents(...);
echo 
$table->toHtml();
?>

Dans cet exemple, il n'y a pas de contenu de défini pour le groupe tfoot. Donc, uniquement les groupes thead et tbody seront générés.

L'ordre de rendu est thead, puis tfoot et en dernier, tbody. Ce n'est pas un bogue mais une fonctionnalité désirée car c'est cet ordre qui est définit dans le standard (X)HTML.

HTML_Table (Previous) Answers to most Frequently Asked Questions (Next)
Last updated: Sun, 29 Aug 2010 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

There are no user contributed notes for this page.