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
onjour,

Je rencontre un petit souci.
Génération d'un pdf. Le resultat à afficher est 28 references (par exemple).
Je souhaite afficher 8 ref par page a4 (2 par ligne), ce qui devrait faire 4 pages (8/8/8/4).

Voir ci-dessous le code de mon fichier type.php.
Mon problème est le suivant :

Chaque page affiche bien 8 résultats mais 4 fois le même : 1ère ligne ref001 / ref 002 ; 2ème 3ème et 4 ème ligne idem ref001 / ref 002 puis 2ème page 1ère ligne ref003 / ref 003 etc...
Merci pour les réponses que vous m apporterez.



<?php

define('FPDF_FONTPATH','../lib/class/pdf/font/');

include("../configuration.inc.php");

require_once("table2pdf-new.php");

$pdf = new CATALOGUE( 'P', 'mm', 'A4' );

$pdf->Open();

// Requête par défault
$sql = "SELECT s.* FROM peel_sites s";


// Récupération des variables
$annuid = (isset($_GET['annuid'])) ? intval($_GET['annuid']) : "";

$ville = (isset($_GET['ville'])) ? intval($_GET['ville']) : "";

$dpt = (isset($_GET['dpt'])) ? intval($_GET['dpt']) : "";

$service = (isset($_GET['service'])) ? intval($_GET['service']) : "";

$midi = (isset($_GET['midi'])) ? htmlspecialchars($_GET['midi'], ENT_QUOTES) : "";

$soir = (isset($_GET['soir'])) ? htmlspecialchars($_GET['soir'], ENT_QUOTES) : "";

$repas = (isset($_GET['repas'])) ? htmlspecialchars($_GET['repas'], ENT_QUOTES) : "";

$inner = "";

$inner .= (!empty($annuid)) ? " INNER JOIN peel_annuaires_sites pas ON (s.id = pas.site_id)" : "";

$inner .= (!empty($service)) ? " INNER JOIN peel_services_sites ss ON (s.id = ss.site_id)" : "";

$where = " WHERE 1 ";

if (!empty($type)) { $where .= " AND pas.annuaire_id = '$type'";}

if (!empty($annuid)) { $where .= " AND pas.annuaire_id = '$annuid'";}

if (!empty($service)) { $where .= " AND ss.service_id = '$service'";}

$where .= (!empty($ville)) ? " AND s.id_ville = '$ville'" : "";

$where .= (!empty($dpt)) ? " AND s.id_departement = '$dpt'" : "";

if (!empty($repas)) {

switch ($repas) {

case "0":

$where .= " AND s.repas0 = '1'";

break;

case "15" :

$where .= " AND s.repas15 = '1'";

break;

case "25" :

$where .= " AND s.repas25 = '1'";

break;

case "35" :

$where .= " AND s.repas35 = '1'";

break;

case "50" :

$where .= " AND s.repas50 = '1'";

break;

}

}

if (!empty($midi)) {
switch ($midi) {
case "Lundi" : $where .= " AND (s.lundi_midi = '1' OR s.lundi_midi = '2')"; break;
case "Mardi" : $where .= " AND (s.mardi_midi = '1' OR s.mardi_midi = '2')"; break;
case "Mercredi" : $where .= " AND (s.mercredi_midi = '1' OR s.mercredi_midi = '2')"; break;
case "Jeudi" : $where .= " AND (s.jeudi_midi = '1' OR s.jeudi_midi = '2')";break;
case "Vendredi" : $where .= " AND (s.vendredi_midi = '1' OR s.vendredi_midi = '2')";break;
case "Samedi" : $where .= " AND (s.samedi_midi = '1' OR s.samedi_midi = '2')";break;
case "Dimanche" : $where .= " AND (s.dimanche_midi = '1' OR s.dimanche_midi = '2')";break;
}
}

if (!empty($soir)) {
switch ($soir) {
case "Lundi" : $where .= " AND (s.lundi_soir = '1' OR s.lundi_soir = '2')"; break;
case "Mardi" : $where .= " AND (s.mardi_soir = '1' OR s.mardi_soir = '2')"; break;
case "Mercredi" : $where .= " AND (s.mercredi_soir = '1' OR s.mercredi_soir = '2')"; break;
case "Jeudi" : $where .= " AND (s.jeudi_soir = '1' OR s.jeudi_soir = '2')";break;
case "Vendredi" : $where .= " AND (s.vendredi_soir = '1' OR s.vendredi_soir = '2')";break;
case "Samedi" : $where .= " AND (s.samedi_soir = '1' OR s.samedi_soir = '2')";break;
case "Dimanche" : $where .= " AND (s.dimanche_soir = '1' OR s.dimanche_soir = '2')";break;
}
}

$sql .= $inner." ".$where." AND s.etat = '1' ORDER BY s.nom";


$resResto = mysql_query($sql);

if (mysql_num_rows($resResto) > 0) {

$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++;

}

}

$pdf->Output();
?>
A voir également:

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
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.
0
Merci Croy pour cette réponse si rapide !
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
0
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
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.
0