P¨robleme generation fpdf (blocs)
Fermé
vincent35
-
18 févr. 2008 à 16:50
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 - 18 févr. 2008 à 17:36
croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 - 18 févr. 2008 à 17:36
A voir également:
- P¨robleme generation fpdf (blocs)
- Génération processeur amd - Guide
- Code blocs - Télécharger - Langages
- P ne - Forum Clavier
- Fpdf utf8 ✓ - Forum PHP
- <P> </p> ✓ - Forum Webmastering
2 réponses
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
114
18 févr. 2008 à 17:10
18 févr. 2008 à 17:10
Bonjour,
Il faudrait nous en dire plus : en particulier la structure de ta table, comment les "références" y sont placées et que font les fonctions AddBlocxxx.
Il faudrait nous en dire plus : en particulier la structure de ta table, comment les "références" y sont placées et que font les fonctions AddBlocxxx.
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
114
18 févr. 2008 à 17:36
18 févr. 2008 à 17:36
Tu ne me donnes pas la structure de ta table mais la lecture de la fonction AddBlocHaut semble indiquer que ta table contient une "ligne" pour chaque "référence" (i.e. restaurant)
Dans ce cas ta boucle :
$i = 0;
while ($Resto = mysql_fetch_array($resResto))
{
if ($i % 2 == 0) {$pdf->AddPage();}
($i % 2 == 0) ? $pdf->addBlocHaut($Resto) : $pdf->addBlocBas($Resto);
($i % 2 == 0) ? $pdf->addBloc3($Resto) : $pdf->addBloc4($Resto);
($i % 2 == 0) ? $pdf->addBloc5($Resto) : $pdf->addBloc6($Resto);
($i % 2 == 0) ? $pdf->addBloc7($Resto) : $pdf->addBloc8($Resto);
$i++;
}
n'est pas adaptée car à chaque passage dans la boucle, $resto correspond à une référence et une seule qui est celle que tu retrouves dans les 8 blocs.
Elle devrait être simplidiée en :
$rangResto = 0;
while( $Resto = mysql_fetch_array($resResto) )
{
if ($rangResto % 8 == 0) { $pdf->AddPage(); }
$pdf->addBloc( $Resto, $rangResto );
$rangResto ++;
}
Tu n'aura plus qu'une fonction addBloc qui positionnera le bloc en fonction de $rangResto avec par exemple
// position coin haut gauche du bloc --> $x et $y
if( $rangResto % 2 == 0 )
$x = 0;
else
$x = 50;
$y = 100 * $rangResto/2;
Tout ce qui précède doit être adapté à ton cas et pour cela l'ingrédient essentiel est beaucoup de réflexion.
Bon courage.
Dans ce cas ta boucle :
$i = 0;
while ($Resto = mysql_fetch_array($resResto))
{
if ($i % 2 == 0) {$pdf->AddPage();}
($i % 2 == 0) ? $pdf->addBlocHaut($Resto) : $pdf->addBlocBas($Resto);
($i % 2 == 0) ? $pdf->addBloc3($Resto) : $pdf->addBloc4($Resto);
($i % 2 == 0) ? $pdf->addBloc5($Resto) : $pdf->addBloc6($Resto);
($i % 2 == 0) ? $pdf->addBloc7($Resto) : $pdf->addBloc8($Resto);
$i++;
}
n'est pas adaptée car à chaque passage dans la boucle, $resto correspond à une référence et une seule qui est celle que tu retrouves dans les 8 blocs.
Elle devrait être simplidiée en :
$rangResto = 0;
while( $Resto = mysql_fetch_array($resResto) )
{
if ($rangResto % 8 == 0) { $pdf->AddPage(); }
$pdf->addBloc( $Resto, $rangResto );
$rangResto ++;
}
Tu n'aura plus qu'une fonction addBloc qui positionnera le bloc en fonction de $rangResto avec par exemple
// position coin haut gauche du bloc --> $x et $y
if( $rangResto % 2 == 0 )
$x = 0;
else
$x = 50;
$y = 100 * $rangResto/2;
Tout ce qui précède doit être adapté à ton cas et pour cela l'ingrédient essentiel est beaucoup de réflexion.
Bon courage.
18 févr. 2008 à 17:20
Précision : je ne suis pasun grand technicien...
Voici une partie du fichier table2pdf-new.php :
<?php
class CATALOGUE extends FPDF
{
// variables privées
var $colonnes;
var $format;
var $angle=0;
// fonctions privées
function RoundedRect($x, $y, $w, $h, $r, $style = '')
{
$k = $this->k;
$hp = $this->h;
if($style=='F')
$op='f';
elseif($style=='FD' or $style=='DF')
$op='B';
else
$op='S';
$MyArc = 4/3 * (sqrt(2) - 1);
$this->_out(sprintf('%.2f %.2f m',($x+$r)*$k,($hp-$y)*$k ));
$xc = $x+$w-$r ;
$yc = $y+$r;
$this->_out(sprintf('%.2f %.2f l', $xc*$k,($hp-$y)*$k ));
$this->_Arc($xc + $r*$MyArc, $yc - $r, $xc + $r, $yc - $r*$MyArc, $xc + $r, $yc);
$xc = $x+$w-$r ;
$yc = $y+$h-$r;
$this->_out(sprintf('%.2f %.2f l',($x+$w)*$k,($hp-$yc)*$k));
$this->_Arc($xc + $r, $yc + $r*$MyArc, $xc + $r*$MyArc, $yc + $r, $xc, $yc + $r);
$xc = $x+$r ;
$yc = $y+$h-$r;
$this->_out(sprintf('%.2f %.2f l',$xc*$k,($hp-($y+$h))*$k));
$this->_Arc($xc - $r*$MyArc, $yc + $r, $xc - $r, $yc + $r*$MyArc, $xc - $r, $yc);
$xc = $x+$r ;
$yc = $y+$r;
$this->_out(sprintf('%.2f %.2f l',($x)*$k,($hp-$yc)*$k ));
$this->_Arc($xc - $r, $yc - $r*$MyArc, $xc - $r*$MyArc, $yc - $r, $xc, $yc - $r);
$this->_out($op);
}
function _Arc($x1, $y1, $x2, $y2, $x3, $y3)
{
$h = $this->h;
$this->_out(sprintf('%.2f %.2f %.2f %.2f %.2f %.2f c ', $x1*$this->k, ($h-$y1)*$this->k,
$x2*$this->k, ($h-$y2)*$this->k, $x3*$this->k, ($h-$y3)*$this->k));
}
function Rotate($angle,$x=-1,$y=-1)
{
if($x==-1)
$x=$this->x;
if($y==-1)
$y=$this->y;
if($this->angle!=0)
$this->_out('Q');
$this->angle=$angle;
if($angle!=0)
{
$angle*=M_PI/180;
$c=cos($angle);
$s=sin($angle);
$cx=$x*$this->k;
$cy=($this->h-$y)*$this->k;
$this->_out(sprintf('q %.5f %.5f %.5f %.5f %.2f %.2f cm 1 0 0 1 %.2f %.2f cm',$c,$s,-$s,$c,$cx,$cy,-$cx,-$cy));
}
}
function _endpage()
{
if($this->angle!=0)
{
$this->angle=0;
$this->_out('Q');
}
parent::_endpage();
}
// fonctions publiques
function sizeOfText( $texte, $largeur )
{
$index = 0;
$nb_lines = 0;
$loop = TRUE;
while ( $loop )
{
$pos = strpos($texte, "\n");
if (!$pos)
{
$loop = FALSE;
$ligne = $texte;
}
else
{
$ligne = substr( $texte, $index, $pos);
$texte = substr( $texte, $pos+1 );
}
$length = floor( $this->GetStringWidth( $ligne ) );
if ($largeur != 0) {$res = 1 + floor( $length / $largeur) ;} else {$res = 1 + floor( $length);}
$nb_lines += $res;
}
return $nb_lines;
}
// Ajout des fonctions pour RestoDuo
function addBlocHaut($Resto)
{
$x1 = $this->w-210;
$x2 = $x1 + 200;
$y1 = 0;
$y2 = $y1+125;
$this->SetFillColor(255, 255, 255);
$this->Rect($x1, $y1, ($x2 - $x1), ($y2-$y1), 'F');
$this->SetFont( "Arial", "B", 7);
$this->SetTextColor(99,44,127);#Noir
$this->SetXY( $x1+5, $y1+0 );
$this->Cell( 50,4, filtre($Resto['nom']));
$this->SetTextColor(0,0,0);#Noir
$this->SetFont( "Arial","B", 5);
$this->SetXY( $x1+2, $y1+0 );
$this->Cell( 95,4, filtre($Resto['adresse']),"","","R");
$this->SetFont( "Arial", "B", 6);
$this->SetXY( $x1+5, $y1+3 );
$this->Cell( 50,4, filtre($Resto['soustitre']));
$resVille = mysql_query("SELECT code_postal, nom_fr as ville FROM peel_villes WHERE id = '".intval($Resto['id_ville'])."'");
$Ville = mysql_fetch_object($resVille);
$this->SetFont( "Arial","B", 5);
$this->SetXY( $x1+2, $y1+2 );
$this->Cell( 95,4, $Ville->code_postal." ".$Ville->ville,"","","R");
$this->SetTextColor(238,112,54);#ORANGE
$this->SetFont( "Arial","B", 7);
$this->SetXY( $x1+2, $y1+5 );
$this->Cell( 95,4, "Tél. ".$Resto['telephone'],"","","R");
$resProprietaire = mysql_query("SELECT email FROM peel_utilisateurs WHERE id_utilisateur = '".intval($Resto['id_utilisateur'])."'");
// if (mysql_num_rows($resProprietaire) > 0) {
//$Proprietaire = mysql_fetch_object($resProprietaire);
//$this->SetTextColor(0,0,0);#NOIR
//$this->SetFont( "Arial","", 5);
//$this->SetXY( $x1+100, $y1+15 );
//$this->Cell( 90,4, "Email : ".$Proprietaire->email,"","","R");
//}
$this->SetTextColor(0,0,0);#NOIR
$this->SetFont( "Arial","", 6);
$this->SetXY( $x1+38, $y1+11 );
$this->MultiCell( 60,2, substr(filtre($Resto['description']),0,900),"0","J");
if (!empty($Resto['image1'])) {
//$this->SetXY( $x1+5, $y1+30 );
$this->Image("../upload/".$Resto['image1'], $x1+5, $y1+11,32,24);
}
if (!empty($Resto['parking'])) {
$this->Image("../images/iconoparking.jpg", $x1+5, $y1+60,3,3);
}
$this->SetFont( "Arial","", 6);
$this->SetXY( $x1+10, $y1+60 );
$this->Cell( 90,4, filtre($Resto['parking']),"","","L");
if (!empty($Resto['logo_tram'])) {
//$this->SetXY( $x1+5, $y1+30 );
$this->Image("../upload/".$Resto['logo_tram'], $x1+50, $y1+60,3,3);
}
$this->SetFont( "Arial","", 6);
$this->SetXY( $x1+55, $y1+60 );
$this->Cell( 90,4, filtre($Resto['bus']),"","","L");
// $this->SetFont( "Arial","", 6);
// $this->SetXY( $x1+5, $y1+85 );
// $this->Cell( 90,4,"Prix des menus : ".$Resto['menu_min']." € à ".$Resto['menu_max']." €","","","L");
$this->SetTextColor(238,112,54);#Orange
$this->SetFont( "Arial","B", 6);
$this->SetXY( $x1+5, $y1+45 );
$this->Cell( 90,4,"Capacités : ","","","L");
$this->SetTextColor(0,0,0);#Noir
$this->SetFont( "Arial","", 6);
$this->SetXY( $x1+18, $y1+45 );
$this->Cell( 90,4,"Salle : ".$Resto['nb_couverts_salle']." Terrasse : ".$Resto['nb_couverts_terasse']." Accepte les groupes jusqu'à : ".$Resto['groupe']." personnes","","","L");
// Création du tableau restoduo
//$this->Image("../images/ouverture-vert.jpg", $x1+5, $y1+90,2,2);
//$this->SetXY( $x1+6, $y1+75 );
//$this->Cell( 9,32, "ouvert","","","R");
//$this->Image("../images/ouverture-orange.jpg", $x1+16, $y1+90,2,2);
// $this->SetXY( $x1+22, $y1+75 );
//$this->Cell( 41,32, "ouvert mais n'accepte pas la carte Resto Duo","","","R");
//$this->Image("../images/ouverture-rouge.jpg", $x1+64, $y1+90,2,2);
// $this->SetXY( $x1+38, $y1+75 );
//$this->Cell( 36,32, "fermé","","","R");
// 1. Cellules du haut
if ( $Resto['lundi_midi'] == 1) {$a1 = 0;$b1=153;$c1=0;}
if ( $Resto['mardi_midi'] == 1) {$a2 = 0;$b2=153;$c2=0;}
if ( $Resto['mercredi_midi'] == 1) {$a3 = 0;$b3=153;$c3=0;}
if ( $Resto['jeudi_midi'] == 1) {$a4 = 0;$b4=153;$c4=0;}
if ( $Resto['vendredi_midi'] == 1) {$a5 = 0;$b5=153;$c5=0;}
if ( $Resto['samedi_midi'] == 1) {$a6 = 0;$b6=153;$c6=0;}
if ( $Resto['dimanche_midi'] == 1) {$a7 = 0;$b7=153;$c7=0;}
if ( $Resto['lundi_midi'] == 2) {$a1 = 255;$b1=122;$c1=47;}
if ( $Resto['mardi_midi'] == 2) {$a2 = 255;$b2=122;$c2=47;}
if ( $Resto['mercredi_midi'] == 2) {$a3 = 255;$b3=122;$c3=47;}
if ( $Resto['jeudi_midi'] == 2) {$a4 = 255;$b4=122;$c4=47;}
if ( $Resto['vendredi_midi'] == 2) {$a5 = 255;$b5=122;$c5=47;}
if ( $Resto['samedi_midi'] == 2) {$a6 = 255;$b6=122;$c6=47;}
if ( $Resto['dimanche_midi'] == 2) {$a7 = 255;$b7=122;$c7=47;}
if ( $Resto['lundi_midi'] == 3) {$a1 = 255;$b1=0;$c1=0;}
if ( $Resto['mardi_midi'] == 3) {$a2 = 255;$b2=0;$c2=0;}
if ( $Resto['mercredi_midi'] == 3) {$a3 = 255;$b3=0;$c3=0;}
if ( $Resto['jeudi_midi'] == 3) {$a4 = 255;$b4=0;$c4=0;}
if ( $Resto['vendredi_midi'] == 3) {$a5 = 255;$b5=0;$c5=0;}
if ( $Resto['samedi_midi'] == 3) {$a6 = 255;$b6=0;$c6=0;}
if ( $Resto['dimanche_midi'] == 3) {$a7 = 255;$b7=0;$c7=0;}
$this->SetFont( "Arial","B", 6);
$this->SetTextColor(255,255,255);#Blanc
$this->SetXY( $x1+5, $y1+50 );
$this->SetFillColor($a1,$b1,$c1);
$this->Cell(4,4, "L", 1, "" ,"C", 1);
$this->SetXY( $x1+9, $y1+50 );
$this->SetFillColor($a2,$b2,$c2);
$this->Cell(4,4, "M", 1, "" ,"C", 1);
$this->SetXY( $x1+13, $y1+50 );
$this->SetFillColor($a3,$b3,$c3);
$this->Cell(4,4, "M", 1, "" ,"C", 1);
$this->SetXY( $x1+17, $y1+50 );
$this->SetFillColor($a4,$b4,$c4);
$this->Cell(4,4, "J", 1, "" ,"C", 1);
$this->SetXY( $x1+21, $y1+50 );
$this->SetFillColor($a5,$b5,$c5);
$this->Cell(4,4, "V", 1, "" ,"C", 1);
$this->SetXY( $x1+25, $y1+50 );
$this->SetFillColor($a6,$b6,$c6);
$this->Cell(4,4, "S", 1, "" ,"C", 1);
$this->SetXY( $x1+29, $y1+50 );
$this->SetFillColor($a7,$b7,$c7);
$this->Cell(4,4, "D", 1, "" ,"C", 1);
$this->SetXY( $x1+33, $y1+50 );
$this->SetFont( "Arial","", 6);
$this->SetTextColor(0,0,0);#Noir
$this->SetFillColor(255,255,255);
$this->Cell(15,4, $Resto['midi_debut']." - ".$Resto['midi_fin'], 1, "" ,"C", 1);
// 2. Cellules du bas
if ( $Resto['lundi_soir'] == 1) {$a1 = 0;$b1=153;$c1=0;}
if ( $Resto['mardi_soir'] == 1) {$a2 = 0;$b2=153;$c2=0;}
if ( $Resto['mercredi_soir'] == 1) {$a3 = 0;$b3=153;$c3=0;}
if ( $Resto['jeudi_soir'] == 1) {$a4 = 0;$b4=153;$c4=0;}
if ( $Resto['vendredi_soir'] == 1) {$a5 = 0;$b5=153;$c5=0;}
if ( $Resto['samedi_soir'] == 1) {$a6 = 0;$b6=153;$c6=0;}
if ( $Resto['dimanche_soir'] == 1) {$a7 = 0;$b7=153;$c7=0;}
if ( $Resto['lundi_soir'] == 2) {$a1 = 255;$b1=122;$c1=47;}
if ( $Resto['mardi_soir'] == 2) {$a2 = 255;$b2=122;$c2=47;}
if ( $Resto['mercredi_soir'] == 2) {$a3 = 255;$b3=122;$c3=47;}
if ( $Resto['jeudi_soir'] == 2) {$a4 = 255;$b4=122;$c4=47;}
if ( $Resto['vendredi_soir'] == 2) {$a5 = 255;$b5=122;$c5=47;}
if ( $Resto['samedi_soir'] == 2) {$a6 = 255;$b6=122;$c6=47;}
if ( $Resto['dimanche_soir'] == 2) {$a7 = 255;$b7=122;$c7=47;}
if ( $Resto['lundi_soir'] == 3) {$a1 = 255;$b1=0;$c1=0;}
if ( $Resto['mardi_soir'] == 3) {$a2 = 255;$b2=0;$c2=0;}
if ( $Resto['mercredi_soir'] == 3) {$a3 = 255;$b3=0;$c3=0;}
if ( $Resto['jeudi_soir'] == 3) {$a4 = 255;$b4=0;$c4=0;}
if ( $Resto['vendredi_soir'] == 3) {$a5 = 255;$b5=0;$c5=0;}
if ( $Resto['samedi_soir'] == 3) {$a6 = 255;$b6=0;$c6=0;}
if ( $Resto['dimanche_soir'] == 3) {$a7 = 255;$b7=0;$c7=0;}
$this->SetFont( "Arial","B", 6);
$this->SetTextColor(255,255,255);#Blanc
$this->SetXY( $x1+5, $y1+54 );
$this->SetFillColor($a1,$b1,$c1);
$this->Cell(4,4, "L", 1, "" ,"C", 1);
$this->SetXY( $x1+9, $y1+54 );
$this->SetFillColor($a2,$b2,$c2);
$this->Cell(4,4, "M", 1, "" ,"C", 1);
$this->SetXY( $x1+13, $y1+54 );
$this->SetFillColor($a3,$b3,$c3);
$this->Cell(4,4, "M", 1, "" ,"C", 1);
$this->SetXY( $x1+17, $y1+54 );
$this->SetFillColor($a4,$b4,$c4);
$this->Cell(4,4, "J", 1, "" ,"C", 1);
$this->SetXY( $x1+21, $y1+54 );
$this->SetFillColor($a5,$b5,$c5);
$this->Cell(4,4, "V", 1, "" ,"C", 1);
$this->SetXY( $x1+25, $y1+54 );
$this->SetFillColor($a6,$b6,$c6);
$this->Cell(4,4, "S", 1, "" ,"C", 1);
$this->SetXY( $x1+29, $y1+54 );
$this->SetFillColor($a7,$b7,$c7);
$this->Cell(4,4, "D", 1, "" ,"C", 1);
$this->SetXY( $x1+33, $y1+54 );
$this->SetFont( "Arial","", 6);
$this->SetTextColor(0,0,0);#Noir
$this->SetFillColor(255,255,255);
$this->Cell(15,4, $Resto['midi_debut']." - ".$Resto['midi_fin'], 1, "" ,"C", 1);
$this->SetXY( $x1+50, $y1+51 );
$this->SetFont( "Arial","B", 5);
$this->SetTextColor(238,112,54);#Orange
$this->SetFillColor(0,0,0);
$this->Cell( 20,1,"PRIX D'UN REPAS COMPLET (à partir de)" ,"","","L");
$this->SetXY( $x1+50, $y1+53 );
$this->SetFont( "Arial","", 6);
$this->SetTextColor(0,0,0);#Noir
$this->SetFillColor(0,0,0);
$this->Cell( 20,1,"entrée, plat, dessert, un verre de vin" ,"","","L");
if ( $Resto['repas0'] == 1)
{
$this->SetFont( "Arial","B", 6);
$this->SetTextColor(238,112,54);#Orange
$this->SetXY( $x1+58, $y1+54 );
$this->Cell( 20,4,"- de 15 euros","","","L");
}
if ( $Resto['repas15'] == 1)
{
$this->SetFont( "Arial","B", 6);
$this->SetTextColor(238,112,54);#Orange
$this->SetXY( $x1+58, $y1+54 );
$this->Cell( 20,4,"de 15 à 25 euros","","","L");
}
if ( $Resto['repas25'] == 1)
{
$this->SetFont( "Arial","B", 6);
$this->SetTextColor(238,112,54);#Orange
$this->SetXY( $x1+58, $y1+54 );
$this->Cell( 20,4,"de 25 à 35 euros","","","L");
}
if ( $Resto['repas35'] == 1)
{
$this->SetFont( "Arial","B", 6);
$this->SetTextColor(238,112,54);#Orange
$this->SetXY( $x1+58, $y1+54 );
$this->Cell( 20,4,"+ de 25 euros","","","L");
}
}
function addBloc...... et cela continue avec les autres blocs...
Merci