calculer le total d'une colonne...

Répondre
reg3
le 05/11/2009 à 12:14
reg3
Bonjour,

J'essaie de calculer (depuis plusieurs jours...) la valeur du stock de ma boutique (pas encore finalisee...)
pour se faire je me suis base sur un fpdf existant que j'ai adapte a mes besoins.
la partie fpdf semble OK
par contre je coince sur la partie PHP.

J'ai creer une variable $total qui donne la valeur du stock par ligne de produits
mais je n'arrive pas a calculer $TOTAL qui cumulerait l'ensemble des $total en fonction du nombre de ligne...

J'ai essaye un $nb= count($total), mais cela ne fonctionne pas...
Pour l'instant $TOTAL=$total+$total me donne 260=130+130, 130 qui semble etre ma derniere ligne $total du tableau...

Voici mon code:
<?php


include_once(realpath(dirname(__FILE__)) . "/Valeurstock.class.php");
define('FPDF_FONTPATH','font/');
require(realpath(dirname(__FILE__)) . '/../../../lib/fpdf/fpdf.php');
require(realpath(dirname(__FILE__)) . '/../../../lib/fpdf/fpdi.php');

$produit = new Produit();

$query = "SELECT * FROM $produit->table ORDER BY ref ASC";
$result = mysql_query($query, $produit->link);

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

$hauteur = "10";
$page = "1";

$pdf->SetFont('Arial','BU',8);
$pdf->SetXY(10,$hauteur);
$pdf->Cell(20,8,'Réf',1,1,'C');

$pdf->SetFont('Arial','BU',8);
$pdf->SetXY(30,$hauteur);
$pdf->Cell(110,8,'Désignation',1,1,'C');

$pdf->SetFont('Arial','BU',8);
$pdf->SetXY(140,$hauteur);
$pdf->Cell(20,8,'Quantité',1,1,'C');

$pdf->SetFont('Arial','BU',8);
$pdf->SetXY(160,$hauteur);
$pdf->Cell(20,8,'Prix',1,1,'C');

$pdf->SetFont('Arial','BU',8);
$pdf->SetXY(180,$hauteur);
$pdf->Cell(20,8,'total',1,1,'C');

$hauteur = "14";

while($row = mysql_fetch_object($result))
{
$idprod = $row->id;

$produitdesc = new Produitdesc();
$produitdesc->charger($idprod);

$titre = $produitdesc->titre;

$hauteur = $hauteur + 4;

$pdf->SetFont('Arial','',8);
$pdf->SetXY(10,$hauteur);
$pdf->Cell(20,4,mb_strtoupper($row->ref),1,1,'C');

$pdf->SetFont('Arial','',8);
$pdf->SetXY(30,$hauteur);
$pdf->Cell(110,4,"$produitdesc->titre $produitdesc->chapo",1,1,'L');

$pdf->SetFont('Arial','',8);
$pdf->SetXY(140,$hauteur);
$pdf->Cell(20,4,$row->stock,1,1,'C');

$pdf->SetFont('Arial','',8);
$pdf->SetXY(160,$hauteur);
$pdf->Cell(20,4,$row->prix,1,1,'C');

$pdf->SetFont('Arial','',8);
$pdf->SetXY(180,$hauteur);
$total=round($row->stock*$row->prix);
$pdf->Cell(20,4,$total,1,1,'C');


if ($hauteur > 275){
$hauteur = "6";

$pdf->SetFont('Arial','',8);
$pdf->SetXY(180,285);
$pdf->Cell(20,4,"Page $page",1,1,'C');

$page = $page +1;

$pdf->AddPage();

}

}

$pdf->ln();
$pdf->SetFont('Arial','BU',12);

$TOTAL=$total+$total;

$pdf->SetXY(10,$hauteur+4);
$pdf->Cell(150,15,'Valeur totale du stock de la boutique',1,1,'C');
$pdf->SetXY(160,$hauteur+4);
$pdf->Cell(40,15,$TOTAL,1,1,'C');

$pdf->SetFont('Arial','',8);
$pdf->SetXY(180,285);
$pdf->Cell(20,4,"Page $page",1,1,'C');

$pdf->Output();

?>


Si quelqu'un pouvait me conseiller...
Merci.

Reg3
vazajo
le 05/11/2009 à 16:52
vazajo
bonjour Reg3,

J'ai peut-etre un début de solution pour toi:

