Server : Apache System : Linux webd348.cluster026.gra.hosting.ovh.net 5.15.148-ovh-vps-grsec-zfs-classid #1 SMP Thu Feb 8 09:41:04 UTC 2024 x86_64 User : hednacluml ( 122243) PHP Version : 8.3.9 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl Directory : /home/hednacluml/universe/lib/h5c1accba-fpdf181/tutorial/ |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Tableaux</title> <link type="text/css" rel="stylesheet" href="../fpdf.css"> </head> <body> <h1>Tableaux</h1> Ce tutoriel montre diff�rentes mani�res de r�aliser des tableaux. <div class="source"> <pre><code><?php <span class="kw">require(</span><span class="str">'fpdf.php'</span><span class="kw">); class </span>PDF <span class="kw">extends </span>FPDF <span class="kw">{ </span><span class="cmt">// Chargement des donn�es </span><span class="kw">function </span>LoadData<span class="kw">(</span>$file<span class="kw">) { </span><span class="cmt">// Lecture des lignes du fichier </span>$lines <span class="kw">= </span>file<span class="kw">(</span>$file<span class="kw">); </span>$data <span class="kw">= array(); foreach(</span>$lines <span class="kw">as </span>$line<span class="kw">) </span>$data<span class="kw">[] = </span>explode<span class="kw">(</span><span class="str">';'</span><span class="kw">,</span>trim<span class="kw">(</span>$line<span class="kw">)); return </span>$data<span class="kw">; } </span><span class="cmt">// Tableau simple </span><span class="kw">function </span>BasicTable<span class="kw">(</span>$header<span class="kw">, </span>$data<span class="kw">) { </span><span class="cmt">// En-t�te </span><span class="kw">foreach(</span>$header <span class="kw">as </span>$col<span class="kw">) </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>40<span class="kw">,</span>7<span class="kw">,</span>$col<span class="kw">,</span>1<span class="kw">); </span>$<span class="kw">this-></span>Ln<span class="kw">(); </span><span class="cmt">// Donn�es </span><span class="kw">foreach(</span>$data <span class="kw">as </span>$row<span class="kw">) { foreach(</span>$row <span class="kw">as </span>$col<span class="kw">) </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>40<span class="kw">,</span>6<span class="kw">,</span>$col<span class="kw">,</span>1<span class="kw">); </span>$<span class="kw">this-></span>Ln<span class="kw">(); } } </span><span class="cmt">// Tableau am�lior� </span><span class="kw">function </span>ImprovedTable<span class="kw">(</span>$header<span class="kw">, </span>$data<span class="kw">) { </span><span class="cmt">// Largeurs des colonnes </span>$w <span class="kw">= array(</span>40<span class="kw">, </span>35<span class="kw">, </span>45<span class="kw">, </span>40<span class="kw">); </span><span class="cmt">// En-t�te </span><span class="kw">for(</span>$i<span class="kw">=</span>0<span class="kw">;</span>$i<span class="kw"><</span>count<span class="kw">(</span>$header<span class="kw">);</span>$i<span class="kw">++) </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>$i<span class="kw">],</span>7<span class="kw">,</span>$header<span class="kw">[</span>$i<span class="kw">],</span>1<span class="kw">,</span>0<span class="kw">,</span><span class="str">'C'</span><span class="kw">); </span>$<span class="kw">this-></span>Ln<span class="kw">(); </span><span class="cmt">// Donn�es </span><span class="kw">foreach(</span>$data <span class="kw">as </span>$row<span class="kw">) { </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>0<span class="kw">],</span>6<span class="kw">,</span>$row<span class="kw">[</span>0<span class="kw">],</span><span class="str">'LR'</span><span class="kw">); </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>1<span class="kw">],</span>6<span class="kw">,</span>$row<span class="kw">[</span>1<span class="kw">],</span><span class="str">'LR'</span><span class="kw">); </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>2<span class="kw">],</span>6<span class="kw">,</span>number_format<span class="kw">(</span>$row<span class="kw">[</span>2<span class="kw">],</span>0<span class="kw">,</span><span class="str">','</span><span class="kw">,</span><span class="str">' '</span><span class="kw">),</span><span class="str">'LR'</span><span class="kw">,</span>0<span class="kw">,</span><span class="str">'R'</span><span class="kw">); </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>3<span class="kw">],</span>6<span class="kw">,</span>number_format<span class="kw">(</span>$row<span class="kw">[</span>3<span class="kw">],</span>0<span class="kw">,</span><span class="str">','</span><span class="kw">,</span><span class="str">' '</span><span class="kw">),</span><span class="str">'LR'</span><span class="kw">,</span>0<span class="kw">,</span><span class="str">'R'</span><span class="kw">); </span>$<span class="kw">this-></span>Ln<span class="kw">(); } </span><span class="cmt">// Trait de terminaison </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>array_sum<span class="kw">(</span>$w<span class="kw">),</span>0<span class="kw">,</span><span class="str">''</span><span class="kw">,</span><span class="str">'T'</span><span class="kw">); } </span><span class="cmt">// Tableau color� </span><span class="kw">function </span>FancyTable<span class="kw">(</span>$header<span class="kw">, </span>$data<span class="kw">) { </span><span class="cmt">// Couleurs, �paisseur du trait et police grasse </span>$<span class="kw">this-></span>SetFillColor<span class="kw">(</span>255<span class="kw">,</span>0<span class="kw">,</span>0<span class="kw">); </span>$<span class="kw">this-></span>SetTextColor<span class="kw">(</span>255<span class="kw">); </span>$<span class="kw">this-></span>SetDrawColor<span class="kw">(</span>128<span class="kw">,</span>0<span class="kw">,</span>0<span class="kw">); </span>$<span class="kw">this-></span>SetLineWidth<span class="kw">(</span>.3<span class="kw">); </span>$<span class="kw">this-></span>SetFont<span class="kw">(</span><span class="str">''</span><span class="kw">,</span><span class="str">'B'</span><span class="kw">); </span><span class="cmt">// En-t�te </span>$w <span class="kw">= array(</span>40<span class="kw">, </span>35<span class="kw">, </span>45<span class="kw">, </span>40<span class="kw">); for(</span>$i<span class="kw">=</span>0<span class="kw">;</span>$i<span class="kw"><</span>count<span class="kw">(</span>$header<span class="kw">);</span>$i<span class="kw">++) </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>$i<span class="kw">],</span>7<span class="kw">,</span>$header<span class="kw">[</span>$i<span class="kw">],</span>1<span class="kw">,</span>0<span class="kw">,</span><span class="str">'C'</span><span class="kw">,</span>true<span class="kw">); </span>$<span class="kw">this-></span>Ln<span class="kw">(); </span><span class="cmt">// Restauration des couleurs et de la police </span>$<span class="kw">this-></span>SetFillColor<span class="kw">(</span>224<span class="kw">,</span>235<span class="kw">,</span>255<span class="kw">); </span>$<span class="kw">this-></span>SetTextColor<span class="kw">(</span>0<span class="kw">); </span>$<span class="kw">this-></span>SetFont<span class="kw">(</span><span class="str">''</span><span class="kw">); </span><span class="cmt">// Donn�es </span>$fill <span class="kw">= </span>false<span class="kw">; foreach(</span>$data <span class="kw">as </span>$row<span class="kw">) { </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>0<span class="kw">],</span>6<span class="kw">,</span>$row<span class="kw">[</span>0<span class="kw">],</span><span class="str">'LR'</span><span class="kw">,</span>0<span class="kw">,</span><span class="str">'L'</span><span class="kw">,</span>$fill<span class="kw">); </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>1<span class="kw">],</span>6<span class="kw">,</span>$row<span class="kw">[</span>1<span class="kw">],</span><span class="str">'LR'</span><span class="kw">,</span>0<span class="kw">,</span><span class="str">'L'</span><span class="kw">,</span>$fill<span class="kw">); </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>2<span class="kw">],</span>6<span class="kw">,</span>number_format<span class="kw">(</span>$row<span class="kw">[</span>2<span class="kw">],</span>0<span class="kw">,</span><span class="str">','</span><span class="kw">,</span><span class="str">' '</span><span class="kw">),</span><span class="str">'LR'</span><span class="kw">,</span>0<span class="kw">,</span><span class="str">'R'</span><span class="kw">,</span>$fill<span class="kw">); </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>$w<span class="kw">[</span>3<span class="kw">],</span>6<span class="kw">,</span>number_format<span class="kw">(</span>$row<span class="kw">[</span>3<span class="kw">],</span>0<span class="kw">,</span><span class="str">','</span><span class="kw">,</span><span class="str">' '</span><span class="kw">),</span><span class="str">'LR'</span><span class="kw">,</span>0<span class="kw">,</span><span class="str">'R'</span><span class="kw">,</span>$fill<span class="kw">); </span>$<span class="kw">this-></span>Ln<span class="kw">(); </span>$fill <span class="kw">= !</span>$fill<span class="kw">; } </span><span class="cmt">// Trait de terminaison </span>$<span class="kw">this-></span>Cell<span class="kw">(</span>array_sum<span class="kw">(</span>$w<span class="kw">),</span>0<span class="kw">,</span><span class="str">''</span><span class="kw">,</span><span class="str">'T'</span><span class="kw">); } } </span>$pdf <span class="kw">= new </span>PDF<span class="kw">(); </span><span class="cmt">// Titres des colonnes </span>$header <span class="kw">= array(</span><span class="str">'Pays'</span><span class="kw">, </span><span class="str">'Capitale'</span><span class="kw">, </span><span class="str">'Superficie (km�)'</span><span class="kw">, </span><span class="str">'Pop. (milliers)'</span><span class="kw">); </span><span class="cmt">// Chargement des donn�es </span>$data <span class="kw">= </span>$pdf<span class="kw">-></span>LoadData<span class="kw">(</span><span class="str">'pays.txt'</span><span class="kw">); </span>$pdf<span class="kw">-></span>SetFont<span class="kw">(</span><span class="str">'Arial'</span><span class="kw">,</span><span class="str">''</span><span class="kw">,</span>14<span class="kw">); </span>$pdf<span class="kw">-></span>AddPage<span class="kw">(); </span>$pdf<span class="kw">-></span>BasicTable<span class="kw">(</span>$header<span class="kw">,</span>$data<span class="kw">); </span>$pdf<span class="kw">-></span>AddPage<span class="kw">(); </span>$pdf<span class="kw">-></span>ImprovedTable<span class="kw">(</span>$header<span class="kw">,</span>$data<span class="kw">); </span>$pdf<span class="kw">-></span>AddPage<span class="kw">(); </span>$pdf<span class="kw">-></span>FancyTable<span class="kw">(</span>$header<span class="kw">,</span>$data<span class="kw">); </span>$pdf<span class="kw">-></span>Output<span class="kw">(); </span>?></code></pre> </div> <p class='demo'><a href='tuto5.php' target='_blank' class='demo'>[D�mo]</a></p> Un tableau n'�tant qu'un ensemble de cellules, il est naturel de les construire � partir de ces derni�res. Le premier est r�alis� de la mani�re la plus �l�mentaire qui soit : de simples cellules encadr�es, toutes de la m�me taille et align�es � gauche. Le r�sultat est rudimentaire mais tr�s rapide � obtenir. <br> <br> Le deuxi�me tableau apporte quelques am�liorations : chaque colonne a sa propre largeur, les titres sont centr�s et les nombres cadr�s � droite. De plus, les traits horizontaux ont �t� enlev�s. Ceci est r�alis� gr�ce au param�tre <code>border</code> de la m�thode <a href='../doc/cell.htm'>Cell()</a>, qui permet de sp�cifier quels bords de la cellule doivent �tre trac�s. Dans le cas pr�sent, on d�sire les bords gauches (<code>L</code>) et droits (<code>R</code>). Reste le probl�me du trait horizontal final pour refermer le tableau. Il y a deux possibilit�s : soit tester dans la boucle si on se trouve sur la derni�re ligne, auquel cas on utilise <code>LRB</code> pour le param�tre <code>border</code> ; soit, comme c'est fait ici, ajouter le trait une fois la boucle termin�e. <br> <br> Le troisi�me tableau est semblable au deuxi�me mais utilise des couleurs. Il suffit pour cela de pr�ciser les couleurs de fond, de texte et de trait souhait�es. L'alternance de couleur pour les lignes est obtenue en utilisant des cellules � fond alternativement color� et transparent. </body> </html>