Profil | Mitglieder | Registrieren | Start | Suche


PHP-Support.de » Programmierung » PHP & MySQL » PDF mit FPDF - GET Variablen ignoriert    » Hallo Gast [Login | Registrieren]

Neues Thema | Antworten   

Autor Beitrag
Pixelbuddy
Mitglied
Neuling


Dabei seit: 27.07.2017
Herkunft: keine Angabe
Posts: 3
     PDF mit FPDF - GET Variablen ignoriert Zitat | Bearbeiten

Hallo,

ich sitze gerade an dem super Beispiel PDF´s mit FPDF zu generieren.
Hat jmd. eine Idee wie ich, z.B. wie in meinem Fall, dynamische Daten von einem Fragebogen mittels GET Variablen in die rechnung.php übertragen u. im PDF Dokument ausgeben kann?

Es soll erstmal ganz einfach der Vorname in einer fragebogen-1.php eingetragen u. an die fragebogen-2.php übergeben werden.

 PHP 
1:
2:
3:
4:
<form action="fragebogen-2.php" method="post">
<h3>1. Ihre Daten</h3>
<p>Vorname: </p><input type="text" name="vorname">
...


Das klappt auch! Und nun soll in der fragebogen-2.php der Formularinhalt an die rechnung.php geleitet werden, in der dann die PDF generiert wird.

 PHP 
1:
2:
3:
4:
5:
<?php
/* Formularinhalte an URL anhängen f. 2.Seite */
echo "<form action='rechnung.php?vname1=" 
 
$_POST["vorname"] . "' method='post'>";
?>


In der rechnung.php kann ich aber mit $vname1 = $_GET['vname1']; nicht mehr weiterarbeiten. Es kommt in der ausgegebenen PDF nur $vname1

Kann ich in FPDF keine Variablen anhängen und ausgeben?

Danke für jede Hilfe






27.07.2017, 19:09 Profil | PM | E-Mail  
dokitura
Mitglied
Neuling


Dabei seit: 07.06.2017
Herkunft: keine Angabe
Posts: 7
      Zitat | Bearbeiten

Hi Pixelbuddy,

ich habe selbst noch nicht mit FPDF gearbeitet, aber es wäre denke ganz hilfreich, wenn Du noch den entscheidenden Code der rechnung.php posten könntest, wo die variable(n) gesetzt oder an die FPDF-Instanz übergeben werden

Davon abgesehen: hast Du in der rechnung.php einmal geprüft, ob die $_GET-werte auch so ankommen, wie sie in den fragebögen vorher an- bzw. übergeben wurden?

kleiner Hinweis zu Deiner Angabe in fragebogen-2.php (vllt liegt da schon der Fehler): wenn Du URL-Parameter direkt in einem String übergibst wie hier in deinem Fall, immer die Werte jeweils mit urlencode() hinzufügen. Hat den Grund, das Sonderzeichen möglicherweise die Parameter-Syntax zerstören können, wenn sie nicht encodiert wurden. Richtiger wäre also hier:

 PHP 
1:
2:
3:
4:
5:
<?php
/* Formularinhalte an URL anhängen f. 2.Seite */
echo "<form action='rechnung.php?vname1=" 
 
urlencode($_POST["vorname"]) . "' method='post'>";
?>


Gruß,
Doki


27.07.2017, 22:54 Profil | PM | E-Mail  
Pixelbuddy
Mitglied
Neuling


Dabei seit: 27.07.2017
Herkunft: keine Angabe
Posts: 3
      Zitat | Bearbeiten

Hey Doki,
danke für´s Feedback!

Ja ich poste mal den gesamten Code, ist der Artikel von php-einfach.de ("PDF per PHP erstellen – PDF-Rechnung").

 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
<?php
//============================================================+
// License: GNU-LGPL v3 (http://www.gnu.org/copyleft/lesser.html)
// Copyright (C) 2016 Nils Reimers - PHP-Einfach.de

$rechnungs_nummer "743";
$rechnungs_datum date("d.m.Y");
$lieferdatum date("d.m.Y");
$pdfAuthor "PHP-Einfach.de";
$vname1 $_GET['vname1'];

$rechnungs_header '
<img src="logo.png">
PHP-Einfach.de
Nils Reimers
www.php-einfach.de'
;

/*
$rechnungs_empfaenger = 'Max Musterman
Musterstraße 17
12345 Musterstadt';
*/
$rechnungs_empfaenger '$vname1';

$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(
"Produkt 1"142.50),
    array(
"Produkt 2"55.20),
    array(
"Produkt 3"310.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">
      Rechnungsnummer '
.$rechnungs_nummer.'<br>
      Rechnungsdatum: '
.$rechnungs_datum.'<br>
      Lieferdatum: '
.$lieferdatum.'<br>    
    </td>
  </tr>

  <tr>
    <td style="font-size:1.3em; font-weight: bold;"><br><br>
      Rechnung<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($preis2',''').' 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_betrag2',''').' Euro</td>
            </tr>'
;
}

$html .='<tr>
           <td colspan="3"><b>Gesamtsumme: </b></td>
           <td style="text-align: center;"><b>'
.number_format($gesamtpreis2',''').' 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_ORIENTATIONPDF_UNITPDF_PAGE_FORMATtrue'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_LEFTPDF_MARGIN_TOPPDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

// Automatisches Autobreak der Seiten
$pdf->SetAutoPageBreak(TRUEPDF_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($htmltruefalsetruefalse'');

//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>';
?>



In Zeile 10 wandel ich die GET Variable nur in eine gut lesbare Variable um, und in Zeile 23 gebe ich sie dann aus.
Aber ich glaube, dass hier gar kein dynamischer Vorname ankommt. Jedenfalls wird statt dem Vornamen nur die Variable im PDF ausgegeben ($vname1).

Hast du eine Idee? Liegt es vllt. an FPDF?



28.07.2017, 01:10 Profil | PM | E-Mail  
dokitura
Mitglied
Neuling


Dabei seit: 07.06.2017
Herkunft: keine Angabe
Posts: 7
      Zitat | Bearbeiten

Hi Pixelbuddy,

Danke für's Posten des Quellcodes.

Der Fehler ist sehr simpel: in Zeile 23 müsstest du doppelte Anführungszeichen verwenden, damit der Inhalt der Variable im String landet. Bei einfachen Anführungszeichen werden Sonderzeichen und Variablen nicht aufgelöst (mehr Infos dazu hier: http://php.net/manual/de/language.types.string.php#language.types.string.syntax.single)

Also richtig wäre in Zeile 23:
 PHP 
1:
$rechnungs_empfaenger = "$vname1";


Gruß,
Doki


02.08.2017, 21:43 Profil | PM | E-Mail  
Pixelbuddy
Mitglied
Neuling


Dabei seit: 27.07.2017
Herkunft: keine Angabe
Posts: 3
      Zitat | Bearbeiten

Hey Doki,
ja danke, hat jetzt geklappt.

Schönen Tag dir und Gruß


04.08.2017, 16:02 Profil | PM | E-Mail  
Seiten (1):  1 
PHP-Support.de » Programmierung » PHP & MySQL » PDF mit FPDF - GET Variablen ignoriert   

Neues Thema | Antworten   


Powered by Command Board 1.0 - Beta 2.0 © 2004-08 PHP-Einfach | Impressum | Datenschutz