Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > PDF > FPDF
FPDF Forum d'entraide pour la bibliothèque FPDF permettant de générer des documents PDF en PHP. Avant de poster -> tutoriels FPDF
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/05/2008, 16h21   #1
Membre à l'essai
 
Inscription : mars 2007
Messages : 85
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 85
Points : 20
Points : 20
Par défaut afficher un nombre défini d'article par page

Bonjour,

je réalise une facture avec la librairie FPDF. Actuellement, j'affiche 20 produits dans un tableau(reference,libelle,prix etc) sur une page. Par contre, je souhaite qu'à partir de 21 produits que le 21ème produit soit affiché dans un tableau sur une autre page, car il n'y a plus assez de place sur la 1ere page. Je voulais savoir donc comment faire pour afficher 20 produits par page sachant que j'utilise une base de données MySQL.
kluck3000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 16h42   #2
Membre éprouvé
 
Inscription : août 2006
Messages : 590
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2006
Messages : 590
Points : 401
Points : 401
à quoi ressemble le code ? Mais a priori, il faut boucler par paquet de 20 et créer une page tous les 20...

Hugo
[Hugo] est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 17h04   #3
Membre à l'essai
 
Inscription : mars 2007
Messages : 85
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 85
Points : 20
Points : 20
j'ai simplifié mon code caril est trop long:
table tarif pour stocker les produits

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
25
26
27
28
29
30
31
32
33
 
 
function ImprovedTable($header,$tab)
{
	$retour3="SELECT * FROM COMMANDE,TARIF WHERE COMMANDE.id_com=TARIF.id_com";
	$w=array(20,130,15,10,15);
	while ($donnees3 = mysql_fetch_array($retour3))
		{
			/** Données du tableau **/
			$reference=$donnees3['reference'];
			$libelle_produit=$donnees3['libelle'];
			$prix_de_vente_ht=$donnees3['prix_de_vente_ht'];
			$quantite=$donnees3['quantite'];
			$total_ht_produit=$donnees3[15];
 
 
			$this->Cell($w[0],5,$reference,1,0,'L');
			$this->Cell($w[1],5,$libelle_produit,1,0,'L'); 	
	        $this->Cell($w[2],5,$prix_de_vente_ht,1,0,'R'); 
	        $this->Cell($w[3],5,$quantite,1,0,'C');
	        $this->Cell($w[4],5,$total_ht_produit,1,0,'R');
	        $this->Ln();
		}	
}		
 
//Instanciation de la classe dérivée
$pdf=new PDF();
//Titres des colonnes
$header=array('Référence','Désignation','PU HT','Qté','Total HT');
$pdf->AddFont('Verdana','','verdana.php');
$pdf->AddPage();
$pdf->ImprovedTable($header,$tab);
$pdf->Output();
kluck3000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/05/2008, 17h17   #4
Membre éprouvé
 
Inscription : août 2006
Messages : 590
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : août 2006
Messages : 590
Points : 401
Points : 401
Est-ce que tu ne peux pas faire un truc du genre :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Instanciation de la classe dérivée
$pdf=new PDF();
//Titres des colonnes
$header=array('Référence','Désignation','PU HT','Qté','Total HT');
$pdf->AddFont('Verdana','','verdana.php');
$i = 0;
$taille = count($tab);
while($i < $taille){
$tab_temp[] = $tab[i];
if(count($tab_temp) == 20 || $i == $taille){
    $pdf->AddPage();
    $pdf->ImprovedTable($header,$tab_temp);
    unset($tab_temp);
    }
$i++;
}
$pdf->Output();
Je sais pas si c'est très propre, mais bon...
[Hugo] est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 10h32   #5
Membre à l'essai
 
Inscription : mars 2007
Messages : 85
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 85
Points : 20
Points : 20
En fait dans ma fonction j'ai passé la variable $tab mais en réalité de je ne l'utilise plus.Donc je viens de faire un autre test directement dans ma fonction, mais je n'arrive pas à faire un modulo pour pouvoir afficher 20 produits par page dans un tableau. si je teste $j%20 il me retourne 1 produit et si je teste $j%2 il me retourne 10 produits (dans les 2 cas c'est sur la 1ere page). De plus, ici je n'arrive pas non plus à gérer le changement de page dès que j'ai atteint le nombre de produits fixés sur une page


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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
 
function ImprovedTable($header)
{
   $retour3="SELECT * FROM COMMANDE,TARIF WHERE COMMANDE.id_com=TARIF.id_com";
   $w=array(20,130,15,10,15);
 $j=0 
  while ($donnees3 = mysql_fetch_array($retour3))
   {
	/** Données du tableau **/
	$reference=$donnees3['reference'];
	$libelle_produit=$donnees3['libelle'];
	$prix_de_vente_ht=$donnees3['prix_de_vente_ht'];
	$quantite=$donnees3['quantite'];
	$total_ht_produit=$donnees3[15];
 
        $j++;
        if(($j % 20) == 0)
	{	
             $this->Cell($w[0],5,$reference,1,0,'L');
             $this->Cell($w[1],5,$libelle_produit,1,0,'L'); 	
	     $this->Cell($w[2],5,$prix_de_vente_ht,1,0,'R'); 
	     $this->Cell($w[3],5,$quantite,1,0,'C');
	     $this->Cell($w[4],5,$total_ht_produit,1,0,'R');
	     $this->Ln();
 
	}
   }
}		
 
//Instanciation de la classe dérivée
$pdf=new PDF();
//Titres des colonnes
$header=array('Référence','Désignation','PU HT','Qté','Total HT');
$pdf->AddFont('Verdana','','verdana.php');
$pdf->AddPage();
$pdf->ImprovedTable($header);
$pdf->Output();
j'ai essayé une autre méthode qui me donne un bon résultat mais qui n'est pas assez évolué car je devrais faire des tests à l'infini on va dire :

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
25
26
27
28
 
 
$j=0 
while ($donnees3 = mysql_fetch_array($retour3))
{       
  $j++;
  if(($j>0) && ($j<21))	
  {	
       $this->Cell($w[0],5,$reference,1,0,'L');
        $this->Cell($w[1],5,$libelle_produit,1,0,'L'); 	
        $this->Cell($w[2],5,$prix_de_vente_ht,1,0,'R'); 
        $this->Cell($w[3],5,$quantite,1,0,'C');
        $this->Cell($w[4],5,$total_ht_produit,1,0,'R');
        $this->Ln();
 
   }
 
  if(($j>20)	
  {	
        $this->AddPage(); //j'affiche le 21eme produit sur une autre page
        $this->Cell($w[0],5,$reference,1,0,'L');
        $this->Cell($w[1],5,$libelle_produit,1,0,'L'); 	
        $this->Cell($w[2],5,$prix_de_vente_ht,1,0,'R'); 
        $this->Cell($w[3],5,$quantite,1,0,'C');
        $this->Cell($w[4],5,$total_ht_produit,1,0,'R');
        $this->Ln();
 
   }
kluck3000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/05/2008, 12h00   #6
Membre à l'essai
 
Inscription : mars 2007
Messages : 85
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 85
Points : 20
Points : 20
j'ai résolu le problème, j'affiche mes produits sur une page et s'il n'y a pas assez de place, et bien la suite des produits est créée automatiquement sur les autres pages. j'ai simplement renommer la fonction footer pour pouvoir l'appeler dans mon code au bon moment c'est à dire avant l'affichage (output).
kluck3000 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h48.


 
 
 
 
Partenaires

Hébergement Web