FPDF tableau resultat requête [Résolu/Fermé]

Signaler
Messages postés
167
Date d'inscription
jeudi 14 mai 2009
Statut
Membre
Dernière intervention
29 avril 2014
-
 tumes -
Bonjour,

Je souhaite faire un tableau du même genre que le deuxième du tutoriel 5 de ce site : http://www.fpdf.org/?lang=fr

Seulement je ne comprends pas grand chose au code, moi qui reste dans la logique du PHP/HTML ^^'. Donc pouvez vous me montrer et m'expliquer le code pour faire en sorte que mon tableau comprenne toutes les lignes de ma requête, par exemple: $req=mysql_query("SELECT * FROM CLIENT");

Je vous remercie par avance, en espérant que quelqu'un puisse prendre le temps de m'expliquer...


14 réponses

Messages postés
167
Date d'inscription
jeudi 14 mai 2009
Statut
Membre
Dernière intervention
29 avril 2014
10
J'ai trouvé un code, je l'ai adapté à ma base de données, et ça fonctionne très bien, alors voici le lien si ça peut aider :
https://codes-sources.commentcamarche.net/

Merci Beaucoup pour ta patience 'duweb' =)
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60596 internautes nous ont dit merci ce mois-ci

merci pour le lien. vous venez de me faire avancer d'un grand pas dans mes travaux. En faite je travaille sur la conception d'un logiciel de gestion d établissement (bulletins de notes, cours des enseignants, paiements des frais de scolarité) et je tenais a afficher les bulletins de note des élèves sous forme de pdf par classe afin qu'il soit facilement imprimable et que l 'on puisse garder une copie. J'ai essayer de travailler avec la librairie html2pdf sans succes (ne gère pas l'affichage des infos de la base de données) mais avec ce lien je vois que c'est bien possible avec FPDF. Vraiment merci
Messages postés
167
Date d'inscription
jeudi 14 mai 2009
Statut
Membre
Dernière intervention
29 avril 2014
10
J'ai fait les corrections, et j'ai ce message d'erreur :
Fatal error: Call to undefined method FPDF::LoadData() on line 90

Voici la ligne 90 et la fonction correspondante :

$data=$pdf->LoadData($data);

function LoadData($data)
{
// on récupère les articles commandés
$reqart=mysql_query("SELECT * FROM COMMANDER WHERE numerocommande='".$donneecommande['numerocommande']."' ");
while ($donnee = mysql_fetch_object($reqcommande))
{
$data[] = array($donnee['reference']->champ1,$donnee['libelle']->champ2,$donnee['prixht']->champ3,$donnee['quantite']->champ4,$donnee['tva']->champ5,$donnee['prixttc']->champ6);
}
return $data;
}

J'ai également essayé de ne rien mettre en paramètre dans les deux lignes où l'on trouve LoadData tels que : ' LoadData() ', mais ça ne change rien...
Messages postés
352
Date d'inscription
dimanche 30 mai 2010
Statut
Membre
Dernière intervention
6 mars 2014
71
j'avais pas vu tu l'avais deja mise

$data=$pdf->LoadData($data);
doit etre remplacée par
$data=$pdf->LoadData();

explication :LoadData($data);, ce $data n'existe pas puisque tu vas le créer dans la fonction

donc il faut aussi modifier la fonction
function LoadData($data)
remplacé par
function LoadData()
Messages postés
352
Date d'inscription
dimanche 30 mai 2010
Statut
Membre
Dernière intervention
6 mars 2014
71
pour cet exemple il utilise le fichier de données pays.txt disponible à cetet adresse :
http://www.fpdf.org/fr/tutorial/pays.txt

donc si tu veux utilise cet exemple :
- entete du tableau $header=array('Pays','Capitale','Superficie (km²)','Pop. (milliers)'); à modifier en fonction
- ta requete
- création d'un fichier
- insertion des données dans le fichier avec une boucle while de ta requete




