Hallo sven.marx,
das SQL-Statement für den Default-Wert eines Feldes klappt nicht mit Feld-Werten.
Daher bleibt das Ergebnis des SQL-Statements bei dir immer leer.
Für das Setzen von Default-Werten über ein SQL-Statement werden zwar Platzhalter ausgewertet (Parameter des User-Objekts und Input-Objekts sind möglich), aber es stehen unmittelbar nach der Anzeige des Formulars keine Feld-Werte zur Verfügung.
Und wenn Feldwerte sich ändern, wird die Neuauswertung des SQL-Statements bei den Default-Werten gewollt nicht erneut angestoßen.
Es handelt sich ja um einen einmaligen Vorgang für die Erstanzeige des Formulars.
Du kannst es aber auf einem anderen Weg erreichen.
Ein funktionierendes Beispiel zeige ich im Folgenden.
Beispiel mit 3 Feldern unter der Zwischenüberschrift 'Example of SQL based dynamic Text rendering:'
Screenshot Formular vor der Auswahl:
vi-solutions.de/forum-uploads/sql-based-...before-selection.png
Screenshot Formular nach der Auswahl:
vi-solutions.de/forum-uploads/sql-based-...-after-selection.png
Feld 'sql2-select':
Eine ganz normales SQL-Listbox Feld zur Auswahl eines Ortes, die aus der Hilfstabelle ermittelt werden.
Die aktuelle Auswahl wird durch einen Platzhalter im SQL-Statement im Feld 'text2-sql-default' ausgewertet.
Es hat zusätzlich einen benutzerdefinierten Text bekommen, der die Überschrift 'Example of SQL based dynamic Text rendering:' liefert.
Der benutzerdefinierte Text wurde als 'darüber stehend' konfiguriert.
Der benutzerdefinierte Text wird ebenfalls leicht manipuliert (siehe unten), damit er die Bootstrap 5 Klasse 'fw-bold' bekommt und in Fettschrift erscheint.
Das Feld-Label hat auf dem Reiter 'Erweitert' in der Option 'CSS Class For Label' den Wert 'fw-bold' (eine Bootstrap 5 Klasse für Texte) gesetzt.
Screenshot:
vi-solutions.de/forum-uploads/sql-based-...-sql2-select_sql.png
Feld 'text2-sql-default':
Ein Textfeld mit Default-Wert aus einem SQL-Statement als Beispiel.
In diesem SQL-Statement sind nur feste Werte und Parameter des User-Objekts und Input-Objekts möglich.
Platzhalter für Feld-Werte sind nicht möglich.
In diesem Fall bleibt das Feld immer leer.
Screenshot:
vi-solutions.de/forum-uploads/sql-based-...-sql-default_sql.png
Feld 'sql2-sql-default':
Ein leicht manipuliertes SQL-Listbox Feld zur reinen Text-Anzeige der passenden Firma nach Auswahl des Ortes in Feld 'sql2-select'.
Damit es nicht wie eine Listbox aussieht wurden schwarzer Rahmen und schwarzer Auswahlpfeil entfernt, die gesamte Listbox 'disabled' und die in Folge dessen hellgraue Schrift durch die normale Anzeigefarbe ersetzt.
Screenshot:
vi-solutions.de/forum-uploads/sql-based-...-sql-default_sql.png
Die ganze Manipulation erfolgt mittels etwas JavaScript, das mittels PHP in das Visforms Template eingefügt wurde.
Es ist also ein Visforms Template-Override:
Das Original default.php: components/com_visforms/tmpl/visforms/default.php
kopiert nach (wird zum 'Override'): templates/cassiopeia/html/com_visforms/visforms/default.php
und anschließend geändert: folgendes PHP ziemlich weit oben einfach eingefügt.
Hier der PHP-Schnipsel mit dem eigentlichen JavaScript zur leichten Manipulation des Feldes 'sql2-sql-default' mit der Feld-ID 191:
Code:
?><script>
jQuery(document).ready(function() {
$('#field191').attr("disabled", true);
$('#field191').attr("style", "appearance: none; color: initial !important; border: none;");
$('.field190 > .visCustomText > p').addClass("fw-bold");
});
</script><?php
SQL-Statement zur Erzeugung der Hilfs-Tabelle:
Code:
create table Maerkte_Gas
(
id int auto_increment,
Firma text null,
Ort text null,
constraint Maerkte_Gas_pk
primary key (id)
);
SQL-Statement zur Befüllung der Hilfs-Tabelle:
Code:
INSERT INTO Maerkte_Gas (Firma, Ort) VALUES
('Firma A', 'Ort A'),
('Firma B', 'Ort B'),
('Firma C', 'Ort C'),
('Firma D', 'Ort D'),
('Firma E', 'Ort E');
Liebe Grüße, Ingmar