Joomla 5 Mitteilung

Wir freuen uns mitteilen zu können, dass seit dem 29. Januar 2024 alle unsere Joomla Erweiterungen mit Joomla 5 kompatible sind.

Für alle die gerade noch von Joomla 3 auf 4 aktualisieren: Anleitungen für die Joomla 4 Migration gibt es hier:

Es gibt nun auch eine eigenständige Dokumentation für Visforms für Joomla 4 und für Visforms auf Joomla 5

Forum

Visforms Subscription Inhaber können in unserem Forum Fragen stellen. Bitte mit dem entsprechenden Benutzer anmelden.
Jeder kann lesend auf das Forum zugreifen.

Bitte stellen Sie nur 1 Frage pro Thema.

PDF Erstellung aus mehreren Tabellen

Mehr
6 Monate 3 Wochen her #9744 von MaliRaj
MaliRaj antwortete auf PDF Erstellung aus mehreren Tabellen
Dieses (dein obiges Beispiel) funktioniert? Das kann ich nicht nachvollziehen. Kann es sein, dass es mehrere Tippfehler enthält?
 
Code:
SELECT concat(F73->>'$.folder','/',F73->>'$.file') as bilder FROM #_visforms_5 AS bilder, #_visforms_8 WHERE bilder.F74 = 'Bilddatei' AND bilder.F249 = #_visforms_8.F248

Freundliche Grüße aus PM
Heinz

Mehr
6 Monate 3 Wochen her #9745 von sek101079
sek101079 antwortete auf PDF Erstellung aus mehreren Tabellen

Dieses (dein obiges Beispiel) funktioniert? Das kann ich nicht nachvollziehen. Kann es sein, dass es mehrere Tippfehler enthält?
 
Code:
SELECT concat(F73->>'$.folder','/',F73->>'$.file') as bilder FROM #_visforms_5 AS bilder, #_visforms_8 WHERE bilder.F74 = 'Bilddatei' AND bilder.F249 = #_visforms_8.F248


Ja, das obere funktioniert. Es gibt zumindest die korrekten Pfade aus und in Verbindung mit dem IMG Tag im PDF Dokument gibt es dann auch die Bilder zu den Pfaden im PDF aus. Wo sind denn deiner Meinung nach die Tippfehler?

Ich habe das "Copy/paste" von der Abfrage hierher übertragen. Habe nur das prefix der Tabellen durch # ersetzt.

Mehr
6 Monate 3 Wochen her - 6 Monate 3 Wochen her #9746 von MaliRaj
MaliRaj antwortete auf PDF Erstellung aus mehreren Tabellen
Meine Vermutung:
1. dein Präfix, wenn du ihn ersetzt, musst du mit #_ ersetzen, nicht nur mit #
2. deine Select-Anweisung sollte nur den Pfad zur Bilddatei wiedergeben, nicht aber das HTML-Element 'img'
3. die Zeichenfolge <...> musst du eventuell vermeiden, siehe Beispiel von Aicha bzw. Doku zu SQL-SELECT-STATEMENTS (die genaue Stelle habe ich nicht im Kopf (bin mir nicht sicher, ob das so korrekt zutrifft, und nicht nur bei Berechnungen)

Freundliche Grüße aus PM
Heinz
Letzte Änderung: 6 Monate 3 Wochen her von MaliRaj.
Folgende Benutzer bedankten sich: Administrator IV

Mehr
6 Monate 3 Wochen her #9747 von Administrator IV
Administrator IV antwortete auf PDF Erstellung aus mehreren Tabellen
Hallo Sven,

kurz folgendes vorweg.
Heinz liegt richtig wenn er schreibt:
2. deine Select-Anweisung sollte nur den Pfad zur Bilddatei wiedergeben, nicht aber das HTML-Element 'img'

Zitat 'Ich muss also jeden Pfad in ein eigenes IMG Tag innerhalb der Abfrage packen. Das ist mit noch nicht gelungen.'
Nein, hier auf keinen Fall.

Der folgende Punkt aus der Dokumentation beleuchtet die Situation.
Das geschachtelte HTML-Element wird vervielfacht:
docs.joomla-4.visforms.vi-solutions.de/d...nt-wird-vervielfacht

Ich gehe von der Annahme aus, dass dein jüngstes SQL-Statement zur Bildermittlung nicht genau 1 Datensatz (1 Bild), sondern mehrere Datensätze liefert - warum auch immer.
In diesem Fall wird laut Dokumentation das, mit dem class="sql" Attribut zu Kennzeichnung des Wiederhol-Bereiches versehene, HTML-Element wiederholt.
Für jeden Datensatz einmal, also für jeden Datensatz 1 img-Element.

Siehe auch folgendes auf der gleichen Seite der Dokumentation.
Die 1:n Beziehung:
docs.joomla-4.visforms.vi-solutions.de/d...ts/#die-1n-beziehung

Ich gehe also stark davon aus, dass genau dieser Fall bei dir vorliegt und zu der Reihe der direkt hintereinander liegenden Bilder führt.

In meinem Beispiel vom Anfang habe ich das mal kurz nachgestellt.
Das leicht veränderte sekundäre SQL-Statement (zusätzliche beliebige Daten) liefert nun fest 4 Datensätze für jeden primären Datensatz (Formular-Datensatz) und lautet nun:
[code]
select url from links limit 4;
[code]

Die Vorschau zeigt 4 Bilder in Folge für jede Tabellen-Zeile.
PDF-Vorschau:
vi-solutions.de/forum-uploads/pdf-exampl...4-images-per-row.png

Liebe Grüße, Ingmar

:idea: I recommend you the new and up-to-date documentation for Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/en/docs/
Most of this also applies retrospectively to Joomla 3.
Please only ask 1 question per topic :-).

