1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Ticketshop mit Hardticket - Multiticket als PDF mit Code generiere. DIV Container Dub

Dieses Thema im Forum "Onlineshop mit WordPress" wurde erstellt von Wordleo, 23. Februar 2018.

Schlagworte:
  1. Wordleo

    Wordleo Well-Known Member

    Registriert seit:
    26. Juni 2009
    Beiträge:
    253
    Zustimmungen:
    0
    Hallo liebes Forum,




    Ich bin ziemlich neu in der PHP Welt und benötige für mein "kleines" Ticketprojekt ein paar Tipps die mich auf die richtige Fährte bringen. Ich stecke seit zwei Tagen etwas fest. Ich hab früher C++ programmiert und mit CSS kenn ich mich ganz gut aus... Also bin nicht ganz der Newbie...


    Anforderung: Ich baue für meine Webseite www.freiheitenwelt.de gerade einen Webshop auf mit WooCommerce Ticketshop. Das System funktioniert bestens und generiert nach der Bestellung eine pdf - Din A4 - Datei als Ticket. Über ein Plugin werden die Ticketinformationen von einem HTML Code in das PDF gewandelt.


    Der Anbieter von dem Ticket-Plugin bietet leider nur sehr langweilige PDF-Ticket Vorlagen und somit hab ich mich selber an die Arbeit gemacht. Dabei ist folgendes schicke Ticket entstanden, dass ich nun via PDF schicken kann oder auch auf Ticketvorlagen ausdrucken kann. ;) RICHTIG SUPER!


    Bildschirmfoto 2018-02-22 um 20.19.25.jpg




    Multiticket:


    So wie es jetzt ist bekommt jedes Ticket eine Din-A4 Seite. Das ist sowohl zum drucken für meine Gäste als auch für mich nicht gerade optimal. Deswegen hätte ich gerne 4-Tickets auf einer Din-A4 Seite. Also 4x74mm an Höhe maximal. Bei 5 Tickets geht das ganze Spiel wieder von vorne los.


    Problem:

    Im Orignalcode bedient sich der Programmierer ausschließlich Tabellen die er in einer PHP-Schleife untereinander anordnet. Die nötigen Daten der Tickets gibts über eine post_get_meta... Unten hab ich den Teil des Codes für euch eingefügt.... Nach dem <?php $i = 0; ?> folgen die Tabellen.


    Mein Ticket beruht auf mehreren DIV-Containern mit Längenangaben in mm. Das war für die genaue Anpassung auf das A4 Papier nötig. Über alles hab ich einen Hauptcontainer gelegt mit Position:relativ


    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!


    Lösungsansatz:

    Meine Idee war nun das ich über die Schleife auch immer das "margin-top" um 74mm addiere. Dann sollte sich ein jedes Ticket genau untereinander reihen. Um das zu testen hab ich den Code auf den Hauptcontainer reduziert und ich versuche das nun zu duplizieren. Ich denke wenn das funktioniert sollte der Code aus dem Single-Ticket einfach einzubinden sein.


    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!





    Frage:

    Das PHP funktioniert so natürlich nicht. Meine Frage an euch wäre nun ob das grundsätzlich funktionieren kann? Also über margin-top kann ich sicher mein ganzes Ticket verschieben. Nun ist die Frage wie ich das auf die 4 Tickets in eine Schleife bekomme. Ich denke dem Parameter X muss man wie schon geschrieben immer erhöhen und nach 4 Tickets wieder reseten. Was die Tickets angeht so gibt es da theoretisch eigentlich kein Maximum. Irgendwie muss ich da zwei Schleifen miteinander kombinieren.


    Im Originalcode stehen ganz unten auch noch folgende Zeilen. Jene dienen wohl zum Wechsel der Seiten. Aber wirklich steig ich da nicht durch. Ich hoffe ich konnte mein Problem einigermaßen erklären. Bin für jeden kleinen Tipp dankbar...


    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!



    GLG Martin








    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
    #1 Wordleo, 23. Februar 2018
    Zuletzt bearbeitet: 23. Februar 2018
  2. JD_a_WP-Fan

    JD_a_WP-Fan Member

    Registriert seit:
    23. Februar 2018
    Beiträge:
    5
    Zustimmungen:
    0
    Hi,
    ich bin mir nicht sicher ob es hier hilft, aber ich würde vielleicht mal die CSS calc()-Funktion ansehen und probieren. Soweit ich verstanden habe liegt jedes Ticket in deinem DIV Containern und es geht um eine Art Raster für diese? Ein einfaches Beispiel dafür gibts hier: https://blog.kulturbanause.de/2013/11/berechnungen-mit-css-calc/
     
  3. Wordleo

    Wordleo Well-Known Member

    Registriert seit:
    26. Juni 2009
    Beiträge:
    253
    Zustimmungen:
    0
    Hum - nein ich denke das ist nicht der richtige Weg....

    Das wird sich mit Schleif abspielen müssen...

    GLG
     
  4. Wordleo

    Wordleo Well-Known Member

    Registriert seit:
    26. Juni 2009
    Beiträge:
    253
    Zustimmungen:
    0
    Hallo,

    so ich mach mich jetzt an jene Sache. Vielleicht kann mir jemand einen Tipp geben wie man mit einfachen Schleifen in PHP arbeitet. Wenn ich es richtig denke müsste eine doppelte reichen.




    Ich bin im ersten Schritt nun einmal hergegangen und hab meinen Code für das Einzelticket aufgeräumt. Im Eingangspost ist ja das Ticket zu sehen. Es besteht aus einem Maincontainer mit dem Attribut "Position: fixed;". Innerhalb davon befinden sich dann acht weitere Container für die verschiedenen Informationen wie Logo, Bild, Titel etc... Innerhalb des Maincontainers sind alle DIV's mit "Position:absolute;" eingebunden.


    So ... ;) Das funktioniert alles bestens und ich habe nun zum Test einmal vier leere Maincontainer untereinander in eine Seite eingefügt. Die Informationen auszulesen ist sehr einfach. Mit den Absolut Attributen verschiebt sich nun nichts mehr. Der einzige Wert der sich ändert ist. ->>> CSS top: XX; <<<-


    Und das jeweils um 74mm.


    Wegen des PDF Exports und dem Druck hinterher ist es wesentlich einfacher direkt mit Millimeter Angaben zu arbeiten.
    Hier einmal ein Screenshot wie das bis jetzt aussieht.


    Nun müsste ich eben die Schleifen so Programmieren, dass jeweils für die Anzahl der bestellten Tickets XX um 74mm erhöht wird bis maximal 4 (mehr geht ja nicht drauf) - dann müsste der Pagebreak kommen und das Ganze von vorne los gehen...


    Wie muss ich das aufsetzten? Jemand einen Tipp in die richtige Richtung?


    Bildschirmfoto 2018-03-06 um 20.51.20.jpg




    Vielen Dank - Martin








     
  5. r23

    r23 Well-Known Member

    Registriert seit:
    9. Dezember 2006
    Beiträge:
    7.317
    Zustimmungen:
    582


    cool - du kennst eine PHP Klasse die PDFs mit css3 erstellt?! in der Regel können die PHP Scripte nur HTML Tabellen darstellen.

    Selbstverständlich gibt es eine PHP Klasse, mit der du CSS3 verwenden kannst - sinnvoller ist es allerdings, wenn du ein PDF Template erstellst und dieses mit der Klasse beschreibst.

    Installation composer require mpdf/mpdf aber v o r s i c h t nicht alle erforderlichen Module sind PHP 7.2 tauglich.

    Handbuch
    https://mpdf.github.io/

    und wenn es unbedingt css sein muss, halte dich an die CSS3 Befehle, die diese PHP Klasse kann.
     
  6. Wordleo

    Wordleo Well-Known Member

    Registriert seit:
    26. Juni 2009
    Beiträge:
    253
    Zustimmungen:
    0
    Hi,

    also wie gesagt funktioniert das mit den Tickets nun schon sehr gut und den DIV Containern. Ich hab es mal testweise noch einmal durchlaufen lassen. Das PDF Tool heißt "DOMPDF" - das ist in dem Ticketplugin integriert. Von daher will ich mir nicht die Arbeit machen das umzumodeln. Ich hab mir praktisch das Template geschrieben bevor es in den Konverter geht. ;)

    -> Sieht dann so aus im "Manuellen" Modus. Nun muss ich eben die Daten noch mit reinpacken. Das ist schon echt gut und ich kann, wenn ich muss, die Tickets auch direkt auf meine Blancos drucken.


    Bildschirmfoto 2018-03-07 um 00.17.52.jpg
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden