par
Louisss » 27 mai 2011, 17:34
Merci Maskime pour tes suggestions.
En ce qui concerne le volume de données, le problème ne vient sans doute pas de là car d'un côté comme de l'autre, je suis en phase de test, donc avec des données très légères. Elles sont d'ailleurs même plus légères en ligne qu'en local.
Je penche donc vers ta deuxième suggestion, voici le code d'une page qui génère du pdf :
Code : Tout sélectionner
<?php
header('Content-type: text/html; charset=utf-8');
include("inclu/tete_session.php");
include("inclu/connexion.php");
require("fpdf/fpdf.php");
if(isset($_POST['bdc']))
{
$req = "requete SQL";
$res = mysql_query($req);
$totalHT = 0;
$Mauvaises_lettres = array("À", "Á", "Â", "Ã", "Ä", "Å", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï", "Ò", "Ó", "Ô", "Õ", "Ö", "Ù", "Ú", "Û", "Ü", "Ý", "à", "á", "â", "ã", "ä", "å", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï", "ð", "ò", "ó", "ô", "õ", "ö", "ù", "ú", "û", "ü", "ý", "ÿ");
$Bonnes_lettres = array("A", "A", "A", "A", "A", "A", "C", "E", "E", "E", "E", "I", "I", "I", "I", "O", "O", "O", "O", "O", "U", "U", "U", "U", "Y", "a", "a", "a", "a", "a", "a", "c", "e", "e", "e", "e", "i", "i", "i", "i", "o", "o", "o", "o", "o", "o", "u", "u", "u", "u", "y", "y");
$pdf = new FPDF("P", "mm", "A4");
$pdf->AddFont("VectoraLH-Roman", "", "VectoraLH-Roman.php");
$pdf->AddFont("VectoraLH-Bold", "", "VectoraLH-Bold.php");
$pdf->AddFont("VectoraLH-BoldItalic", "", "VectoraLH-BoldItalic.php");
$pdf->AddPage();
$pdf->SetMargins(10, 10, 10);
$pdf->Image("img/Logo_LFP03.jpg", 80, 10, 50);
$pdf->SetXY(10, 55);
$pdf->SetFont("VectoraLH-Bold", "", 11);
$pdf->Cell(50, 4, utf8_decode("du texte"), 0, 1);
$pdf->SetFont("VectoraLH-Roman", "", 11);
$pdf->MultiCell(50, 4, utf8_decode("du texte"), 0, 1);
$pdf->SetXY(110, 55);
$pdf->SetFont("VectoraLH-Bold", "", 14);
$pdf->Cell(50, 5, utf8_decode(strtoupper(mysql_result($res, 0, 'un champ d'une table'))), 0, 1);
$pdf->SetXY(110, 60);
$pdf->SetFont("VectoraLH-Roman", "", 14);
$pdf->MultiCell(50, 5, utf8_decode(mysql_result($res, 0, 'un champ d'une table')."\n".mysql_result($res, 0, 'un champ d'une table')."\n".mysql_result($res, 0, 'un champ d'une table')), 0, 1);
$pdf->SetXY(15, 95);
$pdf->SetFont("VectoraLH-Bold", "", 18);
$pdf->Cell(50, 4, utf8_decode("Bon de commande N°".mysql_result($res, 0, 'un champ d'une table')), 0, 1);
$pdf->SetXY(120, 105);
$pdf->SetFont("VectoraLH-Roman", "", 11);
$Tab = explode('-', mysql_result($res, 0, 'un champ d'une table'));
$Tabh = explode(':', mysql_result($res, 0, 'un champ d'une table'));
$pdf->Cell(50, 4, utf8_decode("Paris, le ".$Tab[2]."/".$Tab[1]."/".$Tab[0]." à ".$Tabh[0].":".$Tabh[1]), 0, 1);
$pdf->SetXY(15, 115);
$pdf->SetFont("VectoraLH-BoldItalic", "", 10);
$pdf->Cell(30, 4, utf8_decode("Référence : "), 0, 0);
$pdf->SetFont("VectoraLH-Roman", "", 10);
$pdf->Cell(50, 4, utf8_decode(mysql_result($res, 0, 'un champ d'une table')), 0, 1);
$pdf->SetXY(15, 120);
$pdf->SetFont("VectoraLH-BoldItalic", "", 10);
$pdf->Cell(30, 4, utf8_decode("Votre contact : "), 0, 0);
$pdf->SetFont("VectoraLH-Roman", "", 10);
$pdf->Cell(50, 4, utf8_decode(mysql_result($res, 0, 'un champ d'une table')." ".mysql_result($res, 0, 'un champ d'une table').", Tél. : ".mysql_result($res, 0, 'un champ d'une table').", email : ".mysql_result($res, 0, 'un champ d'une table')), 0, 1);
$pdf->SetFont("VectoraLH-Roman", "", 9);
$pdf->SetXY(10, 125);
$Y = 125;
$pdf->Cell(20, 4, utf8_decode("Référence"), 1, 0, "C");
$pdf->Cell(90, 4, utf8_decode("Désignation"), 1, 0, "C");
$pdf->Cell(14, 4, utf8_decode("Quantité"), 1, 0, "C");
$pdf->Cell(9, 4, utf8_decode("Unité"), 1, 0, "C");
$pdf->Cell(19, 4, utf8_decode("Prix unitaire"), 1, 0, "C");
$pdf->Cell(12, 4, utf8_decode("Remise"), 1, 0, "C");
$pdf->Cell(25, 4, utf8_decode("Montant HT"), 1, 1, "C");
for($comp = 0; $comp < mysql_numrows($res); $comp++)
{
if(strlen(utf8_decode(mysql_result($res, $comp, 'un champ d'une table'))) > 50 OR strlen(utf8_decode(mysql_result($res, $comp, 'un champ d'une table'))) > 10)
{
$position_anterieureY = $pdf->GetY();
if(strlen(utf8_decode(mysql_result($res, $comp, 'un champ d'une table'))) > 10) {
$Reference = str_replace($Mauvaises_lettres, $Bonnes_lettres, utf8_decode(mysql_result($res, $comp, 'un champ d'une table')));
$pdf->MultiCell(20, 4, $Reference, "LR");
if($pdf->GetY() - $position_anterieureY == 4)
{
$pdf->SetXY(10, $position_anterieureY);
if($comp == 0)
$pdf->MultiCell(20, 8, $Reference, "TLR", "L", True);
else
$pdf->MultiCell(20, 8, $Reference, "LR", "L", True);
}
$pdf->SetXY(30, $position_anterieureY);
}
else
$pdf->Cell(20, 8, utf8_decode(mysql_result($res, $comp, 'un champ d'une table')), "LR", 0);
if(strlen(utf8_decode(mysql_result($res, $comp, 'un champ d'une table'))) > 50)
{
$Designation = str_replace($Mauvaises_lettres, $Bonnes_lettres, utf8_decode(mysql_result($res, $comp, 'un champ d'une table')));
$pdf->MultiCell(90, 4, $Designation, "LR");
if($pdf->GetY() - $position_anterieureY == 4)
{
$pdf->SetXY(30, $position_anterieureY);
if($comp == 0)
$pdf->MultiCell(90, 8, $Designation, "TLR", "L", True);
else
$pdf->MultiCell(90, 8, $Designation, "LR", "L", True);
}
$pdf->SetXY(120, $position_anterieureY);
}
else
$pdf->Cell(90, 8, utf8_decode(mysql_result($res, $comp, 'un champ d'une table')), "LR", 0);
$pdf->Cell(14, 8, utf8_decode(mysql_result($res, $comp, 'un champ d'une table')), "LR", 0, "R");
$pdf->Cell(9, 8, utf8_decode(mysql_result($res, $comp, 'un champ d'une table')), "LR", 0, "C");
$pdf->Cell(19, 8, utf8_decode(number_format(mysql_result($res, $comp, 'un champ d'une table'), 0, '', ' ')), "LR", 0, "R");
$pdf->Cell(12, 8, utf8_decode(mysql_result($res, $comp, 'un champ d'une table')." %"), "LR", 0, "R");
$pdf->Cell(25, 8, utf8_decode(number_format((mysql_result($res, $comp, 'un champ d'une table') * mysql_result($res, $comp, 'un champ d'une table') * (1 - mysql_result($res, $comp, 'un champ d'une table')/100)), 0, '', ' ')), "LR", 1, "R");
$Y += 8;
}
else
{
$pdf->Cell(20, 4, utf8_decode(mysql_result($res, $comp, 'un champ d'une table')), "LR", 0);
$pdf->Cell(90, 4, utf8_decode(mysql_result($res, $comp, 'un champ d'une table')), "LR", 0);
$pdf->Cell(14, 4, utf8_decode(mysql_result($res, $comp, 'un champ d'une table')), "LR", 0, "R");
$pdf->Cell(9, 4, utf8_decode(mysql_result($res, $comp, 'un champ d'une table')), "LR", 0, "C");
$pdf->Cell(19, 4, utf8_decode(number_format(mysql_result($res, $comp, 'un champ d'une table'), 0, '', ' ')), "LR", 0, "R");
$pdf->Cell(12, 4, utf8_decode(mysql_result($res, $comp, 'un champ d'une table')." %"), "LR", 0, "R");
$pdf->Cell(25, 4, utf8_decode(number_format((mysql_result($res, $comp, 'un champ d'une table') * mysql_result($res, $comp, 'un champ d'une table') * (1 - mysql_result($res, $comp, 'un champ d'une table')/100)), 0, '', ' ')), "LR", 1, "R");
$Y += 4;
}
$totalHT += (mysql_result($res, $comp, 'un champ d'une table') * mysql_result($res, $comp, 'un champ d'une table') * (1 - mysql_result($res, $comp, 'un champ d'une table')/100));
}
$pdf->Cell(20, 4, "", "LRB", 0);
$pdf->Cell(90, 4, "", "LRB", 0);
$pdf->Cell(14, 4, "", "LRB", 0);
$pdf->Cell(9, 4, "", "LRB", 0);
$pdf->Cell(19, 4, "", "LRB", 0);
$pdf->Cell(12, 4, "", "LRB", 0);
$pdf->Cell(25, 4, "", "LRB", 1);
$Y += 4;
$pdf->SetFont("VectoraLH-Bold", "", 10);
$pdf->SetXY(10, ($Y + 10));
$pdf->Cell(40, 5, utf8_decode("Base HT"), 1, 0, "C");
$pdf->Cell(40, 5, utf8_decode("Taux TVA"), 1, 0, "C");
$pdf->Cell(40, 5, utf8_decode("Montant TVA"), 1, 0, "C");
$pdf->Cell(40, 5, utf8_decode("TOTAL TTC"), 1, 1, "C");
$pdf->SetFont("VectoraLH-Roman", "", 10);
$pdf->Cell(40, 5, utf8_decode(number_format($totalHT, 0, '', ' ')." CFA"), 1, 0, "R");
$pdf->Cell(40, 5, utf8_decode(mysql_result($res, 0, 'un champ d'une table')." %"), 1, 0, "R");
$pdf->Cell(40, 5, utf8_decode(number_format(($totalHT * mysql_result($res, 0, 'un champ d'une table') / 100), 0, '', ' ')." CFA"), 1, 0, "R");
$pdf->Cell(40, 5, utf8_decode(number_format(($totalHT + $totalHT * mysql_result($res, 0, 'un champ d'une table') / 100), 0, '', ' ')." CFA"), 1, 1, "R");
$pdf->Output();
exit();
}
?>
Qu'est-ce qui serait mal conçu la dedans ?
Merci Maskime pour tes suggestions.
En ce qui concerne le volume de données, le problème ne vient sans doute pas de là car d'un côté comme de l'autre, je suis en phase de test, donc avec des données très légères. Elles sont d'ailleurs même plus légères en ligne qu'en local.
Je penche donc vers ta deuxième suggestion, voici le code d'une page qui génère du pdf :
[code]
<?php
header('Content-type: text/html; charset=utf-8');
include("inclu/tete_session.php");
include("inclu/connexion.php");
require("fpdf/fpdf.php");
if(isset($_POST['bdc']))
{
$req = "requete SQL";
$res = mysql_query($req);
$totalHT = 0;
$Mauvaises_lettres = array("À", "Á", "Â", "Ã", "Ä", "Å", "Ç", "È", "É", "Ê", "Ë", "Ì", "Í", "Î", "Ï", "Ò", "Ó", "Ô", "Õ", "Ö", "Ù", "Ú", "Û", "Ü", "Ý", "à", "á", "â", "ã", "ä", "å", "ç", "è", "é", "ê", "ë", "ì", "í", "î", "ï", "ð", "ò", "ó", "ô", "õ", "ö", "ù", "ú", "û", "ü", "ý", "ÿ");
$Bonnes_lettres = array("A", "A", "A", "A", "A", "A", "C", "E", "E", "E", "E", "I", "I", "I", "I", "O", "O", "O", "O", "O", "U", "U", "U", "U", "Y", "a", "a", "a", "a", "a", "a", "c", "e", "e", "e", "e", "i", "i", "i", "i", "o", "o", "o", "o", "o", "o", "u", "u", "u", "u", "y", "y");
$pdf = new FPDF("P", "mm", "A4");
$pdf->AddFont("VectoraLH-Roman", "", "VectoraLH-Roman.php");
$pdf->AddFont("VectoraLH-Bold", "", "VectoraLH-Bold.php");
$pdf->AddFont("VectoraLH-BoldItalic", "", "VectoraLH-BoldItalic.php");
$pdf->AddPage();
$pdf->SetMargins(10, 10, 10);
$pdf->Image("img/Logo_LFP03.jpg", 80, 10, 50);
$pdf->SetXY(10, 55);
$pdf->SetFont("VectoraLH-Bold", "", 11);
$pdf->Cell(50, 4, utf8_decode("du texte"), 0, 1);
$pdf->SetFont("VectoraLH-Roman", "", 11);
$pdf->MultiCell(50, 4, utf8_decode("du texte"), 0, 1);
$pdf->SetXY(110, 55);
$pdf->SetFont("VectoraLH-Bold", "", 14);
$pdf->Cell(50, 5, utf8_decode(strtoupper(mysql_result($res, 0, 'un champ d'une table'))), 0, 1);
$pdf->SetXY(110, 60);
$pdf->SetFont("VectoraLH-Roman", "", 14);
$pdf->MultiCell(50, 5, utf8_decode(mysql_result($res, 0, 'un champ d'une table')."\n".mysql_result($res, 0, 'un champ d'une table')."\n".mysql_result($res, 0, 'un champ d'une table')), 0, 1);
$pdf->SetXY(15, 95);
$pdf->SetFont("VectoraLH-Bold", "", 18);
$pdf->Cell(50, 4, utf8_decode("Bon de commande N°".mysql_result($res, 0, 'un champ d'une table')), 0, 1);
$pdf->SetXY(120, 105);
$pdf->SetFont("VectoraLH-Roman", "", 11);
$Tab = explode('-', mysql_result($res, 0, 'un champ d'une table'));
$Tabh = explode(':', mysql_result($res, 0, 'un champ d'une table'));
$pdf->Cell(50, 4, utf8_decode("Paris, le ".$Tab[2]."/".$Tab[1]."/".$Tab[0]." à ".$Tabh[0].":".$Tabh[1]), 0, 1);
$pdf->SetXY(15, 115);
$pdf->SetFont("VectoraLH-BoldItalic", "", 10);
$pdf->Cell(30, 4, utf8_decode("Référence : "), 0, 0);
$pdf->SetFont("VectoraLH-Roman", "", 10);
$pdf->Cell(50, 4, utf8_decode(mysql_result($res, 0, 'un champ d'une table')), 0, 1);
$pdf->SetXY(15, 120);
$pdf->SetFont("VectoraLH-BoldItalic", "", 10);
$pdf->Cell(30, 4, utf8_decode("Votre contact : "), 0, 0);
$pdf->SetFont("VectoraLH-Roman", "", 10);
$pdf->Cell(50, 4, utf8_decode(mysql_result($res, 0, 'un champ d'une table')." ".mysql_result($res, 0, 'un champ d'une table').", Tél. : ".mysql_result($res, 0, 'un champ d'une table').", email : ".mysql_result($res, 0, 'un champ d'une table')), 0, 1);
$pdf->SetFont("VectoraLH-Roman", "", 9);
$pdf->SetXY(10, 125);
$Y = 125;
$pdf->Cell(20, 4, utf8_decode("Référence"), 1, 0, "C");
$pdf->Cell(90, 4, utf8_decode("Désignation"), 1, 0, "C");
$pdf->Cell(14, 4, utf8_decode("Quantité"), 1, 0, "C");
$pdf->Cell(9, 4, utf8_decode("Unité"), 1, 0, "C");
$pdf->Cell(19, 4, utf8_decode("Prix unitaire"), 1, 0, "C");
$pdf->Cell(12, 4, utf8_decode("Remise"), 1, 0, "C");
$pdf->Cell(25, 4, utf8_decode("Montant HT"), 1, 1, "C");
for($comp = 0; $comp < mysql_numrows($res); $comp++)
{
if(strlen(utf8_decode(mysql_result($res, $comp, 'un champ d'une table'))) > 50 OR strlen(utf8_decode(mysql_result($res, $comp, 'un champ d'une table'))) > 10)
{
$position_anterieureY = $pdf->GetY();
if(strlen(utf8_decode(mysql_result($res, $comp, 'un champ d'une table'))) > 10) {
$Reference = str_replace($Mauvaises_lettres, $Bonnes_lettres, utf8_decode(mysql_result($res, $comp, 'un champ d'une table')));
$pdf->MultiCell(20, 4, $Reference, "LR");
if($pdf->GetY() - $position_anterieureY == 4)
{
$pdf->SetXY(10, $position_anterieureY);
if($comp == 0)
$pdf->MultiCell(20, 8, $Reference, "TLR", "L", True);
else
$pdf->MultiCell(20, 8, $Reference, "LR", "L", True);
}
$pdf->SetXY(30, $position_anterieureY);
}
else
$pdf->Cell(20, 8, utf8_decode(mysql_result($res, $comp, 'un champ d'une table')), "LR", 0);
if(strlen(utf8_decode(mysql_result($res, $comp, 'un champ d'une table'))) > 50)
{
$Designation = str_replace($Mauvaises_lettres, $Bonnes_lettres, utf8_decode(mysql_result($res, $comp, 'un champ d'une table')));
$pdf->MultiCell(90, 4, $Designation, "LR");
if($pdf->GetY() - $position_anterieureY == 4)
{
$pdf->SetXY(30, $position_anterieureY);
if($comp == 0)
$pdf->MultiCell(90, 8, $Designation, "TLR", "L", True);
else
$pdf->MultiCell(90, 8, $Designation, "LR", "L", True);
}
$pdf->SetXY(120, $position_anterieureY);
}
else
$pdf->Cell(90, 8, utf8_decode(mysql_result($res, $comp, 'un champ d'une table')), "LR", 0);
$pdf->Cell(14, 8, utf8_decode(mysql_result($res, $comp, 'un champ d'une table')), "LR", 0, "R");
$pdf->Cell(9, 8, utf8_decode(mysql_result($res, $comp, 'un champ d'une table')), "LR", 0, "C");
$pdf->Cell(19, 8, utf8_decode(number_format(mysql_result($res, $comp, 'un champ d'une table'), 0, '', ' ')), "LR", 0, "R");
$pdf->Cell(12, 8, utf8_decode(mysql_result($res, $comp, 'un champ d'une table')." %"), "LR", 0, "R");
$pdf->Cell(25, 8, utf8_decode(number_format((mysql_result($res, $comp, 'un champ d'une table') * mysql_result($res, $comp, 'un champ d'une table') * (1 - mysql_result($res, $comp, 'un champ d'une table')/100)), 0, '', ' ')), "LR", 1, "R");
$Y += 8;
}
else
{
$pdf->Cell(20, 4, utf8_decode(mysql_result($res, $comp, 'un champ d'une table')), "LR", 0);
$pdf->Cell(90, 4, utf8_decode(mysql_result($res, $comp, 'un champ d'une table')), "LR", 0);
$pdf->Cell(14, 4, utf8_decode(mysql_result($res, $comp, 'un champ d'une table')), "LR", 0, "R");
$pdf->Cell(9, 4, utf8_decode(mysql_result($res, $comp, 'un champ d'une table')), "LR", 0, "C");
$pdf->Cell(19, 4, utf8_decode(number_format(mysql_result($res, $comp, 'un champ d'une table'), 0, '', ' ')), "LR", 0, "R");
$pdf->Cell(12, 4, utf8_decode(mysql_result($res, $comp, 'un champ d'une table')." %"), "LR", 0, "R");
$pdf->Cell(25, 4, utf8_decode(number_format((mysql_result($res, $comp, 'un champ d'une table') * mysql_result($res, $comp, 'un champ d'une table') * (1 - mysql_result($res, $comp, 'un champ d'une table')/100)), 0, '', ' ')), "LR", 1, "R");
$Y += 4;
}
$totalHT += (mysql_result($res, $comp, 'un champ d'une table') * mysql_result($res, $comp, 'un champ d'une table') * (1 - mysql_result($res, $comp, 'un champ d'une table')/100));
}
$pdf->Cell(20, 4, "", "LRB", 0);
$pdf->Cell(90, 4, "", "LRB", 0);
$pdf->Cell(14, 4, "", "LRB", 0);
$pdf->Cell(9, 4, "", "LRB", 0);
$pdf->Cell(19, 4, "", "LRB", 0);
$pdf->Cell(12, 4, "", "LRB", 0);
$pdf->Cell(25, 4, "", "LRB", 1);
$Y += 4;
$pdf->SetFont("VectoraLH-Bold", "", 10);
$pdf->SetXY(10, ($Y + 10));
$pdf->Cell(40, 5, utf8_decode("Base HT"), 1, 0, "C");
$pdf->Cell(40, 5, utf8_decode("Taux TVA"), 1, 0, "C");
$pdf->Cell(40, 5, utf8_decode("Montant TVA"), 1, 0, "C");
$pdf->Cell(40, 5, utf8_decode("TOTAL TTC"), 1, 1, "C");
$pdf->SetFont("VectoraLH-Roman", "", 10);
$pdf->Cell(40, 5, utf8_decode(number_format($totalHT, 0, '', ' ')." CFA"), 1, 0, "R");
$pdf->Cell(40, 5, utf8_decode(mysql_result($res, 0, 'un champ d'une table')." %"), 1, 0, "R");
$pdf->Cell(40, 5, utf8_decode(number_format(($totalHT * mysql_result($res, 0, 'un champ d'une table') / 100), 0, '', ' ')." CFA"), 1, 0, "R");
$pdf->Cell(40, 5, utf8_decode(number_format(($totalHT + $totalHT * mysql_result($res, 0, 'un champ d'une table') / 100), 0, '', ' ')." CFA"), 1, 1, "R");
$pdf->Output();
exit();
}
?>
[/code]
Qu'est-ce qui serait mal conçu la dedans ?