:idea: Ich empfehle Dir die neue und aktuelle Dokumentation für Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/docs/
Das meiste gilt rückwirkend auch für Joomla 3.
Bitte immer nur 1 Frage pro Thema stellen :-).

Mehr
6 Monate 2 Wochen her - 6 Monate 2 Wochen her #9759 von sek101079
sek101079 antwortete auf PDF Erstellung aus mehreren Tabellen
Hallo Ingmar,

vielen Dank für deine Antwort. Leider komme ich hier nicht weiter. Ich verstehe es einfach nicht...

Deine Annahme ist richtig. Ich habe z. B. aus Tabelle 8 eine Kundennummer und ziehe mir dazu aus Tabelle 5 die Bilder der Kundennummer. Im konkreten Testbeispiel liefert mir die Abfrage "result = 4" als 4 Bilder.

Diese Bilder werden mir im PDF in immer von links nach rechts nebeneinander angezeigt, aber auch nur bis zum Rand des PDF, das heißt, ich sehe 1,5 Bilder, der Rest verschwindet am Rand rechts neben dem Dokument.

Erreichen möchte ich, dass die Bilder untereinander angezeigt werden. Ich scheitere bisher aber kläglich. Aktuell sieht mein PDF Code so aus:

<table style="border-collapse: collapse; border-color: #000000; border-style: solid; float: left;" cellpadding="4">
<tbody>
<tr style="border-color: #000000; border-style: solid;">
<td style="border-color: #000000; border-style: solid; width: 50%;" colspan="3"><strong>Zeile 1</strong></td>
<td style="border-color: #000000; border-style: solid; width: 50%;"><strong>Wert 1 aus Tabelle 8</strong></td>
</tr>
<tr style="border-color: #000000; border-style: solid;">
<td style="border-color: #000000; border-style: solid; width: 50%;" colspan="3"><strong>Zeile 2</strong></td>
<td style="border-color: #000000; border-style: solid; width: 50%;"><strong>Wert aus Tabelle 8</strong></td>
</tr>
<tr style="border-color: #000000; border-style: solid;">
<td style="border-color: #000000; border-style: solid; width: 50%;" colspan="3"><strong>Zeile 3</strong></td>
<td style="border-color: #000000; border-style: solid; width: 50%;"><strong>Wert aus Tabelle 8</strong></td>
</tr>
<tr style="border-color: #000000; border-style: solid;">
<td style="border-color: #000000; border-style: solid; width: 50%;" colspan="3"><strong>Zeile 4</strong></td>
<td style="border-color: #000000; border-style: solid; width: 50%;"><strong>Wert aus Tabelle 8</strong></td>
</tr>
<tr style="border-color: #000000; border-style: solid;">
<td style="border-color: #000000; border-style: solid; width: 50%;" colspan="3"><strong>Zeile 5</strong></td>
<td style="border-color: #000000; border-style: solid; width: 50%;"><strong>Wert aus Tabelle 8</strong></td>
</tr>
<tr style="border-color: #000000; border-style: solid;">
<td style="border-color: #000000; border-style: solid; width: 50%;" colspan="3"><strong>Zeile 6</strong></td>
<td style="border-color: #000000; border-style: solid; width: 50%;"><strong>Wert aus Tabelle 8</strong></td>
</tr>
<tr style="border-color: #000000; border-style: solid;">
<td style="border-color: #000000; border-style: solid; width: 50%;" colspan="3"><strong>Zeile 7</strong></td>
<td style="border-color: #000000; border-style: solid; width: 50%;"><strong>Wert aus Tabelle 8</strong></td>
</tr>
<tr style="border-color: #000000; border-style: solid;">
<td style="border-color: #000000; border-style: solid; width: 50%;" colspan="3"><strong>Zeile 8</strong></td>
<td style="border-color: #000000; border-style: solid; width: 50%;"><strong>Wert aus Tabelle 8</strong></td>
</tr>
<tr style="border-color: #000000; border-style: solid;">
<td style="border-color: #000000; border-style: solid; width: 50%;" colspan="3"><strong>Zeile 9</strong></td>
<td style="border-color: #000000; border-style: solid; width: 50%;"><strong>Wert aus Tabelle 8</strong></td>
</tr>

