Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2840 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [FPDF] Problème de disposition Multicell après un Page Break

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[FPDF] Problème de disposition Multicell après un Page Break

n°2219333
renjps
Posté le 12-02-2014 à 09:40:17  profilanswer
 

Bonjour à tous je suis nouveau sur ce petit forum et après 2 jours à chercher sans relâche je m'en remet à vous chers codeurs...
Je dois faire un formulaire dans lequel on doit retrouver les informations des intervenants d'un chantier.
Sur la première page tout vas bien mais dès que je change de page, mon GetY fait n'importe quoi et décide de se mettre sur la 3e page.
J'ai remarqué également qu'en remettant en mode portrait le probleme était résolu. Mais il me faut un mode paysage impérativement :/
 
Voici mon code et un screen en pièce jointe (Flouté et censuré pour ne pas dévoiler le nom des clients :)
 

Code :
  1. // En-tête
  2. function Header()
  3. {
  4. global $descriptif;
  5. // Logo
  6. $this->Image('images/facet.png',10,6,30);
  7. // Police Arial gras 15
  8. $this->SetFont('Arial','B',15);
  9. // Décalage à droite
  10. $this->Cell(80);
  11. // Titre
  12. $this->Cell(118,10,'Liste des Intervenants "'.$descriptif.'"',0,0,'C');
  13. // Saut de ligne
  14. $this->Ln(15);
  15.  $this->SetFont('Times','B',15);
  16. }
  17. // Pied de page
  18. function Footer()
  19. {
  20. // Positionnement à 1,5 cm du bas
  21. $this->SetY(-15);
  22. // Police Arial italique 8
  23. $this->SetFont('Arial','I',8);
  24. // Numéro de page
  25. $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
  26. }
  27. }
  28. // Connection à la BDD
  29. $l1 = mysql_connect($host,$user,$password);
  30. $db_selected = mysql_select_db($base, $l1);
  31. mysql_query("SET NAMES 'utf8'" );
  32. // Récupération du nom du chantier
  33. $sql = "SELECT descriptif FROM chantier WHERE id_chantier=".$clean1['id_chantier']."";
  34. $req = mysql_query($sql) or die('Erreur SQL !<br />'.mysql_error());
  35. $recupbdd=mysql_fetch_array($req);
  36. $descriptif = $recupbdd['descriptif'];
  37. // Récupération id intervenants en fonction de l'id chantier
  38. $sql4 = "SELECT id_societe, id_lot FROM intervenant WHERE id_chantier = ".$clean1['id_chantier']." AND (type ='partenaire' OR type='entreprise')";
  39. $req4 = mysql_query($sql4) or die('Erreur SQL !<br />'.mysql_error());
  40. // i=1 couleur / i=0 transparent //
  41. $i=0;
  42. // Instanciation de la classe dérivée
  43. $pdf = new PDF('L','mm','A4');
  44. $pdf->AliasNbPages();
  45. $pdf->AddPage();
  46. $pdf->SetFillColor(242,221,220);
  47.  // Récupération des informations intervenants
  48.  while ($recupbdd4=mysql_fetch_array($req4)){
  49.   $sql5 = "SELECT DISTINCT lots.nom as nom_lot, societe.nom as nom_soc, adresse_1, cp, ville, telephone, fax, courriel FROM societe, lots,intervenant WHERE lots.id=intervenant.id_lot AND intervenant.id_societe=societe.id_societe AND societe.id_societe =".$recupbdd4['id_societe']." AND id=".$recupbdd4['id_lot'];
  50.   $req5 = mysql_query($sql5) or die('Erreur SQL !<br />'.mysql_error());
  51.   $recupbdd5=mysql_fetch_array($req5);
  52.   $i++;
  53.   $chaine = utf8_decode(umep_formtextarea($recupbdd5['nom_soc']));
  54.   $chaine2 = utf8_decode(umep_formtextarea($recupbdd5['adresse_1'].' - '.$recupbdd5['cp'].' '.$recupbdd5['ville'].' - tél.'.$recupbdd5['telephone'].' - fax '.$recupbdd5['fax']));
  55.   $pdf->SetFont('Times','B',12);
  56.   $longueur = $pdf -> GetStringWidth ($chaine);
  57.   $pdf->SetFont('Times','',12);
  58.   $longueur2 = $pdf -> GetStringWidth ($chaine2);
  59.   // Hauteur par défaut des Multicell
  60.   $h2=7;
  61.   $h1=7;
  62.   //Hauteur modifiée en fonction de la taille du texte.
  63.   if ($longueur2 > 209)
  64.   {
  65.    $h1=14;
  66.   }
  67.   elseif ($longueur > 67)
  68.   {
  69.    $h2=14;
  70.   }
  71.   if ($i & 1 == 1)
  72.   {
  73.    $pdf->SetFont('Times','BU',12);
  74.    $pdf -> Cell(0,7,utf8_decode(umep_formtextarea($recupbdd5['nom_lot'])),'TLR',1,'L',true);
  75.    $pdf->SetFont('Times','B',12);
  76.    $current_y = $pdf->GetY(); $current_x = $pdf->GetX();
  77.    $cell_width = 68;
  78.    $pdf -> MultiCell($cell_width,$h1,$chaine,'L', "C",true);
  79.    $pdf->SetFont('Times','',12);
  80.    $pdf->SetXY($current_x + $cell_width, $current_y);
  81.    $pdf -> MultiCell(209,$h2,$chaine2,'R','L',true);
  82.   }
  83.   else
  84.   {
  85.    $pdf->SetFont('Times','BU',12);
  86.    $pdf -> Cell(0,7,utf8_decode(umep_formtextarea($recupbdd5['nom_lot'])),'TLR',1,'L');
  87.    $pdf->SetFont('Times','B',12);
  88.    $current_y = $pdf->GetY(); $current_x = $pdf->GetX();
  89.    $cell_width = 68;
  90.    $pdf -> MultiCell($cell_width,$h1,$chaine,'L', "C" );
  91.    $pdf->SetFont('Times','',12);
  92.    $pdf->SetXY($current_x + $cell_width, $current_y);
  93.    $pdf -> MultiCell(209,$h2,$chaine2,'R','L');
  94.   }
  95.   //Récupération des informations des membres intervenants
  96.   $sql9 = "SELECT DISTINCT id_intervenant, id_societe, id_lot FROM intervenant WHERE id_chantier=".$clean1['id_chantier']." AND (type='partenaire' OR type='entreprise')AND id_societe= ".$recupbdd4['id_societe']."";
  97.   $req9 = mysql_query($sql9) or die('Erreur SQL !<br />'.mysql_error());
  98.   while ($recupbdd9=mysql_fetch_array($req9)){
  99.    $sql10 ="SELECT DISTINCT id_adherent from intervenant_contact where id_intervenant=".$recupbdd9['id_intervenant']." AND id_lot=".$recupbdd9['id_lot']."";
  100.    $req10 = mysql_query($sql10) or die('Erreur SQL !<br />'.mysql_error());
  101.    while($recupbdd10=mysql_fetch_array($req10)){
  102.     $sql11 ="SELECT DISTINCT nom,telephone,courriel FROM utilisateur WHERE id_utilisateur=".$recupbdd10['id_adherent']."";
  103.     $req11 = mysql_query($sql11) or die('Erreur SQL !<br />'.mysql_error());
  104.     while($recupbdd11=mysql_fetch_array($req11)){
  105.      $chaine2 = utf8_decode(umep_formtextarea($recupbdd11['nom'].' - tél. : '.$recupbdd11['telephone']." - ".$recupbdd11['courriel']));
  106.      $pdf->SetFont('Times','',12);
  107.      $longueur2 = $pdf -> GetStringWidth ($chaine2);
  108.      $h2=5;
  109.      $h1=5;
  110.      if ($longueur2 > 207)
  111.      {
  112.       $h1=10;
  113.      }
  114.      if ($i & 1 ==1)
  115.      {
  116.       $current_y = $pdf->GetY(); $current_x = $pdf->GetX();
  117.       $cell_width = 68;
  118.       $pdf -> Multicell(68,$h1,'Contact','RL','C',true);
  119.       $pdf->SetXY($current_x + $cell_width, $current_y);
  120.       $pdf -> Multicell(0,$h2,$chaine2,'R',1,true);
  121.      }
  122.      else
  123.      {
  124.       $current_y = $pdf->GetY(); $current_x = $pdf->GetX();
  125.       $cell_width = 68;
  126.       $pdf -> Multicell(68,$h1,'Contact','L','C');
  127.       $pdf->SetXY($current_x + $cell_width, $current_y);
  128.       $pdf -> Multicell(0,$h2,$chaine2,'R',1);
  129.      }
  130.     }
  131.    }
  132.   }
  133.  }
  134.  $pdf -> Cell(0,0,'',1,'L');
  135. $pdf->Output();


 
Lien Image : http://hpics.li/df44b14


Message édité par renjps le 12-02-2014 à 09:41:08
mood
Publicité
Posté le 12-02-2014 à 09:40:17  profilanswer
 

n°2219702
sltpaulo
Posté le 14-02-2014 à 16:43:35  profilanswer
 

simple :

Code :
  1. $pdf->AddPage('landscape');
  2. au lieu de :
  3. $pdf->AddPage();


Message édité par sltpaulo le 14-02-2014 à 16:43:56

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [FPDF] Problème de disposition Multicell après un Page Break

 

Sujets relatifs
Problème avec compteur + boucleprobleme de communication client server (socket)
[cakephp] problème d'affichage[Probleme]Forum
Afficher correctement un email dans une page htmlProblème enregistrement canvas avec photo en fond (security error)
Probleme indefini (debutant).[C]Problème affichage Calendrier en C (débutant)
problème Javascript sous safari[ PHP / Probleme ] PHP indisponible sur mon site
Plus de sujets relatifs à : [FPDF] Problème de disposition Multicell après un Page Break


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR