Tableau FPDF

Eléphant du PHP | 167 Messages

07 juin 2013, 15:41

Bonjour,

Je veux faire une sorte de grand tableau affichant mes formations en pdf. Je veux faire une colonne par mois et dans chacune des cases de la colonne avoir le nom de la formation.
J'ai deux tables, formation, dateformation
Le titre de la colonne serait donc le mois extrait de la date.

J'ai un premier code qui à l'air de marcher pour une colonne.
Mais je sèche pour les autres.
Quand je fais print_r($header) ça ne m'affiche que le premier mois et non la liste de tout les mois concernés.
$pdf=new PDF();
    $req= "SELECT d.date FROM dateformation d, Formation f WHERE f.id_form=d.id_form";
  $query3=mysql_query($req);
  setlocale(LC_TIME, "fr_FR.utf-8", "fra");
    $dates='';
      while($ligne = mysql_fetch_array($query3)){
    $dates.= strftime('%d %B %Y', strtotime($ligne['dates']));
     list($jour, $mois, $annee) = explode(" ",$dates);
        $header=array($mois);
        }

        $pdf->AddPage('L');

        $query="select distinct d.date, p.nom_form FROM dateformation d, Formation f WHERE f.id_form=d.id_form group by nom_form ,'".$mois."' ";
    $resultat=mysql_query($query);
    $pdf->SetXY(30,55);

    for($i=0;$i<sizeof($header);$i++)
    $pdf->cell(5,1,$header[$i],0,1,'C',0);

    $pdf->SetFont('Arial','',10);
    $pdf->SetXY(25,$pdf->GetY()+5);

    while($row=mysql_fetch_array($resultat))
    {

    $txt="".$row['nom_form']."
    ".$jour;
    $pdf->MultiCell(45,5,utf8_decode($txt),0,'L',0,0); 
   
 
    $pdf->SetXY(25,$pdf->GetY()+5);
   
    }
    $pdf->output();
Merci de votre aide.
Cordialement

Pitet
Invité n'ayant pas de compte PHPfrance

07 juin 2013, 16:28

Salut,

La variable $header ne t'affiche qu'un mois car elle est affectée dans la boucle while, donc à chaque itération tu recrée un nouveau tableau.

Pour avoir tous les mois dans ton tableau il faut procéder de la même manière que pour ta variable $dates, c'est à dire :
- initialisé ton tableau avant la boucle while
- puis ajouter les éléments dans ton tableau à chaque itération de la boucle

Tu peux faire comme ceci par exemple :
$dates = '';
[b]$header = array(); // on initialise notre variable en créant un tableau vide[/b]
while($ligne = mysql_fetch_array($query3)){
    $dates.= strftime('%d %B %Y', strtotime($ligne['dates']));
    list($jour, $mois, $annee) = explode(" ",$dates);
[b]    $header[] = $mois; // on ajoute un élément au tableau[/b]
}
Bon développement

Pitet
Invité n'ayant pas de compte PHPfrance

07 juin 2013, 16:31

Petit fail sur le code posté, et pas possible d'éditer mon message (ça m'apprendra à ne pas me connecter).

Correction :
$dates = '';
$header = array(); // on initialise notre variable en créant un tableau vide
while($ligne = mysql_fetch_array($query3)){
    $dates.= strftime('%d %B %Y', strtotime($ligne['dates']));
    list($jour, $mois, $annee) = explode(" ",$dates);
    $header[] = $mois; // on ajoute un élément au tableau
}

Eléphant du PHP | 167 Messages

07 juin 2013, 16:36

Re,

Merci d'avoir répondu Pitet.
J'ai les changements, pourtant quand j'affiche les résultats j'ai ceci :
Array ( [0] => juin [1] => juin [2] => juin [3] => juin [4] => juin [5] => juin [6] => juin )
En sachant que dans ma base j'ai 1 date au mois de juillet et les 6 autres en juin.

Eléphant du PHP | 167 Messages

10 juin 2013, 10:47

Bonjour,

Est-ce que quelqu'un peut m'aider parce que là je ne vois pas du tout ?

Merci d'avance.