*** von oben bis hierhin funktioniert alles tadellos, ab unten beginnt das Problem ***

<tr class="loop" style="border-color: #000000; border-style: solid;">
<td style="border-color: #000000; border-style: solid; width: 50%;" colspan="3"><strong>Bild X</strong></td>
<td id="Dokumente" class="sql" style="border-color: #000000; border-style: solid; width: 50%;"><img src="${Dokumente:bilder}" /></td>
</tr>

${Dokumente:bilder} kommt aus Tabelle 5

*** Dieser Schnipsel oben läuft nicht wie gewollt und versucht alle 4 Bilder nebeneinander in das zweite <td>Tag nebeneinander auszugeben ***

</tbody>
</table>

Meine Erwartung war, dass alles was im <tr>Tag ist, gelooped wird. und dadurch dieser Schnipsel so oft untereinander angereiht wird wie es Datensätze (Bilder) gibt.


Wo ist mein Verständnisfehler? Was mache oder denke ich falsch?

Noch lieber wäre mir eigentlich solch eine Struktur für die Bilder, aber mit der Struktur oben wäre ich auch bereits zufrieden:

Code:
<table> <tr> <th class="tg-031e" colspan="2">Bilder</th> </tr> <tr> <td>Bild 1</td> <td>Bild 2</td> </tr> <tr> <td>Bild 3</td> <td>Bild 4</td> </tr> <tr> <td>ggfs. Bild 5</td> <td>ggfs. Bild 6 usw.</td> </tr> </table>

Letzte Änderung: 6 Monate 2 Wochen her von sek101079.

Mehr
6 Monate 2 Wochen her #9772 von Administrator IV
Administrator IV antwortete auf PDF Erstellung aus mehreren Tabellen
Hallo Sven,

kurz folgender Tipp vorweg bezüglich der Entwicklung von Irgendetwas:
Wenn etwas hartnäckig nicht funktioniert, dann reduziere indem du alles andere, was bereits funktioniert, entfernst oder minimierst.
Konzentriere dich dann auf den kleinen Teil der noch nicht funktioniert.
Dann werden auch alle Listings und Beispiele und Darstellungen, halt die ganz Arbeiten des Problemlösens, deutlich einfacher und übersichtlicher und handlicher.

Zu 'Meine Erwartung war, dass alles was im <tr>Tag ist, gelooped wird. und dadurch dieser Schnipsel so oft untereinander angereiht wird wie es Datensätze (Bilder) gibt.'

Kurze Antwort: Nö.

Lange Antwort:
Hier zum 1: n Verständnis, also wann und woher die Bilder kommen und wohin sie kommen.

1 - Lies mal das hier.
Das komplette PDF-Template oder nur einen Teil vervielfachen:
docs.joomla-4.visforms.vi-solutions.de/d...nced-sql-statements/