-ligne 42 ajout de $n=1;
-72 et 76 $total est maintenant un array.
-ligne 89 $n++;
-ligne 94 à 106 le cacul de TOTAL.

Bon il y aura peut-etre des erreur j'ai pas trop cherché à comprendre ta variable $pdf.

Attention ta variable $total est dans mon ebauche un tableau donc pour l'affichage il faut passer $total comme ceci par exemple :

$total['1'] ou $total['2']

<?php


include_once(realpath(dirname(__FILE__)) . "/Valeurstock.class.php");
define('FPDF_FONTPATH','font/');
require(realpath(dirname(__FILE__)) . '/../../../lib/fpdf/fpdf.php');
require(realpath(dirname(__FILE__)) . '/../../../lib/fpdf/fpdi.php');

$produit = new Produit();

$query = "SELECT * FROM$produit->tableORDER BY ref ASC";
$result = mysql_query($query, $produit->link);

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

$hauteur = "10";
$page = "1";

$pdf->SetFont('Arial','BU',8);
$pdf->SetXY(10,$hauteur);
$pdf->Cell(20,8,'Réf',1,1,'C');

$pdf->SetFont('Arial','BU',8);
$pdf->SetXY(30,$hauteur);
$pdf->Cell(110,8,'Désignation',1,1,'C');

$pdf->SetFont('Arial','BU',8);
$pdf->SetXY(140,$hauteur);
$pdf->Cell(20,8,'Quantité',1,1,'C');

$pdf->SetFont('Arial','BU',8);
$pdf->SetXY(160,$hauteur);
$pdf->Cell(20,8,'Prix',1,1,'C');

$pdf->SetFont('Arial','BU',8);
$pdf->SetXY(180,$hauteur);
$pdf->Cell(20,8,'total',1,1,'C');

$hauteur = "14";
$n=1;
while($row = mysql_fetch_object($result))
{
$idprod = $row->id;

$produitdesc = new Produitdesc();
$produitdesc->charger($idprod);

$titre = $produitdesc->titre;

$hauteur = $hauteur + 4;

$pdf->SetFont('Arial','',8);
$pdf->SetXY(10,$hauteur);
$pdf->Cell(20,4,mb_strtoupper($row->ref),1,1,'C');

$pdf->SetFont('Arial','',8);
$pdf->SetXY(30,$hauteur);
$pdf->Cell(110,4,"$produitdesc->titre $produitdesc->chapo",1,1,'L');

$pdf->SetFont('Arial','',8);
$pdf->SetXY(140,$hauteur);
$pdf->Cell(20,4,$row->stock,1,1,'C');

$pdf->SetFont('Arial','',8);
$pdf->SetXY(160,$hauteur);
$pdf->Cell(20,4,$row->prix,1,1,'C');

$pdf->SetFont('Arial','',8);
$pdf->SetXY(180,$hauteur);
$total[''.$n.'']=round($row->stock*$row->prix);
$pdf->Cell(20,4,$total[''.$n.''],1,1,'C');


if ($hauteur > 275){
$hauteur = "6";

$pdf->SetFont('Arial','',8);
$pdf->SetXY(180,285);
$pdf->Cell(20,4,"Page$page",1,1,'C');

$page = $page +1;

$pdf->AddPage();

}

$n++;} //Fin boucle

$pdf->ln();
$pdf->SetFont('Arial','BU',12);

$t=1;
while($t<=$n)
{
if($t==1)
{
$TOTAL=$total[''.$t.''];
}
else
{
$TOTAL=$TOTAL+$total[''.$t.''];
}
$t++;
}

$pdf->SetXY(10,$hauteur+4);
$pdf->Cell(150,15,'Valeur totale du stock de la boutique',1,1,'C');
$pdf->SetXY(160,$hauteur+4);
$pdf->Cell(40,15,$TOTAL,1,1,'C');

$pdf->SetFont('Arial','',8);
$pdf->SetXY(180,285);
$pdf->Cell(20,4,"Page$page",1,1,'C');

$pdf->Output();

?>


PS : j'ai commencé le tableau à 1 donc $total['0'] n'existe pas! ($n=1;)
reg3
le 06/11/2009 à 02:01
reg3
Bonjour Vazajo,

Entre temps j'ai trouve la solution:
ligne 42: $TotalB = 0;
ligne dans le while: $TotalB += $total;
ligne 111: $pdf->Cell(40,15,$TotalB,1,1,'C');

Un Grand MERCI pour ton aide.

Reg3
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours