1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
|
function ToHTML($T,$option="")
{
if (! is_array($T))
return;
// Parcours de la structure pour recherche du plus grand nombre de colonnes
reset($T); $nbCol=0;
while(list($k,$v)=each($T))
{
if (count($v)>$nbCol) $nbCol=count($v);
if ($v[labels]) // Cherche aussi le nombre de colonne dans le nombre d'arg du params labels
{
$nb=count(explode(',',$v[labels]));
if ($nb>$nbCol) $nbCol=$nb;
}
}
// Test du paramètre optionnel option
if ($option == "")
$option_ok = "CLASS=TH1";
elseif (ereg("^[0-9]+[%]?$",$option))
$option_ok = "wIDTH='$option' CLASS=TH1";
elseif (stristr($option,"class"))
$option_ok = $option; // l'option spécifie une class + eventuellement des evenement, etc ... on laisse tel quel
else
$option_ok = "CLASS=TH1 $option"; // l'option n'a pas de class mais des styles, des evenement, etc ...
// Création du code HTML
$H = "<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 $option_ok>\n";
reset($T);
$i=1;
while(list($k,$v)=each($T)) // Traitement de toutes les lignes du tableau
{
$H.= "<TR ID=TR$i>\n"; $i++;
reset($v);
switch (key($v))
{
case 'titre' : $H .= "<TD VALIGN='top' COLSPAN=$nbCol CLASS=aTitre ".$v['option'.key($v)].">" . $v[titre] . "</TD>\n"; break;
case 'separateur' : $H .= "<TD VALIGN='top' COLSPAN=$nbCol CLASS=aSep ".$v['option'.key($v)]."><li>".$v[separateur]."</li></TD>\n"; break;
case 'trait' : list($height,$couleur)=explode(":",$v[trait]);
$H .= "<TD VALIGN='top' COLSPAN=$nbCol CLASS=aTitre STYLE='Background-Color:$couleur;' ".$v['option'.key($v)]."><IMG SRC='img/spacer.gif' WIDTH='1' HEIGHT='$height'></TD>\n"; break;
case 'comm' : $H .= "<TD VALIGN='top' COLSPAN=$nbCol CLASS=aCom ".$v['option'.key($v)].">" . $v[comm] . "</TD>\n";break;
case 'link' : $H .= "<TD VALIGN='top' COLSPAN=$nbCol CLASS=aLink ".$v['option'.key($v)].">" . $v[link] . "</TD>\n"; break;
case 'linkD' : $H .= "<TD VALIGN='top' COLSPAN=$nbCol CLASS=aLink ALIGN=Right ".$v['option'.key($v)].">" . $v[linkD] . "</TD>\n"; break;
case 'linkC' : $H .= "<TD VALIGN='top' COLSPAN=$nbCol CLASS=aLink ALIGN=Center ".$v['option'.key($v)].">" . $v[linkC] . "</TD>\n"; break;
case 'labels' : $begin = "<TD VALIGN='middle' CLASS=aTitre ".$v['option'.key($v)].">";
$end = "</TD>\n";
$H .= $begin . join ("$end$begin",explode(',',$v[labels])) . $end;
break;
default : while (list($t,$u) = each ($v)) // Traitement squentiel de tous les élements de la ligne
{
$t2 = ereg_replace ("[0-9]", "", $t); // Supprime les nums de champs
//$u = eregi_replace ("<br>","<br> ",$u);
//if (!eregi("^<table", $u))
// $u = " $u ";
switch($t2)
{
case 'fusionlabel':
$num = ereg_replace ("fusionlabel", "", $t);
$cols = (int)($num[0].$num[1]);
$H .= "<TD COLSPAN='$cols' CLASS=aTitre ".$v['option'.$t].">$u</TD>\n";
break;
case 'fusionval':
$num = ereg_replace ("fusionval", "", $t);
$cols = (int)($num[0].$num[1]);
$H .= "<TD COLSPAN='$cols' CLASS=aVal ".$v['option'.$t].">$u</TD>\n";
break;
case 'fusiondesc':
$num = ereg_replace ("fusiondesc", "", $t);
$cols = (int)($num[0].$num[1]);
$H .= "<TD COLSPAN='$cols' CLASS=aLib ".$v['option'.$t].">$u</TD>\n";
break;
case 'fusiondescD':
$num = ereg_replace ("fusiondescD", "", $t);
$cols = (int)($num[0].$num[1]);
$H .= "<TD COLSPAN='$cols' CLASS=aLib ALIGN=right ".$v['option'.$t].">$u</TD>\n";
break;
case 'fusionsep':
$num = ereg_replace ("fusionval", "", $t);
$cols = (int)($num[0].$num[1]);
$H .= "<TD VALIGN='top' COLSPAN='$cols' CLASS=aSep WIDTH='0' ".$v['option'.$t]."></TD>\n";
break;
case 'label': $H .= "<TD VALIGN='top' CLASS=aTitre ".$v['option'.$t].">$u</TD>\n"; break;
case 'desc': $H .= "<TD CLASS=aLib ".$v['option'.$t].">$u</TD>\n"; break;
case 'descC': $H .= "<TD ALIGN='center' CLASS=aLib ".$v['option'.$t].">$u</TD>\n"; break;
case 'descD': $H .= "<TD ALIGN='right' CLASS=aLib ".$v['option'.$t].">$u</TD>\n"; break;
case 'val': $H .= "<TD CLASS=aVal ".$v['option'.$t].">$u</TD>\n"; break;
/* centré */ case 'valC': $H .= "<TD ALIGN='center' CLASS=aVal ".$v['option'.$t].">$u</TD>\n"; break;
/* centré rouge */ case 'valCR': $H .= "<TD CLASS=aValX ALIGN=Center ".$v['option'.$t].">$u</TD>\n"; break;
/* centré vert */ case 'valCB': $H .= "<TD CLASS=aValD ALIGN=Center ".$v['option'.$t].">$u</TD>\n"; break;
/* droite */ case 'valD': $H .= "<TD CLASS=aVal ALIGN=Right ".$v['option'.$t].">$u</TD>\n"; break;
/*gauche*/ case 'valG': $H .= "<TD CLASS=aValG ALIGN=Left ".$v['option'.$t].">$u</TD>\n"; break;
/* bas */ case 'valB': $H .= "<TD CLASS=aVal ALIGN='center' ".$v['option'.$t].">$u</TD>\n"; break;
case 'act': $H .= "<TD CLASS=aLink ".$v['option'.$t].">". $u . "</TD>\n"; break;
}
}
}
$H.= "</TR>\n";
}
$H .= "</TABLE>\n";
return $H;
} |
Partager