Hallo Volker,
leider ist es in Visforms nicht durch direkte Konfiguration möglich.
Es ist möglich unter Verwendung eines SQL-Felds.
SQL-Felder mit Optionenlisten:
docs.joomla-4.visforms.vi-solutions.de/d...ds-with-option-list/
Dort kann ein eigenes SQL-Statement zur Ermittlung der Optionenliste verwendet werden:
Reiter 'Grundeinstellungen', Option 'SQL-Select-Statement'.
Im SQL-Statement kann auf die aktuellen Werte anderer Formular-Felder zugegriffen werden:
${input:fieldname}
Es kann konfiguriert werden, bei welchen Feldern bei Änderung durch den Benutzer, das SQL-Feld, basierend den geänderten Werten, neu gefüllt werden soll:
Reiter 'Grundeinstellungen', Option 'Bei Änderung von nachladen'.
Bei dir eignet sich der Feld-Typ 'Select SQL'.
Ich habe dir ein lauffähiges Beispiel mit exakt deinen drei Anforderungen erstellt.
Feld 1 - Normales Listbox-Feld zur Auswahl der Veranstaltung:
Label = select-event
Name = select-event
Options-Werte = event-1, event-2, event-3
Feld 2 - 'Select SQL' Listbox-Feld zur Auswahl des Jahrgangs:
Label = sql-select-year
Name = sql-select-year
Auswahl der verschiedenen Events (Feld 'select-event') mit unterschiedlichen Jahrgängen (Feld 'sql-select-year'):
vi-solutions.de/forum-uploads/form-selec...nt-years_event-1.png
vi-solutions.de/forum-uploads/form-selec...nt-years_event-2.png
vi-solutions.de/forum-uploads/form-selec...nt-years_event-3.png
Das SQL-Statement in der Konfiguration:
(Zeilenumbrüche sind nicht möglich, außer an ganz wenigen Stellen)
Code:
SELECT @row := @row + 1 AS value, @row as label FROM #__finder_links_terms,
(SELECT @row:=1899 where 'event-1' in ${input:select-event} union SELECT @row:=1899 where 'event-2' in ${input:select-event} union SELECT @row:=2015 where 'event-3' in ${input:select-event}) n where ((not @row > 2006) and 'event-1' in ${input:select-event} or (not @row > 2008) and 'event-2' in ${input:select-event} or (not @row > 2019) and 'event-3' in ${input:select-event});
Das SQL-Statement mit Zeilenumbrüchen zur besseren Lesbarkeit:
Code:
SELECT @row := @row + 1 AS value, @row as label FROM #__finder_links_terms,
(SELECT @row:=1899 where 'event-1' in ${input:select-event} union
SELECT @row:=1899 where 'event-2' in ${input:select-event} union
SELECT @row:=2015 where 'event-3' in ${input:select-event}) n
where (
(not @row > 2006) and 'event-1' in ${input:select-event} or
(not @row > 2008) and 'event-2' in ${input:select-event} or
(not @row > 2019) and 'event-3' in ${input:select-event}
);
Hinweis zu Lösung:
Die Tabelle '#__finder_links_terms' wurde nur deshalb gewählt, weil sie ausreichend Datensätze beinhaltet.
Das sind bei mir knapp 2000.
Die konkrete Tabelle ist nicht wichtig.
Sie muss nur mindestens so viele Datensätze enthalten, wie die Zahlenfolge lang sein soll.
Erweiterbarkeit:
Das SQL-Beispiel setzt 3 Events mit deinen Jahrgangs-Vorgaben um.
Es ist von seiner Arbeitsweise weitgehend selbsterklärend und in seiner Struktur erweiterbar.
Gruß, Ingmar