|
You last visited: Today at 10:24
Advertisement
PDF Ausdrucken (Schleife in Variable??)
Discussion on PDF Ausdrucken (Schleife in Variable??) within the Web Development forum part of the Coders Den category.
10/21/2015, 12:25
|
#1
|
elite*gold: 18
Join Date: Feb 2012
Posts: 28,541
Received Thanks: 1,109
|
PDF Ausdrucken (Schleife in Variable??)
Guten Tag,
ich habe folgendes Problem.. Auf meiner Webseite, kann man eine Rechnung ausdrucken.
Auf der Rechnung kann ich aber nur ein Artikel anzeigen lassen, jedoch sollten mehrere Artikel dort stehen.
meine Schleife:
PHP Code:
foreach($articleee as $arttt){ echo "<tr><td>". $art['id'] . " </td>"; echo "<td>".$art['name'] . " </td>"; echo "<td>".$art['price'] . " </td>"; echo "<td>".$art['supplier']. " </td></tr>"; //echo "<hr>"; //Trennlinie /*/ }
Diese Schleife muss nun in die PDF Variable($my_html)
hier der PDF ausdruck Code (mit der Schleife) ( Ganz unten steht die Foreach schleife.!!):
HTML Code:
function rechnung_ausgeben($kunde, $article){
foreach($article as $art){
//echo "<tr><td>". $art['id'] . " </td>";
//echo "<td>".$art['name'] . " </td>";
//echo "<td>".$art['price'] . " </td>";
//echo "<td>".$art['supplier']. " </td></tr>";
//echo "<hr>"; //Trennlinie /*/
$data['customername'] = $kunde['firstname'];
$data['lastname'] = $kunde['lastname'];
$data['address'] = $kunde['street'];
$data['plz'] = $kunde["plz"];
$data['article'] = $art['name'];
$data['price'] = $art['price'];
$data['netto'] = $row['versandart'];
$data['ust'] = 0;
$data['ustsatz'] = 0;
$data['brutto'] = 0;
insert_invoice($data);
}
require("phpToPDF.php");
// PUT YOUR HTML IN A VARI ABLE
$my_html="<html lang=\"en\">
<head>
<meta charset=\"UTF-8\">
<title>Sample Invoice</title>
<link rel=\"stylesheet\" href=\"http://phptopdf.com/bootstrap.css\">
<style>
@import url(http://fonts.googleapis.com/css?family=Bree+Serif);
body, h1, h2, h3, h4, h5, h6{
font-family: 'Bree Serif', serif;
}
</style>
</head>
<body>
<?php
foreach($art as $artnew){
<tr>
<td>$artnew[id]</td>
<td>$artnew[name]</a></td>
<td>$artnew[supplier]</td>
<td>19%</td>
<td>$artnew[price]</td>
</tr>
}
?>
</body>
Nun sollten mehrere Artikel angezeigt werden, leider ist das aber nicht der Fall. Ich denke mal das ich keine Schleife in eine Variable verwenden kann.
Meine Frage lautet nun: Wie bekomme ich es hin, das die foreach schleife in der Variable ($my_html) benutzt werden kann? Oder gibt es andere möglichkeiten?
Hier meine Quelle vom PDF Creator:
|
|
|
10/21/2015, 12:45
|
#2
|
elite*gold: 2
Join Date: May 2010
Posts: 2,257
Received Thanks: 1,919
|
Hier fehlt ein echo:
PHP Code:
<?php foreach($art as $artnew) { echo' <tr> <td>'.$artnew[id].'</td> <td>'.$artnew[name].'</a></td> <td>'.$artnew[supplier].'</td> <td>19%</td> <td>'.$artnew[price].'</td> </tr>'; } ?>
|
|
|
10/21/2015, 12:47
|
#3
|
Moderator
elite*gold: 558
Join Date: Feb 2010
Posts: 6,544
Received Thanks: 1,424
|
Irgendwie sieht das teilweise so aus, also würdest du deinen eigenen Code nicht kennen.
Wie wäre es denn mit etwas in dieser Richtung? Das ist bloß eine korrigierte Version von deinem Code, damit du es hoffentlich verstehst. Das ist mit Sicherheit nicht die beste Lösung und ich kann dir auch nicht sagen ob das dein Problem löst, schließlich kenne ich nur diese Bruchstück deines Quellcodes.
Code:
$my_html="<html lang=\"en\">
<head>
<meta charset=\"UTF-8\">
<title>Sample Invoice</title>
<link rel=\"stylesheet\" href=\"http://phptopdf.com/bootstrap.css\">
<style>
@import url(http://fonts.googleapis.com/css?family=Bree+Serif);
body, h1, h2, h3, h4, h5, h6{
font-family: 'Bree Serif', serif;
}
</style>
</head>
<body>";
foreach($article as $art) {
$my_html .= "<tr><td>" . $art['id'] . "</td>";
$my_html .= "<td>" . $art['name'] . "</td>";
$my_html .= "<td>" . $art['supplier'] . "</td>";
$my_html .= "<td>19%</td>";
$my_html .= "<td>" . $art['price'] . "</td></tr>";
}
$my_html .= "</body></html>";
Edit:
@Ih¢sãs123
Das ist mitten in einem String. Der PHP-Interpreter wird es auch mit echo niemals ausführen sondern einfach nur als Text ausgeben.
Außerdem ist "art" die Variable aus der ersten foreach-Schleife, ich kann mir also nicht vorstellen, dass plötzlich alle Artikel aus "article" in "art" stehen.
|
|
|
10/21/2015, 13:36
|
#4
|
elite*gold: 18
Join Date: Feb 2012
Posts: 28,541
Received Thanks: 1,109
|
@Ih¢sãs123 So Funktioniert das nicht.
@Comouterbaer Ich verstehe meinen Code, soweit Funktioniert auch alles tadellos.
Mein Script ergibt sinn... oder was daran ist nicht überadacht?.
Die übergabe von den Schleifen geht auch!. Alle Artikel stehen von article in art und dann von art zu artnew Trotz ersten der Schleife.
Ich teste nun deine Variante.
Ich möchte die Schleife nur in meinen PDF Code bekommen. Also in die my_html variable..
hier der vollständiger Example code von der PDF Seite.
PHP Code:
<?php // INCLUDE THE phpToPDF.php FILE require("phpToPDF.php");
// PUT YOUR HTML IN A VARIABLE $my_html="<html lang=\"en\"> <head> <meta charset=\"UTF-8\"> <title>Sample Invoice</title> <link rel=\"stylesheet\" href=\"http://phptopdf.com/bootstrap.css\"> <style> @import url(http://fonts.googleapis.com/css?family=Bree+Serif); body, h1, h2, h3, h4, h5, h6{ font-family: 'Bree Serif', serif; } </style> </head> <body> <div class=\"container\"> <div class=\"row\"> <div class=\"col-xs-6\"> <h1> <a href=\"http://phptopdf.com\"> Logo here </a> </h1> </div> <div class=\"col-xs-6 text-right\"> <h1>INVOICE</h1> <h1><small>Invoice #001</small></h1> </div> </div> <div class=\"row\"> <div class=\"col-xs-5\"> <div class=\"panel panel-default\"> <div class=\"panel-heading\"> <h4>From: <a href=\"#\">Your Name</a></h4> </div> <div class=\"panel-body\"> <p> Address <br> details <br> more <br> </p> </div> </div> </div> <div class=\"col-xs-5 col-xs-offset-2 text-right\"> <div class=\"panel panel-default\"> <div class=\"panel-heading\"> <h4>To : <a href=\"#\">Client Name</a></h4> </div> <div class=\"panel-body\"> <p> Address <br> details <br> more <br> </p> </div> </div> </div> </div> <!-- / end client details section --> <table class=\"table table-bordered\"> <thead> <tr> <th> <h4>Service</h4> </th> <th> <h4>Description</h4> </th> <th> <h4>Hrs/Qty</h4> </th> <th> <h4>Rate/Price</h4> </th> <th> <h4>Sub Total</h4> </th> </tr> </thead> <tbody> <tr> <td>Article</td> <td><a href=\"#\">Title of your article here</a></td> <td class=\"text-right\">-</td> <td class=\"text-right\">$200.00</td> <td class=\"text-right\">$200.00</td> </tr> <tr> <td>Template Design</td> <td><a href=\"#\">Details of project here</a></td> <td class=\"text-right\">10</td> <td class=\"text-right\">75.00</td> <td class=\"text-right\">$750.00</td> </tr> <tr> <td>Development</td> <td><a href=\"#\">WordPress Blogging theme</a></td> <td class=\"text-right\">5</td> <td class=\"text-right\">50.00</td> <td class=\"text-right\">$250.00</td> </tr> </tbody> </table> <div class=\"row text-right\"> <div class=\"col-xs-2 col-xs-offset-8\"> <p> <strong> Sub Total : <br> TAX : <br> Total : <br> </strong> </p> </div> <div class=\"col-xs-2\"> <strong> $1200.00 <br> N/A <br> $1200.00 <br> </strong> </div> </div> <div class=\"row\"> <div class=\"col-xs-5\"> <div class=\"panel panel-info\"> <div class=\"panel-heading\"> <h4>Bank details</h4> </div> <div class=\"panel-body\"> <p>Your Name</p> <p>Bank Name</p> <p>SWIFT : --------</p> <p>Account Number : --------</p> <p>IBAN : --------</p> </div> </div> </div> <div class=\"col-xs-7\"> <div class=\"span7\"> <div class=\"panel panel-info\"> <div class=\"panel-heading\"> <h4>Contact Details</h4> </div> <div class=\"panel-body\"> <p> Email : <br><br> Mobile : -------- <br><br><br> </p> <h4>Payment should be made by Bank Transfer</h4> </div> </div> </div> </div> </div> <br><br> This is a sample invoice.<br><br> In this example the css style is pulled from phptopdf.com/bootstrap.css You could also put all CSS in the header wrapped in <xmp> < style > </xmp> tags </div> </body> </html>";
// SET YOUR PDF OPTIONS -- FOR ALL AVAILABLE OPTIONS, VISIT HERE: http://phptopdf.com/documentation/ $pdf_options = array( "source_type" => 'html', "source" => $my_html, "action" => 'save', "save_directory" => '', "file_name" => 'pdf_invoice.pdf');
// CALL THE phpToPDF FUNCTION WITH THE OPTIONS SET ABOVE phptopdf($pdf_options);
// OPTIONAL - PUT A LINK TO DOWNLOAD THE PDF YOU JUST CREATED echo ("<a href='pdf_invoice.pdf'>Download Your PDF</a>"); ?>
|
|
|
10/21/2015, 14:15
|
#5
|
elite*gold: 2
Join Date: May 2010
Posts: 2,257
Received Thanks: 1,919
|
Vorab ich habe es nicht gelesen (bin gerade Arbeiten) und nur gesehen das man in php nicht einfach Inhalt ausgeben kann ohne echo oder es einer Variable zuzuweisen.
Du musst der Variable $my_html einfach die ergebenen Schleifenwerte zuweisen wie ComputerBaer es gemacht hat mit .=
Kann dir heute abend helfen per PN über Skype.
MfG. erstmal jetzt Besprechung.
|
|
|
10/21/2015, 14:16
|
#6
|
Moderator
elite*gold: 558
Join Date: Feb 2010
Posts: 6,544
Received Thanks: 1,424
|
Quote:
Originally Posted by Givemoney
Mein Script ergibt sinn... oder was daran ist nicht überadacht?.
|
Ich habe nie gesagt, dass es keinen Sinn macht, aber du hast recht, es gibt etwas das keinen Sinn macht. Ich sagte "[...] du deinen eigenen Code nicht kennen", dazu mehr nach dem nächsten Zitat. Jetzt kurz zu "kein Sinn".
Du hast diese Schleife:
Code:
foreach($article as $art) {
$data['customername'] = $kunde['firstname'];
$data['lastname'] = $kunde['lastname'];
$data['address'] = $kunde['street'];
$data['plz'] = $kunde["plz"];
$data['article'] = $art['name'];
$data['price'] = $art['price'];
$data['netto'] = $row['versandart'];
$data['ust'] = 0;
$data['ustsatz'] = 0;
$data['brutto'] = 0;
insert_invoice($data);
}
- Warum gehst du über alle Artikel, wenn dich nur der letzte interessiert? Oder warum überhaupt die Artikel?
- Was ist $row? Die Variable wird weder übergeben, noch in der Funktion erstellt.
- Welchen Zweck erfüllt "insert_invoice"? Schreibt das die Rechnung mit ihrem letzten Artikel in die Datenbank? Sollte die Rechnung nicht eher mit allen Artikeln aus der Datenbank kommen?
Der selbe Code könnte auch so aussehen und ist damit (vorallem bei großen sehr Rechnungen) auch noch schneller. Ja, die Funktion ist identisch.
Code:
$data['customername'] = $kunde['firstname'];
$data['lastname'] = $kunde['lastname'];
$data['address'] = $kunde['street'];
$data['plz'] = $kunde["plz"];
$data['article'] = $article[count(article)-1]['name'];
$data['price'] = $article[count(article)-1]['price'];
$data['netto'] = $row['versandart']; // ???
$data['ust'] = 0;
$data['ustsatz'] = 0;
$data['brutto'] = 0;
insert_invoice($data);
Quote:
Originally Posted by Givemoney
Die übergabe von den Schleifen geht auch!. Alle Artikel stehen von article in art und dann von art zu artnew Trotz ersten der Schleife.
|
Wenn wir mal davon absehen, dass die Schleife in dem String steckt und deshalb nicht funktionieren kann, sieht dein Code so aus:
Code:
function rechnung_ausgeben($kunde, $article) {
foreach($article as $art) {
// [...]
}
foreach($art as $artnew) {
// [...]
}
}
Jetzt stellen wir uns mal vor, dass in $article mehrere Artikel sind:
1, Tisch, 125
3, Stuhl, 68
8, Maus, 34
Nachdem die erste Schleife vorbei ist, steht in $art dann:
8, Maus, 34
Die Schleife über $art wird dann folgende Daten liefern:
8
Maus
34
Und jeder Zugriff auf $artnew[xxx] wird in einem Fehler enden, weil keiner der Werte ein Assoziatives-Array ist.
Quote:
Originally Posted by Givemoney
Ich möchte die Schleife nur in meinen PDF Code bekommen. Also in die my_html variable..
|
Ich habe meinen Code zwar nicht getestet, bin mir aber sicher, dass er genau das macht.
|
|
|
10/21/2015, 16:20
|
#7
|
elite*gold: 18
Join Date: Feb 2012
Posts: 28,541
Received Thanks: 1,109
|
Erstmal herzlichen dank, für eure hilfe. Die Lösung war die korrigierte Version von Computerbaer.
Nun zu deinen Punkten.
$row['versandart']; also $row wird nicht übergeben richtig. Das hat auch seinen Grund.. Weil ich noch weitere Funktionen schreiben und übergeben muss.
insert_invoice wie du schon vermutest, schreibt ALLE* Artikel in die DB.
Ich bedanke mich besonders bei Computerbaer für seine Kritik und seine Hilfsbereitschaft.
Für das nächste mal werde ich den Code so Posten das keine weiteren missverständnisse auftreten.
|
|
|
|
Similar Threads
|
PHP Schleife, Button, Variable Zuweisung und Ausgabe
02/11/2015 - Web Development - 2 Replies
Hey
Ich hab eine Schleife in php in der Buttons erzeugt werden.
Jeder Button bekommt auch eine Funktion wenn man auf den Button klickt wird $offers $bez hinzugefügt (zumindest sollte) und danach sollen dann alle auf gelistet , aber ich hab kein plan wie.
Schleife aktuell:
<form action="<?php $_SERVER ?>" method="post">
<?php
$n = 0;
$offers = "";
foreach($items as $item) {
$bez = $item;
|
Fehler suche (Anfangsprogramm) If schleife in einer If-Schleife
10/16/2013 - .NET Languages - 8 Replies
Wie mache ich eine If-Schleife in einer if-schleife?
Danke^^
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
|
Variable in ProcessExist Shellexecute schleife
06/19/2013 - AutoIt - 3 Replies
Moin! Wie kann man denn bitte eine Variable für eine solche Schleife benutzen:
Case $Select
$Launcher = FileOpenDialog("Select your AA Launcher exe",@UserName & "\Desktop", "Applications (*.exe)",1 + 2)
Case $restart
EndSwitch
If $bCheck Then
If Not ProcessExists($Launcher) And Not ProcessExists("bf3.exe") Then
;~ Run(@DesktopDir & "\BlaueKugel.exe")
|
Quest-> Schleife in einer Schleife?
04/15/2013 - Metin2 Private Server - 3 Replies
Hallo Community,
ist es möglich in einer bestehenden Schleife eine weitere einzufügen die unabhängig von der 1. schleife agiert?
|
All times are GMT +2. The time now is 10:24.
|
|