tu peux aussi créer directement un tableau multidemensionnel avec la boucle while et modifier la fonction function "LoadData($file)"
tu mets seulement return $data; pour cette fonction
Messages postés
167
Date d'inscription
jeudi 14 mai 2009
Statut
Membre
Dernière intervention
29 avril 2014
10
Je comprends un peu mieux, mais j'ai encore beaucoup de mal à réaliser mon code, sachant que je voudrais réalisé mon tableau avec la deuxième méthode que tu m'as proposé (sachant aussi qu'avec ce "langage" que je ne maîtrise pas du tout, je ne sais pas comment modifier pour ajouter le while que tu m'as conseillé)... Voici mon code:

<?php
require('dossierFPDF/fpdf.php');
require('connexionBDD.php');

// on récupère les informations de la commande
$reqcommande=mysql_query("SELECT * FROM COMMANDE WHERE numerocommande='090610162545'");
$donneecommande=mysql_fetch_array($reqcommande);


class PDF extends FPDF
{

//Chargement des données
function LoadData()
{
// on récupère les articles commandés
$reqart=mysql_query("SELECT * FROM COMMANDER WHERE numerocommande='".$donneecommande['numerocommande']."' ");
$donneeart=mysql_fetch_array($reqart);
return $donneeart;
}

//Tableau amélioré
function ImprovedTable($header,$donneeart)
{
//Largeurs des colonnes
$w=array(40,40,40,40,40,40);
//En-tête
for($i=0;$i<count($header);$i++)
$this->Cell($w[$i],7,$header[$i],1,0,'C');
$this->Ln();
//Données
foreach($donneeart as $row)
{
$this->Cell($w[0],6,$row[0],'LR');
$this->Cell($w[1],6,$row[1],'LR');
$this->Cell($w[2],6,number_format($row[2],0,',',' '),'LR',0,'R');
$this->Cell($w[3],6,number_format($row[3],0,',',' '),'LR',0,'R');
$this->Cell($w[4],6,number_format($row[4],0,',',' '),'LR',0,'R');
$this->Cell($w[5],6,number_format($row[5],0,',',' '),'LR',0,'R');
$this->Ln();
}
//Trait de terminaison
$this->Cell(array_sum($w),0,'','T');
}

}


$pdf=new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',12);

$header=array('Référence','Libellé','Prix HT','TVA','Quantité','Prix TTC');
$pdf->ImprovedTable($header,$donneeart);

$pdf->Output();
?>


Message d'erreur affiché :
Fatal error: Call to undefined method FPDF::ImprovedTable()
Messages postés
167
Date d'inscription
jeudi 14 mai 2009
Statut
Membre
Dernière intervention
29 avril 2014
10
Avant la ligne $header=array(.......); j'ai ajouté ceci :
$donneeart=$pdf->LoadData($donneeart);

Nouveau message d'erreur :
Fatal error: Call to undefined method FPDF::LoadData()
Messages postés
352
Date d'inscription
dimanche 30 mai 2010
Statut
Membre
Dernière intervention
6 mars 2014
71
2 raisosn qui font que ca ne fonctionne pas :

-$donneecommande=mysql_fetch_array($reqcommande); retourne un tableau mais pas multidimensionnel
- $pdf->ImprovedTable($header,$donneeart); => $donneeart n'existe pas encore à ce moment

corrections :
- renommer les $donneeart en $data comme avant

- modification de la requete :
supprimer la ligne -> $donneecommande=mysql_fetch_array($reqcommande);
et la remplacer par :
while ($donnee = mysql_fetch_object($reqcommande)) {
    $data[] = array($donnee->champ1,$donnee->champ2,$donnee->champ3, autant que nécessaire);
}


et enfin modifier $pdf=new FPDF(); par $pdf=new PDF();


et ca fonctionnera
Messages postés
352
Date d'inscription
dimanche 30 mai 2010
Statut
Membre
Dernière intervention
6 mars 2014
71
champ1, champ2, étaient des exemples car je ne connaissais pas le nom des champs de la table
donc $data dans ton cas doit s'écrire

$data[] = array($donnee->reference,$donnee->libelle,$donnee->prixht,$donnee->quantite,$donnee->tva,$donnee->prixttc);
Messages postés
167
Date d'inscription
jeudi 14 mai 2009
Statut
Membre
Dernière intervention
29 avril 2014
10
>_<' ok désolée d'être un boulet ^^

