<?php

// ------------------------------------------------------------------------- //
// Afficher des données dans un tableau paramétrable : en nb de colonnes ou  //
// en nb de lignes, et en orientation (de la gauche vers la droite ou du     //
// haut vers le bas.                                                         //
// ------------------------------------------------------------------------- //
// Auteur: J-Pierre DEZELUS                                                  //
// Email:  jpdezelus@phpinfo.net                                             //
// Web:    http://www.phpinfo.net/                                           //
// ------------------------------------------------------------------------- //


// mettre à zéro si calcul automatique à partir de nbcol
if (!isset($nblig)) $nblig = 0;

// mettre à zéro si calcul automatique à partir de nblig
if (!isset($nbcol)) $nbcol = 3;

// dessiner les cellules ne contenant pas de valeurs en fin de tableau
if (!isset($completer)) $completer = 1;

// 1 => du haut vers le bas puis de la gauche vers la droite
// 0 => de la gauche vers la droite puis du haut vers le bas
if (!isset($vertical)) $vertical = 1;


// récupération des n valeurs dans $tValeurs[]
// ...
// ...

// Exemple de valeurs
$tValeurs = Array(2, 5, 9, 13, 15, 17, 18, 19, 23, 24, 27, 29, 31, 32, 35, 37,
                  
39, 43, 48, 49, 52, 55, 57, 58, 59, 62, 64, 66, 68, 70, 73);

$nb_total = sizeof($tValeurs);

// calcul des limites
if ($nblig != 0)
{
    
$nbcol = ceil($nb_total / $nblig);
}
elseif (
$nbcol != 0)
{
    
$nblig = ceil($nb_total / $nbcol);
}
else
{
    echo
"Nb de lignes et Nb de colonnes indéfinis !";
    exit;
}

echo
"<PRE>";
echo
"Nb valeurs  = ".$nb_total."\n\n";
echo
"Nb Lignes   = ".$nblig."\n";
echo
"Nb Colonnes = ".$nbcol."\n\n";
echo
"Affichage   = ".($vertical ? 'VERTICAL' : 'HORIZONTAL')."\n";
echo
"Completer   = ".($completer ? 'OUI' : 'NON');
echo
"</PRE>\n";

echo
"<TABLE CELLSPACING=1>\n\n";

$limite = $completer ? $nbcol*$nblig : $nb_total;

if (
$vertical)
{
    
// affichage vertical
    
for ($cpt = 0; $cpt < $limite; $cpt++)
    {
        
$col = (int)($cpt / $nblig) + 1;

        
$lig = ($cpt % $nblig) + 1;

        
$valeur = ($cpt < $nb_total) ? $tValeurs[$cpt] : '';
        
        if (
$col == 1) $ligne[$lig] = "<TR BGCOLOR='#DADADA'>";
        
$ligne[$lig] .= "<TD>&nbsp;".$valeur."&nbsp;</TD>";
        if (
$col == $nbcol) $ligne[$lig] .= "</TR>\n\n";
    }
    for (
$cpt = 1; $cpt <= sizeof($ligne); $cpt++)
    {
        echo
$ligne[$cpt];
    }
}
else
{
    
// affichage horizontal
    
for ($cpt = 0; $cpt < $limite; $cpt++)
    {
        
$col = ($cpt % $nbcol) + 1;

        
$valeur = ($cpt < $nb_total) ? $tValeurs[$cpt] : '';

        if (
$col == 1) echo "<TR BGCOLOR='#DADADA'>";
        echo
"<TD>&nbsp;".$valeur."&nbsp;</TD>";
        if (
$col == $nbcol) echo "</TR>\n\n";
    }
}
echo
"</TABLE>\n";

?>