[FPDF] DrawTableau Valeur dynamique
Bonjour à tous !!
Voilà, je rencontre un problème pour la création d'un tableau qui sera affiché dans un PDF.
Je m'explique :
J'ai un questionnaire qui est construit en php via une base de donnée. On m'a demandé de mettre ces resultats sous PDF. Après alors lu les différents tutaux, pas de problème, j'arrive à creer et à formater mon tableau, nickel !!
Mais voilà, maintenant, on me demande de faire un filtrage des réponses et de n'afficher que certaines données dans ce pdf. Quand cT tout le resultat, j'utilisais ce code: (je vous passe le debut de code ...)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
$contenuHeader = array(
95, 100,
$tabh6[1],"COLSPAN2",
);
$contenuTableau = array(
"".$tab6[2][1],"".$tab6[2][2]." ".$tab6[2][3],
"".$tab6[3][1],"".$tab6[3][2]." ".$tab6[3][3],
"".$tab6[4][1],"".$tab6[4][2]." ".$tab6[4][3],
"".$tab6[5][1],"".$tab6[5][2]." ".$tab6[5][3],
"".$tab6[6][1],"".$tab6[6][2]." ".$tab6[6][3],
"".$tab6[7][1],"".$tab6[7][2]." ".$tab6[7][3],
);
$PDF->drawTableau($PDF, $proprietesTableau, $proprieteHeader, $contenuHeader, $proprieteContenu, $contenuTableau); |
Maintenant, sur les 6 lignes que j'affichais, je ne dois en afficher 3 par ex (sachant que je ne sais pas d'avance qu'elles sont les lignes qui faudront afficher)
Dans la doc, j'ai lu que niveau syntaxique, normalement quand j'ai :
$contenuTableau = array(val1, val2);
ça équivaut à
$contenuTableau[0] = val1
$contenuTableau[1] = val2
Donc je me dis chouette, dans ce cas, je peux faire mes tests de valeurs en définissant mes variables comme cela
$contenuTableau[$i][0] = val1
$contenuTableau[$i][1] = val2
sachant que $i correspondant au nombre de ligne de mon tableau (en gros je peux avoir x ligne et 4 colonnes)
Je teste l'affichage du tableau, j'ai bien toutes mes valeurs, donc apres ce code, je rajoute :
$PDF->drawTableau($PDF, $proprietesTableau, $proprieteHeader, $contenuHeader, $proprieteContenu, $contenuTableau);
Quand j'ouvre mon pdf, il n'y a pas les données.
Je suis p-e naïve mais à moins que cela ne fonctionne pas comme cela, ça devrais marcher non ?
Ou sinon, existerait il un moyen de faire un truc du genre :
$contenuTableau = array(
if ($test=='toto') { "".$tab6[2][1],"".$tab6[2][2]." ".$tab6[2][3], }
else { }
);
Mais je ne connais pas la syntaxe et si c'est faisable surtout.
Quelqu'un pourrait il m'aider car là je ne vois pas comment mettre mon filtrage en place
1 pièce(s) jointe(s)
J'ai un problème analogue.
J'utilise phpToPDF pour créer des pages .PDF à propos d'un stock de matériel pédagogique. Voici mon code ; d'abord l'entête du tableau :
Code:
1 2 3 4 5 6
|
// Contenu du header du tableau.
$contenuHeader = array(
18, 20, 35, 80, 15, 22,
"Catégorie", "Référence", "Libellé", "Description", "Étagère", "Année d'acquisition",
); |
Puis je cherche mes données dans ma table SQL, pour les afficher dans le tableau :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
// Contenu du tableau.
$recherche=mysql_query("SELECT * FROM etc ... ");
$nombre=0;
$donnees="";
while($fiche=mysql_fetch_array($recherche))
{
$nombre++; // incrément de la variable nombre
$donnees=$donnees.'"'.$fiche['categorie'].'", "'.$fiche['ref'].'", "'.$fiche['libelle'].'", "'.$fiche['description'].'", "'.$fiche['lieu'].'", "'.$fiche['annee'].'", ';
}
$PDF->Ln();
$PDF->write(5,$donnees);// pour voir si ma variable $donnees a bien glané les valeurs que je veux ; j'enlèverai cette ligne quand ça marchera !
$PDF->Ln();
$contenuTableau = $donnees;
$PDF->Ln();
if ($nombre > 1) {$PDF->write(10,$nombre." références trouvées.");}
else {$PDF->write(10,$nombre." référence trouvée.");}
$PDF->Ln();
// D'abord le PDF, puis les propriétés globales du tableau.
// Ensuite, le header du tableau (propriétés et données) puis le contenu (propriétés et données)
$PDF->drawTableau($PDF, $proprietesTableau, $proprieteHeader, $contenuHeader, $proprieteContenu, $contenuTableau); |
Et voilà le résultat :
Le mot EPS apparaît avec une lettre par case, alors qu'il devrait être tout entier dans la case "Catégorie", et ainsi de suite pour les autres mots, et le tableau n'a qu'une ligne, alors que j'espérais qu'il en eût 17 ! Voyez la photo ! Au secours !