FPDF tableau resultat requête

Résolu/Fermé
mimi8210 Messages postés 167 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 29 avril 2014 - 9 juin 2010 à 17:13
 tumes - 20 juil. 2016 à 17:07
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

mimi8210 Messages postés 167 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 29 avril 2014 10
Modifié par mimi8210 le 10/06/2010 à 15:58
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 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
0
mimi8210 Messages postés 167 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 29 avril 2014 10
10 juin 2010 à 11:41
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...
1
duweb Messages postés 352 Date d'inscription dimanche 30 mai 2010 Statut Membre Dernière intervention 6 mars 2014 72
Modifié par duweb le 10/06/2010 à 12:16
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()
1
duweb Messages postés 352 Date d'inscription dimanche 30 mai 2010 Statut Membre Dernière intervention 6 mars 2014 72
9 juin 2010 à 17:57
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mimi8210 Messages postés 167 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 29 avril 2014 10
10 juin 2010 à 09:33
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()
0
mimi8210 Messages postés 167 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 29 avril 2014 10
10 juin 2010 à 09:45
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()
0
duweb Messages postés 352 Date d'inscription dimanche 30 mai 2010 Statut Membre Dernière intervention 6 mars 2014 72
10 juin 2010 à 11:26
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
0
duweb Messages postés 352 Date d'inscription dimanche 30 mai 2010 Statut Membre Dernière intervention 6 mars 2014 72
10 juin 2010 à 11:59
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);
0
mimi8210 Messages postés 167 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 29 avril 2014 10
10 juin 2010 à 12:04
>_<' ok désolée d'être un boulet ^^

Cependant, il y a toujours le même message d'erreur.... =/
0
duweb Messages postés 352 Date d'inscription dimanche 30 mai 2010 Statut Membre Dernière intervention 6 mars 2014 72
10 juin 2010 à 12:08
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 :-))
0
mimi8210 Messages postés 167 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 29 avril 2014 10
10 juin 2010 à 12:14
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!
0
mimi8210 Messages postés 167 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 29 avril 2014 10
10 juin 2010 à 13:59
J'ai essayé, ça ne change rien, toujours le même message :
Fatal error: Call to undefined method FPDF::LoadData()

=(
0
duweb Messages postés 352 Date d'inscription dimanche 30 mai 2010 Statut Membre Dernière intervention 6 mars 2014 72
10 juin 2010 à 23:28
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
0
Sil te plait comment resoudre le ''Fatal error: Call to undefined method FPDF::LoadData() ''? je narrive pas a gérer cette erreur!!
0
mimi8210 Messages postés 167 Date d'inscription jeudi 14 mai 2009 Statut Membre Dernière intervention 29 avril 2014 10
11 juin 2010 à 10:38
Ah oui !
Merci !!
=D
0
MajorT971 Messages postés 3 Date d'inscription mercredi 2 avril 2008 Statut Membre Dernière intervention 31 mai 2012
31 mai 2012 à 18:11
Merci, vous m'avez été d'une grande aide ;)
0
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
0