Hallo Sven,
dein SQL-Statement und auch der HTML-Teil scheinen mir beide nicht so ganz geheuer zu sein.
Ich habe deine Anforderung in einem kleinen lauffähigen Beispiel umgesetzt.
Es ist eigentlich ganz einfach und es sind nur 3 Dinge die wirklich wichtig sind (siehe unten), damit es grundsätzlich mal funktioniert.
Hiermit habe ich meine zweite Tabelle 'links' erzeugt:
Code:
drop table if exists links;
create table links (id text, url text);
insert into links (id, url) VALUES
('21', 'https://cdn.pixabay.com/photo/2015/07/27/20/16/book-863418__340.jpg'),
('22', 'https://cdn.pixabay.com/photo/2015/06/02/12/59/book-794978__340.jpg'),
('23', 'https://cdn.pixabay.com/photo/2014/09/05/18/32/old-books-436498__340.jpg'),
('24', 'https://cdn.pixabay.com/photo/2016/09/10/17/18/book-1659717__340.jpg'),
('25', 'https://cdn.pixabay.com/photo/2015/11/19/21/10/glasses-1052010__340.jpg'),
('26', 'https://cdn.pixabay.com/photo/2015/12/19/20/32/paper-1100254__340.jpg'),
('27', 'https://cdn.pixabay.com/photo/2015/12/05/08/25/fantasy-1077863__340.jpg'),
('28', 'https://cdn.pixabay.com/photo/2016/04/30/13/12/sutterlin-1362879__340.jpg'),
('29', 'https://cdn.pixabay.com/photo/2014/08/16/18/17/book-419589__340.jpg'),
('30', 'https://cdn.pixabay.com/photo/2017/06/10/16/22/coffee-2390136__340.jpg'),
('31', 'https://cdn.pixabay.com/photo/2017/02/26/21/39/rose-2101475__340.jpg'),
('32', 'https://cdn.pixabay.com/photo/2018/05/22/14/00/girl-3421489__340.jpg'),
('33', 'https://cdn.pixabay.com/photo/2015/09/05/21/51/reading-925589__340.jpg'),
('34', 'https://cdn.pixabay.com/photo/2016/09/08/22/43/books-1655783__340.jpg'),
('35', 'https://cdn.pixabay.com/photo/2018/01/04/09/39/love-story-3060241__340.jpg'),
('36', 'https://cdn.pixabay.com/photo/2018/03/19/18/20/tea-time-3240766__340.jpg'),
('37', 'https://cdn.pixabay.com/photo/2016/02/16/21/07/books-1204029__340.jpg'),
('38', 'https://cdn.pixabay.com/photo/2015/09/05/07/28/writing-923882__340.jpg'),
('39', 'https://cdn.pixabay.com/photo/2016/11/29/02/56/blonde-1866951__340.jpg'),
('40', 'https://cdn.pixabay.com/photo/2016/03/27/19/32/book-1283865__340.jpg');
Die PDF-Beispiele installieren:
Ich gehe davon aus, dass du die PDF-Beispiele installiert hast.
Die PDF-Beispiele installierst du ganz einfach durch einen Button-Klick im Visforms Dashboard.
Es wird unter anderen das PDF-Beispiel-Formular 'register' mit Daten und 2 PDF-Templates angelegt.
Für das PDF-Beispiel-Formular 'register' lege ich ein neues PDF-Template 'image' an.
Von den Feldern des Formulars 'register' verwende ich die 3 Felder mit den Alias-Namen 'first', 'last' und 'age'.
Das Feld 'age' ist im Formular vom Typ Zahl und wird als Verbindung zum Feld 'id' in der Tabelle 'links' verwendet.
Achtung:
Beide Felder 'age' und 'id' sind in der Datenbank allerdings vom Typ Text.
Visforms speichert alles seine Feldtypen in der Datenbank als Typ Text.
Im PDF-Template hat auf dem Reiter 'Dokument' das Dokument folgenden Inhalt:
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">
<tbody>
<tr style="font-weight: bold; background-color: lightskyblue;">
<td colspan="1" align="center">Vorname</td>
<td colspan="1" align="center">Nachname</td>
<td colspan="1" align="center">Alter</td>
<td colspan="1" align="center">Link</td>
</tr>
<tr class="loop">
<td colspan="1" align="left">${first}</td>
<td colspan="1" align="left">${last}</td>
<td colspan="1" align="left">${age}</td>
<td id="link" class="sql" colspan="1" align="left"><img src="${link:url}" /></td>
</tr>
</tbody>
</table>
Im PDF-Template hat auf dem Reiter 'SQL Statement' das erste SQL Statement 'link' folgende Einstellungen:
Code:
Referenzname = link
Prozesstyp = Free
Sql-Statement = select url from links where id = '${item:age}';
Die Screenshots:
Die Felder des PDF-Beispiel-Formulars 'register':
vi-solutions.de/forum-uploads/pdf-example-register_fields.png
PDF-Template Reiter 'Dokument' Editor aus:
vi-solutions.de/forum-uploads/pdf-exampl...ter_pdf-document.png
PDF-Template Reiter 'Dokument' Editor an:
vi-solutions.de/forum-uploads/pdf-exampl...cument_editor-on.png
PDF-Template Reiter 'SQL Statement':
vi-solutions.de/forum-uploads/pdf-exampl...f-sql-statements.png
PDF-Vorschau:
vi-solutions.de/forum-uploads/pdf-exampl...ster_pdf-preview.png
Nur 3 Dinge sind für die Funktion zentral:
1.
Das Attribut class="loop" legt fest, dass nur dieses HTML-Element pro Formular-Datensatz kopiert und prozessiert wird.
Ohne class="loop" würde einfach das gesamte Dokument pro Datensatz kopiert und prozessiert werden.
Wir wollen aber jeweils nur eine Tabellenzeile pro Datensatz erzeugen.
2.
Code:
<td id="link" class="sql" colspan="1" align="left"><img src="${link:url}" /></td>
Das Attribut class="sql" legt fest, dass dieses HTML-Element an ein SQL Statement gebunden werden soll.
Das Attribut id="link" bindet diese HTML-Element an das SQL Statement 'link' von Reiter 'SQL Statement'.
Dieses HTML-Element wird pro Ergebnis-Datensatz kopiert und prozessiert.
Das ${link:url} referenziert auf das Ergebnis-Feld 'url' des SQL Statements 'link'.
Ein bloßes ${url} würde sich hingegen auf das Formular-Feld mit dem Alias 'url' beziehen.
3.
Code:
select url from links where id = '${item:age}';
Das ${item:age} referenziert das Formular-Feld mit dem Alias 'age' aus dem aktuell bearbeiteten übergeordneten Formular-Datensatz.
An dieser Stelle ist das Prefix 'item' unbedingt notwendig.
Das Prefix 'item' ist der statische Name für den Bezug auf den übergeordneten Formular-Datensatz.
Das Prefix 'link' ist der selbst vergebene Name für den Bezug auf das SQL Statement 'link' von Reiter 'SQL Statement'.
Hinweis 1:
An allen anderen Stellen ist das Prefix 'item' optional und kann auch weggelassen werden.
Außerdem wird eine alte Schreibweise aus Kompatibilitätsgründen weiterhin unterstützt.
Alle folgenden Parameter-Namen-Variationen sind daher als Platzhalter gleichbedeutend:
Code:
<td colspan="1" align="left">${first}</td>
<td colspan="1" align="left">${item:first}</td>
<td colspan="1" align="left">[FIRST]</td>
<td colspan="1" align="left">[First]</td>
<td colspan="1" align="left">[first]</td>
Hinweis 2:
In dem SQL-Statement schließe ich den Parameter Platzhalter in einfache Hochkommas ein:
Code:
select url from links where id = '${item:age}';
Das ist notwendig weil das Tabellen-Feld 'id' vom Typ Text ist.
Wäre das Tabellen-Feld 'id' vom Typ Zahl, dann müssen die Hochkommas entfallen.
Liebe Grüße, Ingmar