CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken |
12.08.2007, 01:07:42
|
Anfänger
|
|
Registriert seit: May 2007
Alter: 48
Beiträge: 12
|
|
Trotz Daten keine Ausgabe - ich werd' noch wahnsinnig...
Hallo Forum,
nachdem ich jetzt seit einiger Zeit erfolgreich mit PHP arbeite bin ich heute an eine Grenze gestossen und komme nicht mehr weiter. Vielleicht muss mir auch einfach nur jemand die Augen öffnen, aber ich finde den Fehler nicht.
Das Problem stellt sich wie folgt dar:
Ich programmiere derzeit eine MySQL/PHP-basierte "Webapplikation" für eine Firma mit 20 Aussendienstmitarbeitern. Diesen Mitarbeitern wird jeden Tag eine eMail mit der Einsatzplanung für den nächsten Tag zugesandt. Die Einsätze etc. werden den Mitarbeitern automatisch (oder auch manuell) durch die Software zugewiesen und die Einsatzpläne im PDF-Format mittels FPDF erstellt.
Da die Einsatzpläne aber vor dem Versand noch kontrolliert werden müssen lasse ich sie im Browser anzeigen. Die Einsatzpläne stimmen, die Daten stimmen. So weit so gut.
Es wird aber IMMER eine PDF-Seite WENIGER angezeigt (und auch versandt) als Mitarbeiter mit Einsätzen vorhanden sind. Ich habe sämtliche Schleifen kontrolliert, eine MsgBox-Funktion eingebaut um mir die Daten zur Laufzeit anzeigen zu lassen, die Daten sind korrekt (es werden ALLE Mitarbeiter abgearbeitet, wenn 5 Mitarbeiter Einsätze haben poppt die MsgBox 5x auf -> OK), das PDF ist aber IMMER um eine Seite zu kurz, das heisst er hängt die letzte Seite nicht an, obwohl korrekt in die Schleife verzweigt wird. Ich finde den Fehler trotz intensiven Suchens nicht.
Vielleicht einer von euch ?
PHP-Code:
<?php
session_start();
if (!isset($_SESSION['validated'])) {
header('Location: index.php');
exit;
}
else
{
require "configure.php";
require "language/".$cfg_language.".php";
require "functions.php";
define('FPDF_FONTPATH', 'font/');
require("fpdf.php");
$sql=mysql_connect($dbhost,$dbuser,$dbpass) or die ("MySQL-Fehler - Verbindung zur Datenbank fehlgeschlagen!");
mysql_select_db($dbname) or die ("MySQL-Fehler: Datenbank nicht gefunden!");
$dateinput=$_GET['datum'];
$month = substr($dateinput, 4 ,2);
$day = substr($dateinput, 6, 2);
$year = substr($dateinput, 0 ,4);
$datenow = (string) $day.'.'.$month.'.'.$year;
$result = mysql_query("SELECT MitarbeiterID, MitarbeiterName,Telefon FROM tbl_mitarbeiter");
if (!$result)
{
echo '<p>Fehler bei der Auftragsauflistung.</p>';
exit();
}
else
{
$num_rows=mysql_num_rows($result);
$pdf = new FPDF;
for ($i=0; $i<$num_rows; $i++)
{
$row=mysql_fetch_array($result);
$mitarb=$row['MitarbeiterID'];
$mitarbname=$row['MitarbeiterName'];
$mitarbtelefon=$row['Telefon'];
$orderquery="SELECT tbl_auftraege_aktiv.SMS_VerifikationsNr,tbl_auftraege_aktiv.TAL,tbl_auftraege_aktiv.Datum, tbl_auftraege_aktiv.Kundennummer, tbl_auftraege_aktiv.auftragsklasse, tbl_auftraege_aktiv.FKTO_Nr, tbl_mitarbeiter.MitarbeiterName, tbl_auftragsklassen.AK_ID, tbl_auftragsklassen.AK_Bez FROM tbl_auftraege_aktiv INNER JOIN tbl_mitarbeiter ON tbl_auftraege_aktiv.Techniker_ID = tbl_mitarbeiter.MitarbeiterID INNER JOIN tbl_auftragsklassen ON tbl_auftraege_aktiv.auftragsklasse = tbl_auftragsklassen.AK_ID WHERE tbl_mitarbeiter.MitarbeiterID='$mitarb' AND tbl_auftraege_aktiv.Datum='$datenow'";
$result2 = mysql_query($orderquery);
$num_rows2=mysql_num_rows($result2);
if ($num_rows2>0)
{
// MsgBox($num_rows2);
// Neue Seite anlegen, Querformat, Überschrift und Monteurdaten ausgeben
$pdf->AddPage('L');
$pdf->SetAutoPageBreak(false);
$pdf->SetFont('Courier','B','14');
$pdf->SetXY(5,0);
$pdf->Cell(280,10,'Einsatzplanung');
$pdf->SetFontSize('10');
$pdf->SetXY(5,10);
$pdf->Cell(280,10,'Aufträge vom: '.$datenow.' / Monteur: '.$mitarbname.' / Ausführende Firma: XXXXXXXXXXX / Rufnummer: '.$mitarbtelefon);
$pdf->SetXY(5,20);
$pdf->SetFont('Courier','','7');
// aktuelle Position auslesen
$nullx=$pdf->GetX();
$nully=$pdf->GetY();
// Formular-Header aufbauen
$string='CD Auftragsnr.';
$n = $pdf->GetStringWidth($string);
$pdf->Cell($n+2,10,$string,1,0,'C');
$w1=$n+2;
$string='lauf. Nr.';
$n = $pdf->GetStringWidth($string);
$pdf->Cell($n+2,10,$string,1,0,'C');
$w2=$n+2;
$nullx2=$pdf->GetX();
$nully2=$pdf->GetY();
$string='950 Z/W';
$n = $pdf->GetStringWidth($string);
$pdf->MultiCell(($n/2)+2,5,$string,1,0,'C');
$w3=($n/2)+2;
$pdf->SetXY($nullx2+$w3,$nully2);
$string='96E Z/W';
$n = $pdf->GetStringWidth($string);
$pdf->MultiCell(($n/2)+2,5,$string,1,0,'C');
$w4=($n/2)+2;
$pdf->SetXY($nullx2+$w3+$w4,$nully2);
$string='DSL Z/W';
$n = $pdf->GetStringWidth($string);
$pdf->MultiCell(($n/2)+2,5,$string,1,0,'C');
$w5=($n/2)+2;
$pdf->SetXY($nullx2+$w3+$w4+$w5,$nully2);
$string='Ortsnetz';
$n = $pdf->GetStringWidth($string);
$pdf->Cell($n+2,10,$string,1,0,'C');
$w6=$n+2;
$string='Kundennummer';
$n = $pdf->GetStringWidth($string);
$pdf->Cell($n+10,10,$string,1,0,'C');
$w7=$n+10;
$string='Rufnummer';
$n = $pdf->GetStringWidth($string);
$pdf->Cell($n+10,10,$string,1,0,'C');
$w8=$n+10;
$string='Anzahl';
$n = $pdf->GetStringWidth($string);
$pdf->Cell($n+2,10,$string,1,0,'C');
$w9=$n+2;
$curx=$pdf->GetX();
$cury=$pdf->GetY();
$string='Schalten';
$n = $pdf->GetStringWidth($string);
$pdf->Cell(21,5,$string,1,0,'C');
$w10=21;
$w101=7;
$w102=7;
$w103=7;
$pdf->SetXY($curx,$cury+5);
$string='AA';
$n = $pdf->GetStringWidth($string);
$pdf->Cell(7,5,$string,1,0,'C');
$string='HVT';
$n = $pdf->GetStringWidth($string);
$pdf->Cell(7,5,$string,1,0,'C');
$string='KVZ';
$n = $pdf->GetStringWidth($string);
$pdf->Cell(7,5,$string,1,0,'C');
$pdf->SetXY($curx+21,$cury);
$string='Endltg.';
$n = $pdf->GetStringWidth($string);
$pdf->Cell($n+2,10,$string,1,0,'C');
$w11=$n+2;
$string='SMN';
$n = $pdf->GetStringWidth($string);
$pdf->Cell($n+2,10,$string,1,0,'C');
$w12=$n+2;
$curx=$pdf->GetX();
$cury=$pdf->GetY();
$string='erledigt';
$n = $pdf->GetStringWidth($string);
$pdf->Cell(16,5,$string,1,0,'C');
$w13=16;
$w131=8;
$w132=8;
$pdf->SetXY($curx,$cury+5);
$string='ja';
$n = $pdf->GetStringWidth($string);
$pdf->Cell(8,5,$string,1,0,'C');
$string='nein';
$n = $pdf->GetStringWidth($string);
$pdf->Cell(8,5,$string,1,0,'C');
$pdf->SetXY($curx+16,$cury);
$string='Zeit X:XX';
$n = $pdf->GetStringWidth($string);
$pdf->Cell($n+2,10,$string,1,0,'C');
$w14=$n+2;
$string='Bemerkungen: Karte, Fehler, Unterbrechung, usw.';
$n = $pdf->GetStringWidth($string);
$pdf->Cell($n+2,10,$string,1,0,'C');
$w15=$n+2;
$string='TAL';
$n = $pdf->GetStringWidth($string);
$pdf->Cell($n+2,10,$string,1,0,'C');
$w16=$n+2;
$rownumber=0;
// Auftragszeilen ausgeben
for ($i=0; $i<$num_rows2; $i++) {
$row2=mysql_fetch_array($result2);
$rownumber++;
$string=$row2['SMS_VerifikationsNr'];
$pdf->SetXY($nullx,$nully+10+(($rownumber-1)*5));
$cury=$pdf->GetY();
// Wenn Blatt voll neues Blatt anlegen
if ($cury+5>160) {
$pdf->AddPage('L');
$nullx=5;
$nully=5;
$rownumber=0;
$pdf->SetXY($nullx,$nully);
}
$pdf->Cell($w1,5,$string,1,0,'R');
$pdf->Cell($w2,5,$i+1,1,0,'C');
$pdf->Cell($w3,5,'',1,0);
$pdf->Cell($w4,5,'',1,0);
$pdf->Cell($w5,5,'',1,0);
$pdf->Cell($w6,5,'',1,0);
$string=$row2['Kundennummer'];
$pdf->Cell($w7,5,$string,1,0,'C');
$string=$row2['FKTO_Nr'];
$pdf->Cell($w8,5,$string,1,0,'C');
$pdf->Cell($w9,5,'',1,0);
$string=$row2['AK_Bez'];
$pdf->Cell($w101,5,$string,1,0,'C');
$pdf->Cell($w102,5,'',1,0);
$pdf->Cell($w103,5,'',1,0);
$pdf->Cell($w11,5,'',1,0);
$pdf->Cell($w12,5,'',1,0);
$pdf->Cell($w131,5,'',1,0);
$pdf->Cell($w132,5,'',1,0);
$pdf->Cell($w14,5,'',1,0);
$pdf->Cell($w15,5,'',1,0);
$string=$row2['TAL'];
if ($string=="1")
{
$pdf->Cell($w16,5,'X',1,0,'C');
}
else
{
$pdf->Cell($w16,5,'O',1,0,'C');
}
}
$string="AA=Auftragsart (ML,MS,ME,MH,SE, usw.)\nHVT, KVZ bitte Stückzahl der erforderlichen Schaltungen (Anzahl der Schaltdrähte, neue und entfernte) eintragen.\nBei Endleitungen bitte Meterzahl und Schaltungen (WD, TAE) angeben (Stück).\nZeit: Bei TEL-As 950 bitte Gesamtzeit, bei 96E bitte alles in Service- und Montagenachweis SMN (extra Blatt) eintragen.\nZeit: Bitte in Stunden und Minuten angeben statt 0,75Std.\nBei MH-Auftrag DSL: Zugang mit 'Z' und Wegfall mit 'W' eintragen.";
$cury2=$pdf->GetY();
$pdf->SetXY(5,$cury2+10);
$pdf->MultiCell(250,3,$string,0,'L',0);
}
}
}
$pdf->Output();
mysql_close();
}
?>
Ich bin immer bemüht meinen Code gut zu strukturieren, ich hoffe ihr könnt damit was anfangen.
Mit verzweifelten Grüßen,
Jan
|
12.08.2007, 01:21:41
|
Anfänger
|
|
Registriert seit: May 2007
Alter: 48
Beiträge: 12
|
|
AW: Trotz Daten keine Ausgabe - ich werd' noch wahnsinnig...
Hallo Leute!
ICH DEPP!
(das musste mal gesagt werden)
Wenn man den gleichen Variablennamen $i in zwei verschiedenen Schleifen verwendet kann es ja nur Probleme geben.
Danke für eure telepatische Hilfe ;-)
Mit hocherfreuten Grüßen,
Jan
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 20:54:33 Uhr.
|