Hallo Gemeinde,
ich habe ein Schleifenproblem.
Zum Sachverhalt: Ich arbeite gerade an einer Auswertung für Betriebsdaten. Diese sieht auch einen PDF Export vor. Ich baue mir mit FPDF eine PDF in zwei Schleifen auf.
Leider wird die erste Schleife scheinbar nur einmal durchlaufen, da der Titeltext nur einmal erscheint. Wie kann ich das Problem umgehen?
Hier mein Quellcode:
Vielen Dank für eure Hilfe
ich habe ein Schleifenproblem.
Zum Sachverhalt: Ich arbeite gerade an einer Auswertung für Betriebsdaten. Diese sieht auch einen PDF Export vor. Ich baue mir mit FPDF eine PDF in zwei Schleifen auf.
Leider wird die erste Schleife scheinbar nur einmal durchlaufen, da der Titeltext nur einmal erscheint. Wie kann ich das Problem umgehen?
Hier mein Quellcode:
PHP-Code:
//Aufbau der PDF
$pdf=new MYPDF('P','mm','A4');
$pdf->AliasNbPages();
$pdf->SetMargins($pdf->left, $pdf->top, $pdf->right);
$pdf->AddPage();$pdf->SetFont('Arial','B',16);
//Beginn Datenabfrage AZS Timing für Mitarbeiter
$azs_name_query = "SELECT PNR, VNAME, NAME FROM PZSTAMM WHERE ABT='3' AND BEZ1 IS NOT NULL ORDER BY PNR";
$azs_name_result = odbc_exec($azs, $azs_name_query);
while ($row = odbc_fetch_object($azs_name_result)) {
$pnr = $row->PNR;
$vname = $row->VNAME;
$name = $row->NAME;
//Aufbau des Titels
$str_titeltext = 'Betriebsdatenauswertung für '.$vname.' '.$name;
$pdf->SetFont('Arial','B',16);
$pdf->MultiCell(180,10, $str_titeltext);
$pdf->SetFont('Arial','B',12);
//Arbeitszeiten aus der AZS Timing auslesen
if (!empty($zeit_bis)) {
$zeit = "AND zeit.DATUM>='".str_replace("-", "", date_german2mysql($zeit_von))."' AND zeit.DATUM<='".str_replace("-", "", date_german2mysql($zeit_bis))."' GROUP BY zeit.DATUM, stamm.NAME, stamm.VNAME, stamm.BEZ1";
} else {
$zeit = "AND zeit.DATUM='".str_replace("-", "", date_german2mysql($zeit_von))."'";
}
//Datenbank nach Zeiten abfragen
$azs_query_zeiten = "SELECT min(zeit.ZEITVON_M) as ZEITVON_M, max(zeit.ZEITBIS_M) as ZEITBIS_M, stamm.NAME, stamm.VNAME, stamm.BEZ1, zeit.DATUM FROM PZBEWINT zeit, PZSTAMM stamm WHERE zeit.PNR=stamm.PNR AND zeit.KTONR<>'13' AND zeit.KTONR<>'14' AND stamm.PNR='".$pnr."' ".$zeit;
$azs_result_zeiten = odbc_exec($azs, $azs_query_zeiten);
$uhrzeit = "";
while ($row = odbc_fetch_object($azs_result_zeiten)) {
$bez1 = $row->BEZ1;
$zeitvon = $row->ZEITVON_M;
$zeitbis = $row->ZEITBIS_M;
$datum = $row->DATUM;
$datum_2 = $datum;
$vonzeit = gmdate("H:i",$zeitvon);
$biszeit = gmdate("H:i",$zeitbis);
$zeitanwesend = gmdate("H:i",$zeitbis-$zeitvon);
$zeitanwesend = get_time_difference_std("00:45", $zeitanwesend);
//Datum und Uhrzeit zusammenfassenfassen, um Gesamtstunden zu ermitteln
$uhrzeit_von = explode(":", $vonzeit);
$uhrzeit_bis = explode(":", $biszeit);
$datum = explode(".", date_mysql2german($datum));
$vonzeit = mktime($uhrzeit_von[0],$uhrzeit_von[1],"00",$datum[1],$datum[0],$datum[2]);
$biszeit = mktime($uhrzeit_bis[0],$uhrzeit_bis[1],"00",$datum[1],$datum[0],$datum[2]);
$pausezeit = mktime("02","45","00",$datum[1],$datum[0],$datum[2]);
$uhrzeit_summe = (($biszeit-$vonzeit)-$pausezeit);
$uhrzeit_summe = explode(":", gmdate("H:i",$uhrzeit_summe));
$uhrzeit = (($uhrzeit_summe[0]*3600)+($uhrzeit_summe[1]*60))+$uhrzeit;
$stunden = floor($uhrzeit/3600);
$minuten = floor(($uhrzeit-($stunden*3600))/60);
//Aufbau des PDF Kopfes
$str_l_arbeitszeit_von = $pdf->GetStringWidth($str_arbzeit_von)+2;
$str_l_arbeitszeit_bis = $pdf->GetStringWidth($str_arbzeit_bis)+2;
$str_l_zeitvon = $pdf->GetStringWidth($zeit_von)+10;
$str_l_zeitbis = $pdf->GetStringWidth($zeit_bis)+10;
$str_l_uhrzeit = $pdf->GetStringWidth($stunden.":".$minuten)+10;
// create table
$columns = array();
// header col
$col = array();
$col[] = array('text' => $str_arbzeit_von, 'width' => $str_l_arbeitszeit_von, 'height' => '5', 'align' => 'C', 'font_name' => 'Arial', 'font_size' => '8', 'font_style' => 'B', 'fillcolor' => '0,134,117', 'textcolor' => '255,255,255', 'drawcolor' => '0,0,0', 'linewidth' => '0.4', 'linearea' => 'LTBR');
$col[] = array('text' => $zeit_von, 'width' => $str_l_zeitvon, 'height' => '5', 'align' => 'C', 'font_name' => 'Arial', 'font_size' => '8', 'font_style' => 'B', 'fillcolor' => '0,134,117', 'textcolor' => '255,255,255', 'drawcolor' => '0,0,0', 'linewidth' => '0.4', 'linearea' => 'LTBR');
$col[] = array('text' => $str_arbzeit_bis, 'width' => $str_l_arbeitszeit_bis, 'height' => '5', 'align' => 'C', 'font_name' => 'Arial', 'font_size' => '8', 'font_style' => 'B', 'fillcolor' => '0,134,117', 'textcolor' => '255,255,255', 'drawcolor' => '0,0,0', 'linewidth' => '0.4', 'linearea' => 'LTBR');
$col[] = array('text' => $zeit_bis, 'width' => $str_l_zeitbis, 'height' => '5', 'align' => 'C', 'font_name' => 'Arial', 'font_size' => '8', 'font_style' => 'B', 'fillcolor' => '0,134,117', 'textcolor' => '255,255,255', 'drawcolor' => '0,0,0', 'linewidth' => '0.4', 'linearea' => 'LTBR');
$col[] = array('text' => $stunden.":".$minuten, 'width' => $str_l_uhrzeit, 'height' => '5', 'align' => 'C', 'font_name' => 'Arial', 'font_size' => '8', 'font_style' => 'B', 'fillcolor' => '0,134,117', 'textcolor' => '255,255,255', 'drawcolor' => '0,0,0', 'linewidth' => '0.4', 'linearea' => 'LTBR');
$columns[] = $col;
//Prüfen, ob Mitarbeiter bereits im Array ist
/*if (in_array($bez1, $pnr_arr)==FALSE) {
$pnr_arr[] = $bez1;
}*/
}
$pdf->WriteTable($columns);
//neue Seite im Dokument;
$pdf->AddPage();
}
$pdf->Output('auswertung.pdf');
Kommentar