# Formular-Druckfunktion

**URL:** <https://forum.shopware.com/t/formular-druckfunktion/233>\
**Category:** Shopware 3.5\
**Tags:** templates--design\
**Created:** [30. August 2010 um 23:13 UTC](https://forum.shopware.com/t/formular-druckfunktion/233 "2010-08-30T23:13:20Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![freesurf](https://avatars.discourse-cdn.com/v4/letter/f/eb9ed0/32.png) [@freesurf](https://forum.shopware.com/u/freesurf)\
**Post date:** [30. August 2010 um 23:13 UTC](https://forum.shopware.com/t/formular-druckfunktion/233/1 "2010-08-30T23:13:20Z")

</div>

Wir haben Formulare erstellt die der Kunde auch ausdrucken kann/sollte. Abgesehen von der Druckmöglichkeit über den Browser, gibt es keine Möglichkeit? Auch die Möglichkeit die Produkt-Detailansicht auszudrucken macht durchaus Sinn.

---

<div class="post-metadata">

**Author:** ![TSchenk](https://avatars.discourse-cdn.com/v4/letter/t/779978/32.png) [@TSchenk](https://forum.shopware.com/u/TSchenk)\
**Post date:** [31. August 2010 um 01:09 UTC](https://forum.shopware.com/t/formular-druckfunktion/233/2 "2010-08-31T01:09:28Z")

</div>

Hallo, also es gibt schon ein paar Möglichkeiten. Zum einen die HTML-Seite über den Browser drucken 🙂 Das nächste wäre über Smarty und die FPDF-Klasse. So werden die Rechnungen, bzw. Lieferscheine im Backend erstellt. Noch eine ganz andere Möglichkeit und meine persönlich liebste ist über Apache-FOP. Dies ist eine Dokumententransformation mit der man aus XML’s ein XSL-FO macht und daraus ein PDF erstellen kann. Viele Grüße Thomas

---

<div class="post-metadata">

**Author:** ![freesurf](https://avatars.discourse-cdn.com/v4/letter/f/eb9ed0/32.png) [@freesurf](https://forum.shopware.com/u/freesurf)\
**Post date:** [31. August 2010 um 14:03 UTC](https://forum.shopware.com/t/formular-druckfunktion/233/3 "2010-08-31T14:03:38Z")

</div>

Hallo Thomas, danke für die Infos. Der Ausdruck via Browser ist bekannt. Ist halt nich so prickelnd. Die anderen Ansätze sind sehr interessant, aber meine Möglichkeiten sind da doch sehr begrenzt! 😉 Das ist doch eher was für “Eingeweihte” aus dem Fach. Grüße aus Berlin Michael

---

<div class="post-metadata">

**Author:** ![SebastianKloepper](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sebastiankloepper/32/21435_2.png) [@SebastianKloepper](https://forum.shopware.com/u/SebastianKloepper)\
**Post date:** [31. August 2010 um 15:32 UTC](https://forum.shopware.com/t/formular-druckfunktion/233/4 "2010-08-31T15:32:32Z")

</div>

Hallo, geht es um einen einfachen Button, der z.B. die Browser-Druckfunktion im Hintergrund nutzt? Das wäre schon über einen einfachen Linkeinbau möglich. Anbei ein Beispiel-Code: [code]

[Diese Seite drucken](javascript:window.print() “Diese Seite drucken”)  
[/code] Als einfacher Link ist der Aufruf ebenfalls möglich: `[Diese Seite drucken](javascript:window.print() "Diese Seite drucken")` Dieser Code kann im Template an beliebiger Stelle eingebunden werden, z.B. in der index.tpl. So kann die Druckfunktion auf jeder Seite, auch in den Formularen, genutzt werden. Vielleicht reicht das für diese Zwecke schon aus? Viele Grüße Sebastian

---

<div class="post-metadata">

**Author:** ![TSchenk](https://avatars.discourse-cdn.com/v4/letter/t/779978/32.png) [@TSchenk](https://forum.shopware.com/u/TSchenk)\
**Post date:** [31. August 2010 um 15:52 UTC](https://forum.shopware.com/t/formular-druckfunktion/233/5 "2010-08-31T15:52:12Z")

</div>

Hallo `javascript:window.print()` ist ja das Drucken aus dem Browser heraus. 😉

---

<div class="post-metadata">

**Author:** ![freesurf](https://avatars.discourse-cdn.com/v4/letter/f/eb9ed0/32.png) [@freesurf](https://forum.shopware.com/u/freesurf)\
**Post date:** [31. August 2010 um 21:49 UTC](https://forum.shopware.com/t/formular-druckfunktion/233/6 "2010-08-31T21:49:11Z")

</div>

joo, das ist Drucken aus dem Browser. Aber es hilft mir erstmal weiter, danke. Vielleicht ist es ja mal angedacht die Druckmöglichkeit in Shopware einzuführen? Grüsse aus Berlin Michael

---

<div class="post-metadata">

**Author:** ![Markus](https://avatars.discourse-cdn.com/v4/letter/m/b782af/32.png) [@Markus](https://forum.shopware.com/u/Markus)\
**Post date:** [22. September 2010 um 21:06 UTC](https://forum.shopware.com/t/formular-druckfunktion/233/7 "2010-09-22T21:06:06Z")

</div>

Hi … gibts hier eigentlich irgendwas neues? Wenn ein Kunde eine Bestellung gemacht hat kann er diese ja drucken … ich hab das mal versuchweise gemacht … und bin dann doch leicht erschrocken 😉 Gibts denn kein Addon welches z.B. einfach die eMail ausdruckt welche verschickt wird? Die ist ja um einges “leichter”. Es haben ja nicht gerade alle einen Laserdrucker … und wenn man da ein wenig intensive Farben hat und nicht gerade ein versierter User am PC sitzt hat er danach keine Tinte mehr 🕶 Ja ich weiss … der Kunde kann sich auch die eMail ausdrucken … aber wenn er hier schon auch die Möglichkeit hat nach der Bestellung zu drucken und im Standardtext das auch noch empfohlen wird sollte er sich ja nicht gleich ärgern weil ihm die Tinte aus dem Drucker gesaugt wird 😉 Markus

---

<div class="post-metadata">

**Author:** ![Stefan\_Hamann](https://avatars.discourse-cdn.com/v4/letter/s/5e9695/32.png) [@Stefan\_Hamann](https://forum.shopware.com/u/Stefan_Hamann)\
**Post date:** [23. September 2010 um 07:11 UTC](https://forum.shopware.com/t/formular-druckfunktion/233/8 "2010-09-23T07:11:35Z")

</div>

“Gibts denn kein Addon welches z.B. einfach die eMail ausdruckt welche verschickt wird?” Im Moment gibt es das nicht. Das lässt sich in 3.5 aber relativ einfach umsetzen. Dort könntest du theoretisch auch einfach die PDF-Belegerstellung in der Storefront dafür nutzen. (Neuer Belegtyp Auftragsbestätigung). In 3.0.5.1 könntest du das in der Zwischenzeit über einen Hookpoint lösen, z.B. sOrder.php\_sendMail\_BeforeSend3 Dort folgenden Code einfügen: ` if (!empty($variables["ordernumber"])){ $update = $this-\>sSYSTEM-\>sDB\_CONNECTION-\>Execute(" UDPATE s\_order SET o\_attr6 = ? WHERE ordernumber = ? ",array($mail-\>Body,$variables["ordernumber"])); } ` Die Spalte o\_attr6 müsstest du kurz in der DB von Varchar auf Text ändern. Mit diesem Snippet müsste bei jeder Bestellung der Inhalt der Bestätigungsmail in die Spalte s\_order.o\_attr6 gespeichert werden. Im Viewport s\_sale würdest du dann diese Spalte wieder auslesen und im Template verwerten können. (Etwa ab Zeile 331) ` $variables["mailText"] = $this-\>sSYSTEM-\>sDB\_CONNECTION-\>GetOne(" SELECT o\_attr6 FROM s\_order WHERE ordernumber = ? ",$this-\>sSYSTEM-\>\_SESSION["sOrderVariables"]["ordernumber"]); ` Der Text müsste dann im Template über {$mailText} verfügbar sein. Diesen könntest du für die Druckausgabe verwenden.

---

<div class="post-metadata">

**Author:** ![Markus](https://avatars.discourse-cdn.com/v4/letter/m/b782af/32.png) [@Markus](https://forum.shopware.com/u/Markus)\
**Post date:** [23. September 2010 um 09:17 UTC](https://forum.shopware.com/t/formular-druckfunktion/233/9 "2010-09-23T09:17:08Z")

</div>

Hi Stefan, ok … die ersten Punkte habe ich schonmal … das war ja soweit klar … [quote]Im Viewport s\_sale würdest du dann diese Spalte wieder auslesen und im Template verwerten können. (Etwa ab Zeile 331) $variables[“mailText”] = $this-\>sSYSTEM-\>sDB\_CONNECTION-\>GetOne(“SELECT o\_attr6 FROM s\_order WHERE ordernumber = ?”,$this-\>sSYSTEM-\>\_SESSION[“sOrderVariables”][“ordernumber”]); [/quote] Mit dem Teil habe ich jetzt noch ein Problemchen … wo soll ich den einfügen? An die viewports komme ich doch gar nicht dran … oder stehe ich jetzt irgendwie auf dem Schlauch? Schöne Grüße Markus Nachtrag: Ich habe die erste Änderung sowie die Datenbankänderung durchgeführt … danach eine Bestellung ausgeführt … das Datenbankfeld belict leider leer.

---

<div class="post-metadata">

**Author:** ![Stefan\_Hamann](https://avatars.discourse-cdn.com/v4/letter/s/5e9695/32.png) [@Stefan\_Hamann](https://forum.shopware.com/u/Stefan_Hamann)\
**Post date:** [23. September 2010 um 09:43 UTC](https://forum.shopware.com/t/formular-druckfunktion/233/10 "2010-09-23T09:43:38Z")

</div>

Nachtrag: Ich habe die erste Änderung sowie die Datenbankänderung durchgeführt … danach eine Bestellung ausgeführt … das Datenbankfeld belict leider leer. Hast du den Shopcache geleert? Mit dem Teil habe ich jetzt noch ein Problemchen … wo soll ich den einfügen? An die viewports komme ich doch gar nicht dran … oder stehe ich jetzt irgendwie auf dem Schlauch? Doch, die Viewports liegen offen unter engine/core/class/viewports In diesem Fall die s\_sale.php öffnen, das Snippet unterhalb von $this-\>sSYSTEM-\>\_SESSION[„sOrderVariables“][„ordernumber“] = $this-\>sSYSTEM-\>sMODULES[‚sOrder‘]-\>sSaveOrder(); einfügen. Nimm am besten folgenden Code, der erste hat noch einen Fehler: $this-\>sSYSTEM-\>\_SESSION[„sOrderVariables“][„mailText“] = $this-\>sSYSTEM-\>sDB\_CONNECTION-\>GetOne(" SELECT o\_attr6 FROM s\_order WHERE ordernumber = ? „,$this-\>sSYSTEM-\>\_SESSION[„sOrderVariables“][„ordernumber“]); Dann müsstest du im Template über {$mailText} an den Text kommen. Falls das mit dem Hookpoint nach Leeren des Cache immer noch nicht geht, kannst du die Klasse sOrder.php auch einfach erweitern. Dazu einfach in der Tabelle s\_core\_factory die Spalten inheritname und inheritfile anpassen (name = myOrder, file = myOrder.php) Anschließend unter engine/core/class/inherit eine neue Datei myOrder.php anlegen. [code]\<?php include(“$path/sOrder.php");

class myOrder extends sOrder{  
function sendMail($variables){  
parent::sendMail($variables);  
if (!empty($variables[„ordernumber“])){  
$update = $this-\>sSYSTEM-\>sDB\_CONNECTION-\>Execute(" UDPATE s\_order SET o\_attr6 = ? WHERE ordernumber = ? ",array($this-\>sSYSTEM-\>sMailer-\>Body,$variables[„ordernumber“])); } } } [/code] Das ist so eh robuster als der Weg über den Hookpoint (Hookpoints sind in 3.5 deprecated)

---

<div class="post-metadata">

**Author:** ![Markus](https://avatars.discourse-cdn.com/v4/letter/m/b782af/32.png) [@Markus](https://forum.shopware.com/u/Markus)\
**Post date:** [23. September 2010 um 10:07 UTC](https://forum.shopware.com/t/formular-druckfunktion/233/11 "2010-09-23T10:07:24Z")

</div>

Hi Stefan, erstmal danke … aber es will trotzdem nicht 😉 Eine MyOrder.php gabs schon 😉 Da ward ihr wohl schonmal dran 😉 [code]\<?php include("$path/sOrder.php");

class myOrder extends sOrder{

// Bestellung drucken  
function sendMail($variables){  
parent::sendMail($variables);  
if (!empty($variables[“ordernumber”])){  
$update = $this-\>sSYSTEM-\>sDB\_CONNECTION-\>Execute(" UDPATE s\_order SET o\_attr6 = ? WHERE ordernumber = ? ",array($this-\>sSYSTEM-\>sMailer-\>Body,$variables[“ordernumber”])); } } … … [/code] Ich habe da den Teil von dir jetzt einfach vornedran gehangen. Die s\_core\_factory war schon entsprechend angepasst. Trotzdem … in der Datenbank im Feld o\_attr6 kommt nichts an … das bleibt hartnäckig leer 😉 Cache hatte ich immer wieder vorher geleert 😉 Markus

---

<div class="post-metadata">

**Author:** ![Stefan\_Hamann](https://avatars.discourse-cdn.com/v4/letter/s/5e9695/32.png) [@Stefan\_Hamann](https://forum.shopware.com/u/Stefan_Hamann)\
**Post date:** [23. September 2010 um 11:29 UTC](https://forum.shopware.com/t/formular-druckfunktion/233/12 "2010-09-23T11:29:24Z")

</div>

Na dann müssen wir den Käfer mal suchen. Bau mal folgenden Debug-Code ein, bzw. stell das kurz um. ` if (!empty($variables["ordernumber"])){ $update = $this-\>sSYSTEM-\>sDB\_CONNECTION-\>Execute(" UDPATE s\_order SET o\_attr6 = ? WHERE ordernumber = ? ",array($this-\>sSYSTEM-\>sMailer-\>Body,$variables["ordernumber"])); echo $this-\>sSYSTEM-\>sDB\_CONNECTION-\>ErrorMsg()."  
"; echo "Dump mail:".$this-\>sSYSTEM-\>sMailer-\>Body."  
"; echo "Dump Ordernumber:".$variables["ordernumber"]:"  
"; }else { print\_r($variables);die("Ordernumber empty"); } ` Dann stell die Response mal ein… Die Bestellbestätigungsemail wird aber normal verschickt? Die kommt also an? Bestellung selbst taucht auch im Backend auf?

---

<div class="post-metadata">

**Author:** ![Markus](https://avatars.discourse-cdn.com/v4/letter/m/b782af/32.png) [@Markus](https://forum.shopware.com/u/Markus)\
**Post date:** [23. September 2010 um 11:51 UTC](https://forum.shopware.com/t/formular-druckfunktion/233/13 "2010-09-23T11:51:50Z")

</div>

Hi Stefan, `// Bestellung drucken function sendMail($variables){ parent::sendMail($variables); if (!empty($variables["ordernumber"])){ $update = $this-\>sSYSTEM-\>sDB\_CONNECTION-\>Execute(" UDPATE s\_order SET o\_attr6 = ? WHERE ordernumber = ? ",array($this-\>sSYSTEM-\>sMailer-\>Body,$variables["ordernumber"])); echo $this-\>sSYSTEM-\>sDB\_CONNECTION-\>ErrorMsg()."  
"; echo "Dump mail:".$this-\>sSYSTEM-\>sMailer-\>Body."  
"; echo "Dump Ordernumber:".$variables["ordernumber"]:"  
"; } else {print\_r($variables);die("Ordernumber empty");} }` beschert mir eine schöne weisse Seite 😉 Die Bestellemail kommt an und auch im Backend ist die Bestellung da 😉 schöne Grüße Markus

---

<div class="post-metadata">

**Author:** ![Stefan\_Hamann](https://avatars.discourse-cdn.com/v4/letter/s/5e9695/32.png) [@Stefan\_Hamann](https://forum.shopware.com/u/Stefan_Hamann)\
**Post date:** [23. September 2010 um 11:55 UTC](https://forum.shopware.com/t/formular-druckfunktion/233/14 "2010-09-23T11:55:56Z")

</div>

Dann ist da ein Syntaxfehler im Code. echo „Dump Ordernumber:“.$variables[„ordernumber“]:"  
„; Den Doppelpunkt hinter ordernumber“] durch einen Punkt ersetzen. Dann kommt hoffentlich mehr Output 😉

---

<div class="post-metadata">

**Author:** ![Markus](https://avatars.discourse-cdn.com/v4/letter/m/b782af/32.png) [@Markus](https://forum.shopware.com/u/Markus)\
**Post date:** [23. September 2010 um 12:17 UTC](https://forum.shopware.com/t/formular-druckfunktion/233/15 "2010-09-23T12:17:07Z")

</div>

Hi … orgs … na das hätte ich auch selbst sehen können 😉 Jetzt gibts output … [quote]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘UDPATE s\_order SET o\_attr6 = ’ \r’ at line 1 Dump mail:[/quote] Dann kommt die Mail … die sieht gut aus … und dann noch … [quote] Dump Ordernumber:10045 FirePHP ERROR: Headers already sent in /shovuxcx/www.shop-ftp.de/ftpshops/store/engine/core/class/inherit/myOrder.php on line 19. Cannot send log data to FirePHP. You must have Output Buffering enabled via ob\_start() or output\_buffering ini directive. [/quote] Markus

---

<div class="post-metadata">

**Author:** ![Stefan\_Hamann](https://avatars.discourse-cdn.com/v4/letter/s/5e9695/32.png) [@Stefan\_Hamann](https://forum.shopware.com/u/Stefan_Hamann)\
**Post date:** [23. September 2010 um 14:14 UTC](https://forum.shopware.com/t/formular-druckfunktion/233/16 "2010-09-23T14:14:03Z")

</div>

Hey, habe es jetzt selbst in einer Demo ausprobiert. Also hier mal der komplette Code der myOrder.php, wobei natürlich die Debug-Ausgaben entfernt werden müssten. ` include("$path/sOrder.php"); class myOrder extends sOrder{ function sendMail($variables){ parent::sendMail($variables); if (!empty($variables["ordernumber"])){ $update = $this-\>sSYSTEM-\>sDB\_CONNECTION-\>Execute(" UDPATE s\_order SET o\_attr6 = ? WHERE ordernumber = ? ",array($this-\>sSYSTEM-\>sMailer-\>Body,$variables["ordernumber"])); echo $this-\>sSYSTEM-\>sDB\_CONNECTION-\>ErrorMsg()."  
"; echo "Dump mail:".$this-\>sSYSTEM-\>sMailer-\>Body."  
"; echo "Dump Ordernumber:".$variables["ordernumber"]."  
"; } else {print\_r($variables);die("Ordernumber empty");} } } ?\> ` Funktioniert 100 %. Ansonsten schick mal einen Dump von deiner Datei, evtl. kollidiert da ja irgendwas. Versionsstand ist 3.0.5?

---

<div class="post-metadata">

**Author:** ![Markus](https://avatars.discourse-cdn.com/v4/letter/m/b782af/32.png) [@Markus](https://forum.shopware.com/u/Markus)\
**Post date:** [23. September 2010 um 15:12 UTC](https://forum.shopware.com/t/formular-druckfunktion/233/17 "2010-09-23T15:12:41Z")

</div>

Hi Stefan, tja … leider geht da nichts. Das Datenbankfeld bleibt leer. Es ist die Version 3.0.5 In der myOrder.php habe ich alles rausgeschmissen was da drin war und nur deinen Code rein … trotzdem wird nichts gespeichert. Keine Ahnung woran das liegt. Ich kann dir da auch gerne den Zugang vom Shop geben bzw. dir sagen um welchen Shop es sich handelt wenn du magst. Schöne Grüße Markus

---

<div class="post-metadata">

**Author:** ![Stefan\_Hamann](https://avatars.discourse-cdn.com/v4/letter/s/5e9695/32.png) [@Stefan\_Hamann](https://forum.shopware.com/u/Stefan_Hamann)\
**Post date:** [23. September 2010 um 15:27 UTC](https://forum.shopware.com/t/formular-druckfunktion/233/18 "2010-09-23T15:27:29Z")

</div>

Ja, schick mir mal bitte den Zugang per PN, oder falls uns der sowieso vorliegt den Kundennamen. Was für eine PHP Version läuft denn auf dem Server? Du könntest nochmal testweise var\_dump($this-\>sSYSTEM-\>sMailer);exit; direkt unterhalb des “parent::sendMail($variables);” reinsetzen.

---

<div class="post-metadata">

**Author:** ![Stefan\_Hamann](https://avatars.discourse-cdn.com/v4/letter/s/5e9695/32.png) [@Stefan\_Hamann](https://forum.shopware.com/u/Stefan_Hamann)\
**Post date:** [23. September 2010 um 15:53 UTC](https://forum.shopware.com/t/formular-druckfunktion/233/19 "2010-09-23T15:53:19Z")

</div>

Funktioniert jetzt. Da war ein Schreibfehler in der SQL-Query. Es heißt natürlich “update” und nicht UDPATE

---

<div class="post-metadata">

**Author:** ![Markus](https://avatars.discourse-cdn.com/v4/letter/m/b782af/32.png) [@Markus](https://forum.shopware.com/u/Markus)\
**Post date:** [23. September 2010 um 16:40 UTC](https://forum.shopware.com/t/formular-druckfunktion/233/20 "2010-09-23T16:40:55Z")

</div>

Hi Stefan, ich muss doch nochmal nerven … da wird nichts in die DB geschrieben … das Feld ist nachwievor leer. Markus

[Nächste Seite](https://forum.shopware.com/t/formular-druckfunktion/233.md?page=2)
