1
Hallo,
ich habe ein Datei die mehrere Tabellen ausgibt.
In jeder Tabelle steht dann Name, Vorname, Verein, Status, Betrag und Quittung. Wenn man auf Quittung klickt, soll sich ein pdf generieren.
Ist es möglich, dass man eine eine einzige quittung.php hat, diese aber zu jedem in der Tabelle eine eigene pdf erstellen kann?
Zum Testen hab ich mir von hier
https://www.php-einfach.de/experte/php-codebeispiele/pdf-per-php-erstellen-pdf-rechnung/ alles runtergeladen und dies mal quittung.php genannt und eingebunden.
Tabelle.php
quittung.php
Gruß Tobi
ich habe ein Datei die mehrere Tabellen ausgibt.
In jeder Tabelle steht dann Name, Vorname, Verein, Status, Betrag und Quittung. Wenn man auf Quittung klickt, soll sich ein pdf generieren.
Ist es möglich, dass man eine eine einzige quittung.php hat, diese aber zu jedem in der Tabelle eine eigene pdf erstellen kann?
Zum Testen hab ich mir von hier
https://www.php-einfach.de/experte/php-codebeispiele/pdf-per-php-erstellen-pdf-rechnung/ alles runtergeladen und dies mal quittung.php genannt und eingebunden.
Tabelle.php
<?php
//Fehlermeldungen ausgeben falls vorhanden
ini_set('display_errors', 1);
error_reporting(E_ALL);
//Einbinden von CSS Datei
include "css.php.inc";
//Einbinden von Datenbankzugang
require_once "dbVerbindung.php.inc";
// Hole die 40 Ältesten Datensätze der Klasse 1 ab und sortiere dann absteigend nach Datum (neueste zuerst)
$pdo_1 = new MyPDO();
$sql_1 = "
SELECT
*
FROM
(
SELECT
id, nachname, vorname, verein, ttr, timestamp
FROM
anmeldungen_2018_samstag
WHERE
gemeldeteKlasse = '1' AND bezahlstatus = '1'
ORDER BY
timestamp ASC LIMIT 40
) as daten
ORDER BY
nachname ASC
";
// Hole die 40 Ältesten Datensätze der Klasse 2 ab und sortiere dann absteigend nach Datum (neueste zuerst)
$pdo_2 = new MyPDO();
$sql_2 = "
SELECT
*
FROM
(
SELECT
id, nachname, vorname, verein, ttr, timestamp
FROM
anmeldungen_2018_samstag
WHERE
gemeldeteKlasse = '2' AND bezahlstatus = '1'
ORDER BY
timestamp ASC LIMIT 40
) as daten
ORDER BY
nachname ASC
";
// Hole die 64 Ältesten Datensätze der Klasse 3 ab und sortiere dann absteigend nach Datum (neueste zuerst)
$pdo_3 = new MyPDO();
$sql_3 = "
SELECT
*
FROM
(
SELECT
id, nachname, vorname, verein, ttr, timestamp
FROM
anmeldungen_2018_samstag
WHERE
gemeldeteKlasse = '3' AND bezahlstatus = '1'
ORDER BY
timestamp ASC LIMIT 64
) as daten
ORDER BY
nachname ASC
";
// Hole die 64 Ältesten Datensätze der Klasse 1 ab und sortiere dann absteigend nach Datum (neueste zuerst)
$pdo_4 = new MyPDO();
$sql_4 = "
SELECT
*
FROM
(
SELECT
id, nachname, vorname, verein, ttr, timestamp
FROM
anmeldungen_2018_sonntag
WHERE
gemeldeteKlasse = '1' AND bezahlstatus = '1'
ORDER BY
timestamp ASC LIMIT 64
) as daten
ORDER BY
nachname ASC
";
// Hole die 64 Ältesten Datensätze der Klasse 2 ab und sortiere dann absteigend nach Datum (neueste zuerst)
$pdo_5 = new MyPDO();
$sql_5 = "
SELECT
*
FROM
(
SELECT
id, nachname, vorname, verein, ttr, timestamp
FROM
anmeldungen_2018_sonntag
WHERE
gemeldeteKlasse = '2' AND bezahlstatus = '1'
ORDER BY
timestamp ASC LIMIT 64
) as daten
ORDER BY
nachname ASC
";
// Hole die 64 Ältesten Datensätze der Klasse 3 ab und sortiere dann absteigend nach Datum (neueste zuerst)
$pdo_6 = new MyPDO();
$sql_6 = "
SELECT
*
FROM
(
SELECT
id, nachname, vorname, verein, ttr, timestamp
FROM
anmeldungen_2018_sonntag
WHERE
gemeldeteKlasse = '3' AND bezahlstatus = '1'
ORDER BY
timestamp ASC LIMIT 64
) as daten
ORDER BY
nachname ASC
";
try {
printResult_1($pdo_1->query($sql_1)->fetchAll(), 'Jugend U18 B');
printResult_2($pdo_2->query($sql_2)->fetchAll(), 'Jugend U18 A');
printResult_3($pdo_3->query($sql_3)->fetchAll(), 'Aktive D');
printResult_4($pdo_4->query($sql_4)->fetchAll(), 'Aktive C');
printResult_5($pdo_5->query($sql_5)->fetchAll(), 'Aktive B');
printResult_6($pdo_6->query($sql_6)->fetchAll(), 'Aktive A');
} catch (Exception $e) {
die('Something went wrong...<br />' . $e->getMessage());
}
function printResult_1($res_1, $title) {
echo "<br/><b>".$title."</b>
<table class='table_gesamtspielplan'>
<tr>
<td><b></b></td>
<td><b>Name</b></td>
<td><b>Vorname</b></td>
<td><b>Verein</b></td>
<td><b>Status</b></td>
<td><b>Betrag</b></td>
<td><b>Quittung</b></td>
</tr>
";
//echo '<pre>';
//print_r($res_1);
//echo '</pre>';
$nummerierung = 1;
foreach ($res_1 as $val_1) {
$date = DateTime::createFromFormat('Y-m-d H:i:s', $val_1["timestamp"]);
$newDate = $date->format('d.m.Y H:i');
echo "
<tr>
<td> {$nummerierung} </td>
<td> {$val_1["nachname"]} </td>
<td> {$val_1["vorname"]} </td>
<td> {$val_1["verein"]} </td>
<td> bezahlt</td>
<td> 9 €</td>
<td> <a href=/quittung.php target=_blank> Quittung</a></td>
</tr>
";
$nummerierung++;
}
echo "</table>";
function printResult_2($res_2, $title) {
echo "<br/><b>".$title."</b>
<table class='table_mannschaften'>
<tr>
<td><b></b></td>
<td><b>Name</b></td>
<td><b>Vorname</b></td>
<td><b>Verein</b></td>
<td><b>Status</b></td>
<td><b>Betrag</b></td>
<td><b>Quittung</b></td>
</tr>
";
$nummerierung = 1;
foreach ($res_2 as $val_2) {
$date = DateTime::createFromFormat('Y-m-d H:i:s', $val_2["timestamp"]);
$newDate = $date->format('d.m.Y H:i');
echo "
<tr>
<td> {$nummerierung} </td>
<td> {$val_2["nachname"]} </td>
<td> {$val_2["vorname"]} </td>
<td> {$val_2["verein"]} </td>
<td> bezahlt</td>
<td> 9 €</td>
<td> <a href=/quittung.php target=_blank> Quittung</a></td>
</tr>
";
$nummerierung++;
}
echo "</table>";
function printResult_3($res_3, $title) {
echo "<br/><b>".$title."</b>
<table class='table_mannschaften'>
<tr>
<td><b></b></td>
<td><b>Name</b></td>
<td><b>Vorname</b></td>
<td><b>Verein</b></td>
<td><b>Status</b></td>
<td><b>Betrag</b></td>
<td><b>Quittung</b></td>
</tr>
";
$nummerierung = 1;
foreach ($res_3 as $val_3) {
$date = DateTime::createFromFormat('Y-m-d H:i:s', $val_3["timestamp"]);
$newDate = $date->format('d.m.Y H:i');
echo "
<tr>
<td> {$nummerierung} </td>
<td> {$val_3["nachname"]} </td>
<td> {$val_3["vorname"]} </td>
<td> {$val_3["verein"]} </td>
<td> bezahlt</td>
<td> 11 €</td>
<td> <a href=/quittung.php target=_blank> Quittung</a></td>
</tr>
";
$nummerierung++;
}
echo "</table>";
function printResult_4($res_4, $title) {
echo "<br/><b>".$title."</b>
<table class='table_mannschaften'>
<tr>
<td><b></b></td>
<td><b>Name</b></td>
<td><b>Vorname</b></td>
<td><b>Verein</b></td>
<td><b>Status</b></td>
<td><b>Betrag</b></td>
<td><b>Quittung</b></td>
</tr>
";
$nummerierung = 1;
foreach ($res_4 as $val_4) {
$date = DateTime::createFromFormat('Y-m-d H:i:s', $val_4["timestamp"]);
$newDate = $date->format('d.m.Y H:i');
echo "
<tr>
<td> {$nummerierung} </td>
<td> {$val_4["nachname"]} </td>
<td> {$val_4["vorname"]} </td>
<td> {$val_4["verein"]} </td>
<td> bezahlt</td>
<td> 11 €</td>
<td> <a href=/quittung.php target=_blank> Quittung</a></td>
</tr>
";
$nummerierung++;
}
echo "</table>";
function printResult_5($res_5, $title) {
echo "<br/><b>".$title."</b>
<table class='table_mannschaften'>
<tr>
<td><b></b></td>
<td><b>Name</b></td>
<td><b>Vorname</b></td>
<td><b>Verein</b></td>
<td><b>Status</b></td>
<td><b>Betrag</b></td>
<td><b>Quittung</b></td>
</tr>
";
$nummerierung = 1;
foreach ($res_5 as $val_5) {
$date = DateTime::createFromFormat('Y-m-d H:i:s', $val_5["timestamp"]);
$newDate = $date->format('d.m.Y H:i');
echo "
<tr>
<td> {$nummerierung} </td>
<td> {$val_5["nachname"]} </td>
<td> {$val_5["vorname"]} </td>
<td> {$val_5["verein"]} </td>
<td> bezahlt</td>
<td> 11 €</td>
<td> <a href=/quittung.php target=_blank> Quittung</a></td>
</tr>
";
$nummerierung++;
}
echo "</table>";
function printResult_6($res_6, $title) {
echo "<br/><b>".$title."</b>
<table class='table_mannschaften'>
<tr>
<td><b></b></td>
<td><b>Name</b></td>
<td><b>Vorname</b></td>
<td><b>Verein</b></td>
<td><b>Status</b></td>
<td><b>Betrag</b></td>
<td><b>Quittung</b></td>
</tr>
";
$nummerierung = 1;
foreach ($res_6 as $val_6) {
$date = DateTime::createFromFormat('Y-m-d H:i:s', $val_6["timestamp"]);
$newDate = $date->format('d.m.Y H:i');
echo "
<tr>
<td> {$nummerierung} </td>
<td> {$val_6["nachname"]} </td>
<td> {$val_6["vorname"]} </td>
<td> {$val_6["verein"]} </td>
<td> bezahlt</td>
<td> 11 €</td>
<td> <a href=/quittung.php target=_blank> Quittung</a></td>
</tr>
";
$nummerierung++;
}
echo "</table>";
}
}
}
}
}
}
?>
quittung.php
<?php
//============================================================+
// License: GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
// -------------------------------------------------------------------
// Copyright (C) 2016 Nils Reimers - PHP-Einfach.de
// This is free software: you can redistribute it and/or modify it
// under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// Nachfolgend erhaltet ihr basierend auf der open-source Library TCPDF (https://tcpdf.org/)
// ein einfaches Script zur Erstellung von PDF-Dokumenten, hier am Beispiel einer Rechnung.
// Das Aussehen der Rechnung ist mittels HTML definiert und wird per TCPDF in ein PDF-Dokument übersetzt.
// Die meisten HTML Befehle funktionieren sowie einige inline-CSS Befehle. Die Unterstützung für CSS ist
// aber noch stark eingeschränkt. TCPDF läuft ohne zusätzliche Software auf den meisten PHP-Installationen.
// Gerne könnt ihr das Script frei anpassen und auch als Basis für andere dynamisch erzeugte PDF-Dokumente nutzen.
// Im Ordner tcpdf/ befindet sich die Version 6.2.3 der Bibliothek. Unter https://tcpdf.org/ könnt ihr erfahren, ob
// eine aktuellere Variante existiert und diese ggf. einbinden.
//
// Weitere Infos: http://www.php-einfach.de/experte/php-codebeispiele/pdf-per-php-erstellen-pdf-rechnung/ | https://github.com/PHP-Einfach/pdf-rechnung/
$rechnungs_nummer = "743";
$rechnungs_datum = date("d.m.Y");
$lieferdatum = date("d.m.Y");
$pdfAuthor = "Verein";
$rechnungs_header = '
<img src="Logo_TTCL.png" width="100" height="100">
Verein
Name
https://webseite.de';
$rechnungs_empfaenger = 'Max Musterman
Musterstraße 17
12345 Musterstadt';
$rechnungs_footer = "Wir bitten um eine Begleichung der Rechnung innerhalb von 14 Tagen nach Erhalt. Bitte Überweisen Sie den vollständigen Betrag an:
<b>Empfänger:</b> Meine Firma
<b>IBAN</b>: DE85 745165 45214 12364
<b>BIC</b>: C46X453AD";
//Auflistung eurer verschiedenen Posten im Format [Produktbezeichnuns, Menge, Einzelpreis]
$rechnungs_posten = array(
array("Startgebühr", 1, 11.00),
array("Produkt 2", 5, 5.20),
array("Produkt 3", 3, 10.00));
//Höhe eurer Umsatzsteuer. 0.19 für 19% Umsatzsteuer
$umsatzsteuer = 0.0;
$pdfName = "Rechnung_".$rechnungs_nummer.".pdf";
//////////////////////////// Inhalt des PDFs als HTML-Code \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
// Erstellung des HTML-Codes. Dieser HTML-Code definiert das Aussehen eures PDFs.
// tcpdf unterstützt recht viele HTML-Befehle. Die Nutzung von CSS ist allerdings
// stark eingeschränkt.
$html = '
<table cellpadding="5" cellspacing="0" style="width: 100%; ">
<tr>
<td>'.nl2br(trim($rechnungs_header)).'</td>
<td style="text-align: right">
Rechnungsdatum: '.$rechnungs_datum.'<br>
Lieferdatum: '.$lieferdatum.'<br>
</td>
</tr>
<tr>
<td style="font-size:1.3em; font-weight: bold;">
<br><br>
Quittung für Vorkasse
<br>
</td>
</tr>
<tr>
<td colspan="2">'.nl2br(trim($rechnungs_empfaenger)).'</td>
</tr>
</table>
<br><br><br>
<table cellpadding="5" cellspacing="0" style="width: 100%;" border="0">
<tr style="background-color: #cccccc; padding:5px;">
<td style="padding:5px;"><b>Bezeichnung</b></td>
<td style="text-align: center;"><b>Menge</b></td>
<td style="text-align: center;"><b>Einzelpreis</b></td>
<td style="text-align: center;"><b>Preis</b></td>
</tr>';
$gesamtpreis = 0;
foreach($rechnungs_posten as $posten) {
$menge = $posten[1];
$einzelpreis = $posten[2];
$preis = $menge*$einzelpreis;
$gesamtpreis += $preis;
$html .= '<tr>
<td>'.$posten[0].'</td>
<td style="text-align: center;">'.$posten[1].'</td>
<td style="text-align: center;">'.number_format($posten[2], 2, ',', '').' Euro</td>
<td style="text-align: center;">'.number_format($preis, 2, ',', '').' Euro</td>
</tr>';
}
$html .="</table>";
$html .= '
<hr>
<table cellpadding="5" cellspacing="0" style="width: 100%;" border="0">';
if($umsatzsteuer > 0) {
$netto = $gesamtpreis / (1+$umsatzsteuer);
$umsatzsteuer_betrag = $gesamtpreis - $netto;
$html .= '
<tr>
<td colspan="3">Zwischensumme (Netto)</td>
<td style="text-align: center;">'.number_format($netto , 2, ',', '').' Euro</td>
</tr>
<tr>
<td colspan="3">Mehrwertsteuer ('.intval($umsatzsteuer*100).'%)</td>
<td style="text-align: center;">'.number_format($umsatzsteuer_betrag, 2, ',', '').' Euro</td>
</tr>';
}
$html .='
<tr>
<td colspan="3"><b>Gesamtsumme: </b></td>
<td style="text-align: center;"><b>'.number_format($gesamtpreis, 2, ',', '').' Euro</b></td>
</tr>
</table>
<br><br><br>';
if($umsatzsteuer == 0) {
$html .= 'Nach § 19 Abs. 1 UStG wird keine Umsatzsteuer berechnet.<br><br>';
}
$html .= nl2br($rechnungs_footer);
//////////////////////////// Erzeugung eures PDF Dokuments \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
// TCPDF Library laden
require_once('tcpdf/tcpdf.php');
// Erstellung des PDF Dokuments
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
// Dokumenteninformationen
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor($pdfAuthor);
$pdf->SetTitle('Rechnung '.$rechnungs_nummer);
$pdf->SetSubject('Rechnung '.$rechnungs_nummer);
// Header und Footer Informationen
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
// Auswahl des Font
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
// Auswahl der MArgins
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
// Automatisches Autobreak der Seiten
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
// Image Scale
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
// Schriftart
$pdf->SetFont('dejavusans', '', 10);
// Neue Seite
$pdf->AddPage();
// Fügt den HTML Code in das PDF Dokument ein
$pdf->writeHTML($html, true, false, true, false, '');
//Ausgabe der PDF
//Variante 1: PDF direkt an den Benutzer senden:
$pdf->Output($pdfName, 'I');
//Variante 2: PDF im Verzeichnis abspeichern:
//$pdf->Output(dirname(__FILE__).'/'.$pdfName, 'F');
//echo 'PDF herunterladen: <a href="'.$pdfName.'">'.$pdfName.'</a>';
?>
Gruß Tobi