Cependant, il y a toujours le même message d'erreur.... =/
Messages postés
352
Date d'inscription
dimanche 30 mai 2010
Statut
Membre
Dernière intervention
6 mars 2014
71
t'as modifié $pdf=new FPDF(); par $pdf=new PDF(); ?
si tu peux mettre la ligne 90 ou tout le code (sans le mot de passe bdd :-))
Messages postés
167
Date d'inscription
jeudi 14 mai 2009
Statut
Membre
Dernière intervention
29 avril 2014
10
Quand je fais la modification $pdf=new PDF(); il y a ce message d'erreur:
Fatal error: Class 'PDF' not found in E:\SiteEmilie\bondecommande.php on line 10 (ligne 10 est la ligne de la modif)

Voici le code de la ligne 90 :
$data=$pdf->LoadData($data);

Et voici le code 'entier' :

// on récupère les informations de la commande
$reqcommande=mysql_query("SELECT * FROM COMMANDE WHERE numerocommande='090610162545'");
$donneecommande=mysql_fetch_array($reqcommande);

class PDF extends FPDF
{
//Chargement des données
function LoadData()
{
// on récupère les articles commandés
$reqart=mysql_query("SELECT * FROM COMMANDER WHERE numerocommande='".$donneecommande['numerocommande']."' ");
while ($donnee = mysql_fetch_object($reqcommande))
{
$data[]=array($donnee->reference,$donnee->libelle,$donnee->prixht,$donnee->quantite,$donnee->tva,$donnee->prixttc);
}
return $data;
}

//Tableau amélioré
function ImprovedTable($header,$data)
{
//Largeurs des colonnes
$w=array(40,40,40,40,40,40);
//En-tête
for($i=0;$i<count($header);$i++)
$this->Cell($w[$i],7,$header[$i],1,0,'C');
$this->Ln();
//Données
foreach($data as $row)
{
$this->Cell($w[0],6,$row[0],'LR');
$this->Cell($w[1],6,$row[1],'LR');
$this->Cell($w[2],6,number_format($row[2],0,',',' '),'LR',0,'R');
$this->Cell($w[3],6,number_format($row[3],0,',',' '),'LR',0,'R');
$this->Cell($w[4],6,number_format($row[4],0,',',' '),'LR',0,'R');
$this->Cell($w[5],6,number_format($row[5],0,',',' '),'LR',0,'R');
$this->Ln();
}
//Trait de terminaison
$this->Cell(array_sum($w),0,'','T');
}
}


$pdf=new FPDF();
$pdf->AddPage();


//Boucle sur les resultats
$data=$pdf->LoadData($data);
$header=array('Référence','Libellé','Prix HT','TVA','Quantité','Prix TTC');
$pdf->ImprovedTable($header,$data);

// Affichage du fichier pdf
$pdf->Output();


Je te remercie de m'accorder de ton temps!
Messages postés
167
Date d'inscription
jeudi 14 mai 2009
Statut
Membre
Dernière intervention
29 avril 2014
10
J'ai essayé, ça ne change rien, toujours le même message :
Fatal error: Call to undefined method FPDF::LoadData()

=(
Messages postés
352
Date d'inscription
dimanche 30 mai 2010
Statut
Membre
Dernière intervention
6 mars 2014
71
pour ne pas mourir idiot je t'ai mis une image avec les erreurs. je n'ai pas mis toutes les corrections puisque t'as trouvé une solution
http://imagik.fr/view/260157
Sil te plait comment resoudre le ''Fatal error: Call to undefined method FPDF::LoadData() ''? je narrive pas a gérer cette erreur!!
Messages postés
167
Date d'inscription
jeudi 14 mai 2009
Statut
Membre
Dernière intervention
29 avril 2014
10
Ah oui !
Merci !!
=D
Messages postés
3
Date d'inscription
mercredi 2 avril 2008
Statut
Membre
Dernière intervention
31 mai 2012

Merci, vous m'avez été d'une grande aide ;)
j'ai pris exemple sur votre code mais j'ai une erreur php

Warning mysql_fetch_object(): suppplied argument is not a valid Mysql result ressource

pourtant j'ai bien fais la boucle et entre les lignes dans un tableau pour le $data