F
Freiheitenwelt
Guest
Hallo liebes Forum,
ich bin neu hier - Martin mein Name aus Dinkelsbühl. ;-)
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!
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
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.
Frage:
Das PHP funktioniert so 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...
GLG Martin
ich bin neu hier - Martin mein Name aus Dinkelsbühl. ;-)
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!
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:
.main_container {
position: relative;
border: 1px solid;
float: left;
width: 210mm;
height: 74mm;
margin-left: 0;
margin-top: 0mm;
}
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:
<?php $i = 0; ?>
<?php foreach ($chunk as $ticket): ?>
<div class="main_container" margin-top="X";>
CODE AUS SINGLE TICKET
</div>
<?php $i++; ?>
<?php endforeach; ?>
Frage:
Das PHP funktioniert so 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:
<?php $x++; ?>
<?php echo ($x < $numChunks)? '<div style="page-break-before: always;"></div>' : ''; ?>
<?php endforeach; ?>
GLG Martin
PHP:
<?php $chunkTickets = array_chunk($tickets, 3); ?>
<?php $numChunks = count($chunkTickets); ?>
<?php $x = 1; ?>
<?php foreach($chunkTickets as $chunk) : ?>
<?php $ticket = $chunk[0]; ?>
<?php
$price = get_post_meta( $ticket['WooCommerceEventsVariationID'], '_regular_price', true);
if(empty($price)) {
$price = get_post_meta( $ticket['WooCommerceEventsVariationID'], '_sale_price', true);
}
$currencySymbol = get_woocommerce_currency_symbol();
if(!empty($price)) {
$price = $currencySymbol.''.$price;
} else {
$_product = wc_get_product($ticket['WooCommerceEventsProductID']);
$price = $_product->get_price_html();
}
?>
<?php $i = 0; ?>