Hallo zusammen,
und wieder hab ich ein Problem.. diesmal mit der FPDF-Klasse bei der Erstellung eines neuen pdf-Documents.
Gedacht ist das so, dass alle Klassen aus einer Datenbank ausgelesen werden.. dann werden in einer while-Schleife die Teilnehmer einer jeden Klassen ausgelesen und in ein Array geschrieben ($data[klasse][teilnehmer]). Wenn für eine Klasse keine Teilnehmer vorhanden sind, wird die komplette Klasse ausgelassen - also nicht in das Array geschrieben. Wenn ich jetzt über print_r($data) ausgeben lasse, was vorhanden ist, dann wird mir der (derzeit einzig vorhandene) Teilnehmer angezeigt. Wenn ich allerdings über die Tabelle im pdf den ausgeben möchte, dann steht zwar für die Klasse der Tabellen-kopf da, aber nicht der Teilnehmer selber.
Hier mal der Code dazu:
Alles anzeigen
Angezeigt wird dann eben nur der Teil mit $header. Ich bin mir fast sicher, dass es an der for und der foreach-Schleife liegt, aber ich kanns nicht mit Garantie sagen, bzw. weiß nicht, wie ich den Fehler beheben kann.
Ich hoffe, ihr könnt mir folgen, was ich mein, und mir helfen
Danke schonmal
LG
Fipsi
und wieder hab ich ein Problem.. diesmal mit der FPDF-Klasse bei der Erstellung eines neuen pdf-Documents.
Gedacht ist das so, dass alle Klassen aus einer Datenbank ausgelesen werden.. dann werden in einer while-Schleife die Teilnehmer einer jeden Klassen ausgelesen und in ein Array geschrieben ($data[klasse][teilnehmer]). Wenn für eine Klasse keine Teilnehmer vorhanden sind, wird die komplette Klasse ausgelassen - also nicht in das Array geschrieben. Wenn ich jetzt über print_r($data) ausgeben lasse, was vorhanden ist, dann wird mir der (derzeit einzig vorhandene) Teilnehmer angezeigt. Wenn ich allerdings über die Tabelle im pdf den ausgeben möchte, dann steht zwar für die Klasse der Tabellen-kopf da, aber nicht der Teilnehmer selber.
Hier mal der Code dazu:
Quellcode
- require('fpdf17/fpdf.php');
- class PDF extends FPDF
- {
- // Page header
- function Header()
- {
- // Arial bold 15
- $this->SetFont('Arial','B',15);
- // Move to the right
- $this->Cell(5);
- // Title
- $this->Cell(25,15,'Ergebnisliste',0,0,'L');
- // Line break
- $this->Ln(15);
- }
- // Page footer
- function Footer()
- {
- // Position at 1.5 cm from bottom
- $this->SetY(-15);
- // Arial italic 8
- $this->SetFont('Arial','I',8);
- // Page number
- $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
- }
- // Better table
- function ImprovedTable($header, $data)
- {
- $this->Ln();
- $this->SetFont('Arial','',11);
- $this->Cell(100,10,'Klasse: '.$header[1],0,'L');
- //$this->Cell(0,10,'ID: '.$header[2],0,'L');
- $this->Ln();
- $this->SetFont('Arial','B',9);
- $this->Cell(12,7,'','B',0,'L');
- $this->Cell(35,7,'Name','B',0,'L');
- $this->Cell(40,7,'Verein','B',0,'L');
- $this->Cell(13,7,'Jahr','B',0,'L');
- $this->Cell(13,7,'Land','B',0,'L');
- $this->Cell(11,7,$header[3].' Mtr','B',0,'C');
- $this->Cell(11,7,$header[4].' Mtr','B',0,'C');
- if ($header[5] != NULL) {
- $this->Cell(11,7,$header[5].' Mtr','B',0,'C'); }
- else {
- $this->Cell(11,7,'-','B',0,'C'); }
- if ($header[6] != NULL) {
- $this->Cell(11,7,$header[6].' Mtr','B',0,'C'); }
- else {
- $this->Cell(11,7,'-','B',0,'C'); }
- $this->Cell(10,7,'10\'','B',0,'C');
- $this->Cell(10,7,'9\'','B',0,'C');
- $this->Cell(15,7,'Total','B',0,'L');
- $this->Ln();
- // Data
- $this->SetFont('Arial','',10);
- for ($i=1;$i<count($data);$i++)
- {
- foreach($data[$i] as $row)
- {
- $this->Cell(12,5,$row[1],0,'L');
- $this->Cell(45,5,$row[2],0,0,'L');
- $this->Cell(55,5,$row[3],0,0,'L');
- $this->Cell(55,5,$row[4],0,0,'L');
- $this->Cell(15,5,$row[5],0,0,'C');
- $this->Cell(10,5,$row[6],0,0,'C');
- $this->Cell(10,5,$row[7],0,0,'C');
- $this->Cell(10,5,$row[8],0,0,'C');
- $this->Cell(10,5,$row[9],0,0,'C');
- $this->Cell(10,5,$row[10],0,0,'C');
- $this->Cell(10,5,$row[11],0,0,'C');
- $this->Cell(10,5,$row[12],0,0,'C');
- $this->Cell(10,5,$row[13],0,0,'C');
- $this->Ln();
- }
- }
- //print_r($data);
- // Closing line
- }
- }
- $pdf = new PDF();
- $pdf->SetTitle("Ergebnisliste");
- $pdf->AliasNbPages();
- $pdf->AddPage();
- $pdf->SetFont('Arial','',12);
- $pdf->Cell(5);
- $pdf->MultiCell(0,5,$titel,0,1);
- $ergebnis1 = $mysqli->query("SELECT name, id, entf_1_durchgang, entf_2_durchgang, entf_3_durchgang, entf_4_durchgang FROM klasse");
- while ($row1 = $ergebnis1->fetch_object())
- {
- $header = array(
- 1 => $row1->name,
- 2 => $row1->id,
- 3 => $row1->entf_1_durchgang,
- 4 => $row1->entf_2_durchgang,
- 5 => $row1->entf_3_durchgang,
- 6 => $row1->entf_4_durchgang);
- $data = array();
- $i = 1;
- $ergebnis2 = $mysqli->query("SELECT name, verein, entf_1_ergebnis, entf_2_ergebnis, entf_3_ergebnis, entf_4_ergebnis, ergebnis_gesamt, x, x_10, scheibe_num, scheibe_alph FROM teilnehmer WHERE klasse = '$row1->id' ORDER BY ergebnis_gesamt, x, x_10 DESC");
- if ($ergebnis2->num_rows != NULL)
- {
- while ($row2 = $ergebnis2->fetch_object())
- {
- $ergeb1 = $mysqli->query("SELECT name FROM verein WHERE id = '$row2->verein'");
- $ro1 = $ergeb1->fetch_object();
- $data[$i] = array(
- 2 => $row2->scheibe_num.$row2->scheibe_alph,
- 3 => $row2->name,
- 4 => $ro1->name,
- 5 => '',
- 6 => '',
- 7 => $row2->entf_1_ergebnis,
- 8 => $row2->entf_2_ergebnis,
- 9 => $row2->entf_3_ergebnis,
- 10 => $row2->entf_4_ergebnis,
- 11 => $row2->x,
- 12 => $row2->x_10,
- 13 => $row2->ergebnis_gesamt);
- $i++;
- }
- //print_r($data);
- $pdf->ImprovedTable($header, $data);
- }
- }
- $pdf->Output();
Angezeigt wird dann eben nur der Teil mit $header. Ich bin mir fast sicher, dass es an der for und der foreach-Schleife liegt, aber ich kanns nicht mit Garantie sagen, bzw. weiß nicht, wie ich den Fehler beheben kann.
Ich hoffe, ihr könnt mir folgen, was ich mein, und mir helfen
Danke schonmal
LG
Fipsi