IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[FPDF] afficher un nombre défini d'article par page


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 54
    Points
    54
    Par défaut [FPDF] 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.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    620
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

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

    Hugo

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    j'ai simplifié mon code caril est trop long:
    table tarif pour stocker les produits

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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();

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    620
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 620
    Points : 453
    Points
    453
    Par défaut
    Est-ce que tu ne peux pas faire un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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();
     
       }

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    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).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Afficher le nombre de client actif par magasin
    Par Stéphane_MAN dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 09/08/2016, 17h22
  2. [MySQL] Nombre défini de réponse par page
    Par Lord Silk dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 30/03/2009, 21h41
  3. articles par page
    Par esther60 dans le forum Langage
    Réponses: 3
    Dernier message: 30/05/2008, 01h22
  4. [MySQL] Limiter le nombre d'affichage produits par page
    Par Aizen64 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/12/2007, 14h41
  5. Nombre limite de formulaire par page html/php
    Par asmouma dans le forum Langage
    Réponses: 3
    Dernier message: 06/02/2007, 18h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo