Joomla 5 Notice

We are pleased to announce that as of January 29, 2024, all of our Joomla extensions are compatible with Joomla 5.

For all who are still updateing from Joomla 3 to Joomla 4: Joomla 4 Migration instructions are available here:

There is now a separate Documentation for Visforms for Joomla 4 and for Visforms for Joomla 5!

Forum

Visforms Subscription user can ask questions in our forum. Please log in with the relevant user first.
Everybody can access the forum for reading.

Please only ask 1 question per topic.

Name der Felder mehrfach vergeben

More
1 year 11 months ago #8157 by kthiemig
Name der Felder mehrfach vergeben was created by kthiemig
Hallo zusammen,

ich habe 3 Dropdown Felder erstellt. Hierbei nutze ich die bedingte Anzeige. Jetzt habe ich das Problem, dass ich für die unterschiedlichen Antwortoptionen verschiedene Feldnamen vergeben muss. Somit schreibt er in der Liste auch mehrere Felder.
Kann man dies irgendwie zusammenfassen?

Anforderung:
Dropdown 1:
Antwort1 -> bedingte Anzeige -> bei Auswahl zeige Dropdown 2
Antwort2-> bedingte Anzeige -> bei Auswahl zeige Dropdown 3

Dropdown 2:
Antwort1
Antwort2

Dropdown 3:
Antwort3
Antwort4

Die Auswahl von Dropdown 2 ODER Dropdown 3 soll in ein Tabellenfeld geschrieben werden.

Ich hoffe das war jetzt einigermaßen verständlich. 
Vielen Dank für jede Unterstützung.



 

More
1 year 11 months ago - 1 year 11 months ago #8164 by Administrator IV
Replied by Administrator IV on topic Name der Felder mehrfach vergeben
Hallo kthiemig,

du verwendest am Besten an Stelle der beiden Felder 'Dropdown 2' und 'Dropdown 3' nur ein einziges Feld vom Typ 'Listbox Sql'.
In dem dort notwendigen SQL Statement kannst du
1. mehrere statische Rüchgabezeilen festlegen
2. eine Fallunterscheidung gemäß der Auswahl in 'Dropdown 1' durchführen

Hier ein funktionierendes Beispiel.
Du schreibst/editierst das leicht umfangreiche SQL-Statement eher in einem Texteditor als direkt in der Feldkonfiguration.

Mein steuerndes Feld hat den Namen 'sql-6', ist auch vom Typ 'Listbox Sql' und liefert fest 3 Optionen.
Es hat das folgende SQL-Statement:

Code:
SELECT 'AntwortA' AS label, 'AntwortA' AS value UNION ALL SELECT 'AntwortB' AS label, 'AntwortB' AS value UNION ALL SELECT 'AntwortC' AS label, 'AntwortC' AS value;


Mein abhängiges Feld hat den Namen 'sql-7' und ist ebenfalls vom Typ 'Listbox Sql'.
Es zeigt nur dann die jeweiligen 2 Optionen an, wenn in Feld 'sql-6' die Option 'AntwortA' oder 'AntwortB' ausgewählt ist.
Bei der Auswahl von 'AntwortC' enthält es keine Optionen.
Es hat das folgende SQL-Statement:

Code:
select CASE WHEN 'AntwortA' in ${input:sql-6} THEN 'Antwort1' WHEN 'AntwortB' in ${input:sql-6} THEN 'Antwort3' END as value, CASE WHEN 'AntwortA' in ${input:sql-6} THEN 'Antwort1' WHEN 'AntwortB' in ${input:sql-6} THEN 'Antwort3' END as label union all select CASE WHEN 'AntwortA' in ${input:sql-6} THEN 'Antwort2' WHEN 'AntwortB' in ${input:sql-6} THEN 'Antwort4' END as value, CASE WHEN 'AntwortA' in ${input:sql-6} THEN 'Antwort2' WHEN 'AntwortB' in ${input:sql-6} THEN 'Antwort4' END as label;


Eine Zeilenschaltung ist nur zwischen den select-Teilen erlaubt, also unmittelbar vor dem 'union all select'.
Innerhalb eines select-Teils darf keine Zeilenschaltung stehen.

Folgende Parameter sind (für mein abhängiges Feld 'sql-7') auf dem Reiter 'Grundeinstellungen' noch zu setzen:
'Reload erlauben' = 'Ja'
'Feld verstecken, wenn Liste leer ist' = 'Ja'
(bedeutet keine Anzeige des Feldes 'sql-7', wenn in 'sql-6' keine Option oder Option 'AntwortC' gewählt ist)
'Bei Änderung von nachladen' = 'sql-6'

Noch was:
Wenn du viele Optionen hast, wird das SQL-Statement groß und recht unübersichtlich.
Dann ist es wesentlich besser mit zwei kleinen Hilfstabellen zu arbeiten.
Die 2 Felder einer Hilfstabelle wären etwa 'label' und 'value'.
Eine Tabelle für die Optionen für 'sql-7' wenn in 'sql-6' die 'AntwortA' gewählt ist.
Eine Tabelle für die Optionen für 'sql-7' wenn in 'sql-6' die 'AntwortB' gewählt ist.

Und noch was:
Beide Hilfstabellen kannst du auch mit Visforms erzeugen und füllen.

Und dann noch was:
Es geht auch mit nur 1 Hilfstabelle.
Diese eine Tabelle benötigt dann aber ein weiteres Feld das festlegt, zu welcher Gruppe der Eintrag gehört ('AntwortA' oder 'AntwortB').
Die 3 Felder der Hilfstabelle wären dann etwa 'label' und 'value' und 'group'.

Siehe auch:
www.w3schools.com/sql/sql_union.asp
www.w3schools.com/sql/sql_case.asp
www.vi-solutions.de/de/support/dokumenta...r-mit-optionenlisten

Gruß, 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 :-).
Last edit: 1 year 11 months ago by Administrator IV.
The following user(s) said Thank You: MaliRaj

More
1 year 11 months ago #8165 by kthiemig
Replied by kthiemig on topic Name der Felder mehrfach vergeben
Wow, jetzt bin ich erstmal platt.

Vielen Dank für diese ausführliche und nachvollziehbare Antwort. Das nenne ich mal einen perfekten Support.

Ich werde das mal nachbauen und testen. Ich glaube mit dem Hinweis komme ich klar. Stehe in Visforms noch ganz am Anfang.

Danke!

More
1 year 11 months ago - 1 year 11 months ago #8166 by prffrost
Replied by prffrost on topic Name der Felder mehrfach vergeben
Ich hätte dazu auch eine Frage:

Noch was:
Wenn du viele Optionen hast, wird das SQL-Statement groß und recht unübersichtlich.
Dann ist es wesentlich besser mit zwei kleinen Hilfstabellen zu arbeiten.
Die 2 Felder einer Hilfstabelle wären etwa 'label' und 'value'.
Eine Tabelle für die Optionen für 'sql-7' wenn in 'sql-6' die 'AntwortA' gewählt ist.
Eine Tabelle für die Optionen für 'sql-7' wenn in 'sql-6' die 'AntwortB' gewählt ist.

hast Du dazu ein Beispiel?

 
Last edit: 1 year 11 months ago by prffrost.

More
1 year 11 months ago - 1 year 11 months ago #8168 by Administrator IV
Replied by Administrator IV on topic Name der Felder mehrfach vergeben
Moin prffrost,

meine beiden Hilfstabellen mit den jeweiligen Daten für die Optionen habe ich kurzerhand mit der Visforms 'Form Factory' erzeugt.

Mit der 'Form Factory':
- auf Reiter 'Individuelles Formular' gehen, Formular Titel und Namen vergeben, 2 Felder vom Typ 'Text' hinzufügen und den Button 'Formular und Felder erzeugen' gedrückt
- auf Reiter 'Beispieldaten' gehen und Button 'Daten erzeugen' drücken (einmal 10 Datensätze und einmal 20 Datensätze, weil wegen Unterschied)

Danach hatte ich passend zu den beiden neuen Formularen die beiden Visforms Daten-Tabellen '#__visforms_13' und '#__visforms_14'.

Mein steuerndes Feld hat weiterhin den Namen 'sql-6' und bekommt das folgende leicht abgewandelte SQL-Statement:
Code:
SELECT 'AntwortA' AS label, 'group_a' AS value UNION ALL SELECT 'AntwortB' AS label, 'group_b' AS value UNION ALL SELECT 'AntwortC' AS label, 'no-options' AS value;


Mein neues abhängiges Feld hat den Namen 'sql-8' und ist ebenfalls vom Typ 'Listbox Sql'.
Es zeigt nur dann die jeweiligen Optionen aus einer Hilfstabelle an, wenn in Feld 'sql-6' die Option 'AntwortA' oder 'AntwortB' ausgewählt ist.
Bei der Auswahl von 'AntwortA' enthält es 10 Optionen.
Bei der Auswahl von 'Antwortb' enthält es 20 Optionen.
Bei keiner Auswahl oder Auswahl 'AntwortC' enthält es keine Optionen.

Es hat das folgende SQL-Statement:
Code:
select F96 as label, F97 as value from jx_visforms_13 where 'group_a' in ${input:sql-6} union select F100 as label, F101 as value from jx_visforms_14 where 'group_b' in ${input:sql-6};

Eine Zeilenschaltung ist nur zwischen den select-Teilen erlaubt, also unmittelbar vor dem 'union select'.
Innerhalb eines select-Teils darf keine Zeilenschaltung stehen.

Das Ganze geht auch mit Visforms-externen Hilfstabellen, die nicht durch Visforms erzeugt/gefüllt/editiert werden.

Zur Erzeugung habe ich kurzerhand folgende SQL-Statements in der Datenbank-Console meiner IDE genutzt:
Code:
drop table if exists antwort_a; create table antwort_a (label text,value text); insert into antwort_a (label, value) VALUES ('label-a-1', 'value-a-1'), ('label-a-2', 'value-a-2'), ('label-a-3','value-a-3'); drop table if exists antwort_b; create table  antwort_b (label text,value text); insert into antwort_b (label, value) VALUES ('label-b-1', 'value-b-1'), ('label-b-2', 'value-b-2'), ('label-b-3','value-b-3');


Mein neues abhängiges Feld hat den Namen 'sql-9' und ist ebenfalls vom Typ 'Listbox Sql'.

Es hat das folgende SQL-Statement:
Code:
select label, value from antwort_a where 'group_a' in ${input:sql-6} union select label, value from antwort_b where 'group_b' in ${input:sql-6};

Es geht bei meinen externen Hilfstabellen, die ja ausschließlich die Felder label und value enthalten, auch noch kürzer:
Code:
select * from antwort_a where 'group_a' in ${input:sql-6} union select * from antwort_b where 'group_b' in ${input:sql-6};

Den where-Teil zur Auswahl der beiden 'Selects', habe ich unverändert von Feld 'sql-8' einfach übernommen.
Die Umbenennung der Feldnamen (as label, as value) entfällt in diesem Fall, da die Feld-Namen bereits passen.

Feld 'sql-8' und Feld 'sql-9' reagieren nun beide auf die Auswahl in Feld 'sql-6'.

Gruß, 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 :-).
Last edit: 1 year 11 months ago by Administrator IV.
The following user(s) said Thank You: prffrost

More
1 year 10 months ago #8190 by prffrost
Replied by prffrost on topic Name der Felder mehrfach vergeben
Sauber .. das hat alles funktioniert...

aber eins hab Ich noch ....

kann Ich auch damit "bedingte Anzeige" nutzen ..
also statt ein "selectsql" eine Typ von "Textare" oder "Radiobutton" aufrufen?

Moderators: Administrator AVAdministrator IV
Powered by Kunena Forum