Es geht hier um 'jeden ausgewählten Datensatz des Formulars'.
Für jeden (ausgewählten) Datensatz des Formulars gibt es einen Durchgang, eine Wiederholung, ein komplettes PDF-Template im fertigen PDF-Dokument.
Mit einem HTML-Elements mit dem class="loop" Attribut wird nur dieser kleine Teil des PDF-Template vervielfältigt, auch hier für jeden Datensatz des Formulars.

2 - Lies mal das hier.
Sekundäre SQL-Statements:
docs.joomla-4.visforms.vi-solutions.de/d...%A4re-sql-statements

Es geht hier um die zusätzliche Daten, zusätzliche Tabellen, also zusätzlich zum aktuellen Datensatz des Formulars, auf dem dein PDF-Template aufbaut.

3 - Lies mal das hier.
Sekundäre SQL-Statements an ein HTML-Element binden
docs.joomla-4.visforms.vi-solutions.de/d...%A4re-sql-statements

Es geht hier um das Ausführen eines zusätzlichen SQL-Statements im Kontext des aktuellen Datensatz des Formulars.
Hier entstehen deine Bilder entsprechend deines SQL-Statements.
Pro Ergebnisdatensatz des zusätzlichen SQL-Statements wird der HTML-Bereich kopiert, bearbeitet und an Ort und Stelle eingefügt.
Zitat: 'ein class="sql" Attribut zu Kennzeichnung des Wiederhol-Bereiches'.

4 - Das vereinfachte (2 Spalten entfernt) Dokument-HTML aus dem PDF-Template meines Beispiels von oben:
vi-solutions.de/forum-uploads/pdf-exampl...s-per-row_simple.png
Code:
<p style="text-align: center;"><span style="font-size: 14pt; text-align: center;"><strong>Bilderliste</strong></span></p> <table border="1" width="100%" cellpadding="4"> <thead> <tr style="font-weight: bold; background-color: lightskyblue;"> <th colspan="1" align="center">Nachname</th> <th colspan="4" align="center">Link</th> </tr> </thead> <tbody> <tr class="loop"> <td colspan="1" align="left">${last}</td> <td id="link" class="sql" colspan="1" align="left"><img src="${link:url}" /></td> </tr> </tbody> </table>

Für jeden (ausgewählten) Datensatz des Formulars wird folgendes wiederholt (primär):
Code:
<tr class="loop">

Darin wird dann für diesen aktuellen Datensatz des Formulars folgendes wiederholt (sekundär).
Für jedes Ergebnis (4 Bilder bei dir und mir) des zusätzlichen sekundären SQL-Statements ('Dokumente' bei dir, 'link' bei mir) im Kontext des aktuellen Datensatz:
Code:
<td id="link" class="sql" colspan="1" align="left"><img src="${link:url}" /></td>

'Im Kontext des aktuellen Datensatz' bedeutet folgendes:
Code:
select url from links where id = '${item:age}';

Wobei ${item:age} bedeutet: aus dem aktuellen Datensatz des Formulars ('item') verwende an dieser Stelle den Wert des Formular-Feldes 'age'.

Wenn das soweit bei dir passt ( class="loop" gegenüber class="sql"):
- geht es um die passende Darstellung der Bilder im HTML, welches dann nach PDF konvertiert wird.
Ich habe mich in meinem Beispiel für eine Tabelle mit 'colspan' Angaben entschieden.
Das sind dann reine HTML-Themen.
Bei der Konvertierung von HTML nach PDF durch die PDF-Bibliothek 'TCPDF' funktionieren viele Sachen sehr gut, andere nicht (CSS ist insbesondere beschränkt).
- musst du für 4 vertikale Bilder einfach mal verschiedene Möglichkeiten ausprobieren (etwa eine Bilder-Tabelle im <td> der Haupt-Tabelle oder anderes).
Verwende nicht gleich die fertige finale große komplette Lösung, sondern halte dein Beispiel zum Ausprobieren eben möglichst klein und simpel.

Liebe Grüße, Ingmar

:idea: I recommend you the new and up-to-date documentation for Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/en/docs/
Most of this also applies retrospectively to Joomla 3.
Please only ask 1 question per topic :-).

:idea: Ich empfehle Dir die neue und aktuelle Dokumentation für Joomla 4:
docs.joomla-5.visforms.vi-solutions.de/docs/
Das meiste gilt rückwirkend auch für Joomla 3.
Bitte immer nur 1 Frage pro Thema stellen :-).

Moderatoren: Administrator AVAdministrator IV
Powered by Kunena Forum