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 Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
14.09.2006, 13:18:20
|
Junior Member
|
|
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
|
|
PDF mit fpdf
... da auf meinem Webserver die PDFlib nicht zur Verfügung steht, habe ich mich mit fpdf beschäftigt.
Im Prinzip einfach zu handhaben, solange es darum geht text-Dateien auszulesen und daraus ein PDF zu generieren oder auch statische Variablen aufzunehmen und diese formatiert auszugeben. Es gibt dazu auch einige Tutorials.
Doch, ich habe nichts darüber gefunden wie fpdf mit dynamischen Abfragen umgeht, mit z.B. Abfragen die aus der DB kommen oder im Umgang mit Templates oder wenigsten einen Hinweis ob dies überhaupt machbar ist.
Weis jemand Rat oder ein Tutorial welches darauf eingeht?
Mein Ziel ist es Berichte zu generieren. Das bedeutet die Datenbank wird nach bestimmten Kriterien abgefragt und diese sollen formatiert als PDF ausgegeben werden, um diese gegebenenfalls auch zu versenden. Alternativ habe ich über eine CSS-Lösung nachgedacht, doch dies bringt mich nicht wirklich weiter.
cu,
Franzx
__________________
Für die richtige Frage gibt's die richtige Antwort!
|
14.09.2006, 22:41:28
|
Junior Member
|
|
Registriert seit: Sep 2002
Beiträge: 271
|
|
AW: PDF mit fpdf
ich arbeite ziemlich viel (und ziemlich komplex) mit fpdf -- eigentlich verstehe ich nicht dein problem.
fpdf erzeugt pdf-datein mittels php-anweisungen.
um - um ein beliebiges beispiel zu nennen - das datum in eine pdf-datei einzutragen, schreibe ich z.b.:
$pdf->Cell(90,0,"14.9.2006",0,L,1);
ich kann aber natürlich genauso schreiben:
$pdf->Cell(90,0,$datum,0,L,1);
und wenn ich das datum aus einer datenbank herauslese, mit "query ...." und dann $row = mysql_fetch_array($result) würda heissen:
$pdf->Cell(90,0$row[datum],0,L,1);
ob ich da eine string (unter anführungszeichen) oder eine variable (also $var) hinschreibe, ist völlig wurscht.
Geändert von Willow (14.09.2006 um 22:42:29 Uhr)
|
15.09.2006, 08:20:06
|
Junior Member
|
|
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
|
|
AW: PDF mit fpdf
Hallo Willow,
vielen Dank für Dein anschauliches Beispiel.
Zitat:
Zitat von Willow
und wenn ich das datum aus einer datenbank herauslese, mit "query ...." und dann $row = mysql_fetch_array($result) würda heissen:
|
Ja, genau das ist mein Problem, aber wo platziere ich die query? Wie wird diese definiert, sprich wird die quere nur in "" eingeschloßen oder gibt es eigene Bezeichnungen dafür?
Oder das Ergebnis ist eine Liste und nicht nur ein möglicher Treffer. Wie wird das Array dann abgebildet bzw. positioniert?
cu,
Franzx
__________________
Für die richtige Frage gibt's die richtige Antwort!
|
15.09.2006, 09:24:23
|
Junior Member
|
|
Registriert seit: Sep 2002
Beiträge: 271
|
|
AW: PDF mit fpdf
wo die abfrage (query) plaziest, ist egal - solange die variable, die du mit "$pdf->Cell(90,0,$datum,0,L,1);" in das pdf schreibst, vor dieser anweisung den wert zugewiesen bekommt.
wieder ein beispiel:
vorher (wie in fpdf vorgesehen) die pdf-datei erzeugen, einrichten, die grundangaben (wie z.b. hoch oder querformat etc) definieren
$result = mysql_db_query($db, "SELECT * FROM tabelle WHERE postleitzahl < '1000' ORDER BY postleitzahl");
// (aus datenbank werden alle einträge mit postleitzahlen über 1000 herausgesucht)
while($row = mysql_fetch_array($result))
// die werte der datenbanktabelle werden in das array "row" übertragen --> in einer schleife wird abgearbeitet,, solange "row" einen wert hat
$posy_y=30;
// die y-postition der ersten zeile wird festgelegt
{
$pdf->setXY(15,$pos_y);
// die position der zelle wird festgelegt mit x=15, y=30 bei der ersten zeile, ab dann 30+(6mm pro durchgang)
$pdf->Cell(90,0,$row[postleitzahl],0,L,1);"
// die zelle wird erzeugt
$pos_y=$pos_y+6;
// y wird pro durchgang um 6 mm erhöht, d.h. die postleitzahlen stehen im pdf untereinander mit einem abstand von 6 mm
} // while
wars das in etwa, was du wissen wolltest?
Geändert von Willow (15.09.2006 um 09:24:50 Uhr)
|
15.09.2006, 10:03:58
|
Junior Member
|
|
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
|
|
AW: PDF mit fpdf
Zitat:
Zitat von Willow
wars das in etwa, was du wissen wolltest?
|
Ja, vielen Dank, damit komme ich der Sache schon näher. Mit Deiner Erklärung ist mir eben auch einer meiner dümmlichen Denkfehler aufgefallen.
Mit zur Verwirrung hatte beigetragen, dass ich immer meine Templ. mit in den möglichen Darstellungsprozess einbezogen hatte. Was für ein Unsinn, da die Darstellung nicht über die Templ. erfolgt, sondern dies natürlich durch die PDF-Definition ersetzt wird.
Werde mich mal ans Werk machen und sehen ob ich wirklich alles verstanden habe.
cu,
Franzx
__________________
Für die richtige Frage gibt's die richtige Antwort!
|
15.09.2006, 11:03:03
|
Junior Member
|
|
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
|
|
AW: PDF mit fpdf
Was übersehe ich noch?
Habe Header, Footer, Capter definiert und es funktioniert.
Nach dem geschloßenem } der Funktion "class PDF extends FPDF", indem sich header, footer, capter befinden und vor
$pdf=new PDF();
$title='...
habe ich die query und die Variable bestimmt:
PHP-Code:
$result_bp = mysql_query("SELECT * FROM DB WHERE ...") or die(mysql_error());
while($row = mysql_fetch_array($result_bp));
$pos_y=30;
bis hierhin funktioniert noch alles, das heißt die PDF wird erzeugt und die bereits definierten Kapitel werden angezeigt, natürlich noch leer.
Nutze ich nun Dein Beispiel:
PHP-Code:
{
$pdf->setXY(15,$pos_y);
// die position der zelle wird festgelegt mit x=15, y=30 bei der ersten zeile, ab dann 30+(6mm pro durchgang)
$pdf->Cell(90,0,$row['BP_NR'],0,L,1);"
// die zelle wird erzeugt
$pos_y=$pos_y+6;
// y wird pro durchgang um 6 mm erhöht, d.h. die postleitzahlen stehen im pdf untereinander mit einem abstand von 6 mm
}
ist die PDF leer.
In der Zeile
$pdf->Cell(90,0,$row[feld],0,L,1);"
habe ich das " weggelassen, am Ende der Zeile.
Woher kommt die $pdf, muss ich diese noch definieren?
__________________
Für die richtige Frage gibt's die richtige Antwort!
|
15.09.2006, 11:22:03
|
Junior Member
|
|
Registriert seit: Sep 2002
Beiträge: 271
|
|
AW: PDF mit fpdf
so auf die schnelle fällt mir in deinem script auf:
while($row = mysql_fetch_array($result_bp));
$pos_y=30;
--> und danach kommt erst die klammer
ich würde unbedingt so schreiben:
$pos_y=30;
while($row = mysql_fetch_array($result_bp));
{
....
}
ich trau mich aber jetzt nicht zu behaupten, dass das der grund für den fehler ist
ich hab dir (ich muss nämlich weg und kommt erst nachmittag zurück, daher unter stress) ein script (original, gezippt) auf den server gestellt - zum anschauen: darin wird eine rechnung unter verwendung von db-datein erzeugt:
www.medienwerkstatt.at/faktura/pdf_erzeugen.zip
hoffe, du kannst was anfangen damit
|
15.09.2006, 11:45:41
|
Member
|
|
Registriert seit: Mar 2006
Alter: 38
Beiträge: 599
|
|
AW: PDF mit fpdf
Noch nicht ganz korrekt!
PHP-Code:
$pos_y=30;
while($row = mysql_fetch_array($result_bp))//; dieses Semikolon muss da weg!
{
....
}
__________________
In der Ruhe liegt die Kraft!
|
15.09.2006, 13:49:12
|
Junior Member
|
|
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
|
|
AW: PDF mit fpdf
Ich verstehe es nicht. Es gibt einen Datensatz der zumindest angezeigt werden müßte. Nun habe ich alles auf das Minimum reduziert:
PHP-Code:
define('FPDF_FONTPATH','./../font/');
require('./../inc/fpdf.php');
$pdf=new PDF('P','mm','A4');
$pdf=new PDF();
require_once ('./config.php');
$result_bp = mysql_query("SELECT * FROM DB LEFT JOIN ... WHERE ...") or die(mysql_error());
$pos_y=30;
while($row = mysql_fetch_array($result_bp))
{
$pdf->setXY(15,$pos_y);
$pdf->Cell(10,200,$row[Gebiet],0,1,'L',1);
$pos_y=$pos_y+6;
}
$pdf->Output();
?>
Es ergibt nur eine leere PDF.
__________________
Für die richtige Frage gibt's die richtige Antwort!
|
18.09.2006, 12:05:55
|
Junior Member
|
|
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
|
|
AW: PDF mit fpdf
... nun habe ich zwei php-Dateien erzeugt.
Die Klasse fpdfext.php
PHP-Code:
// Pfad zum Font-Ordner
define("FPDF_FONTPATH","font/");
// fpdf-Klasse holen
require("fpdf.php");
// Definition der Extension
class PDF extends FPDF {
// Kopfzeile
function Kopfzeile(){
// Schrift setzen
$this->SetFont('Times','',15);
$datum = date("d.m.Y");
// Text ueber Bild
$text = "Überschrift wird mit Datum ausgegeben $datum";
$this->MultiCell(180,6,$text,0,'R',0);
}
//Fusszeile
function Footer(){
// Datum ermitteln
$datum = date("d.m.Y");
// Position 15mm ueber Seitenende
$this->SetY(-15);
// Schriftyp setzten
$this->SetFont('Times','I',8);
// Ausgabe
$this->Cell(0,10,'Seite '.$this->PageNo().'/{nb} - '.$datum.'',0,0,'L');
}
}
und die zu startende Datei, in der die eigentliche Abfrage stattfinden soll.
PHP-Code:
// Klasse holen
include("pdf/fpdfext.php");
// neues PDF-Objekte
$pdf=new PDF('P','mm','A4');
// Anzahl Seiten berechnen
$pdf->AliasNbPages();
// pdf-Ausgabe starten
$pdf->Open();
// Seitenraender definieren
$pdf->SetMargins(15,15,15,15);
// Seite eroeffnen
$pdf->AddPage();
// Seitenkopf ausgeben
$pdf->Kopfzeile();
// Abstand einfuegen
$pdf->Ln(40);
// Daten ausgeben
// pdf-Ausgabe beenden
$pdf->Output();
So funktioniert es, es gibt die Überschrift und die Fusszeile, doch platziere ich eine DB-Abfrage bleibt die PDF leer.
__________________
Für die richtige Frage gibt's die richtige Antwort!
|
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 07:57:15 Uhr.
|