Joomla! Ankündigung

Wir freuen uns mitteilen zu können, dass seit heute alle unsere großen Joomla Erweiterungen Spambotcheck, Visforms und Visforms Subscription auch für Joomla 4 zur Verfügung stehen. Damit ist die Migration unserer Softwareprodukte für Joomla 4 abgeschlossen.

Anleitungen für die Migration gibt es hier:

Forum

In unserem Forum erhalten Sie Antworten, direkt vom Entwickler. Sie benötigen eine aktive Visforms Subscription oder eine aktive Subscription für das Bootstrap Carousel Modul, wenn Sie in unserem Forum Fragen zur entsprechenden Erweiterung stellen wollen. Bitte melden Sie sich zuerst mit dem entsprechenden Benutzer an.

Lesender Zugriff auf das Forum ist für Jedermann möglich.

Topic-icon Name der Felder mehrfach vergeben

Mehr
1 Monat 3 Wochen her #8157 von kthiemig
Name der Felder mehrfach vergeben wurde erstellt von 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.



 

Mehr
1 Monat 3 Wochen her - 1 Monat 3 Wochen her #8164 von Administrator IV
Administrator IV antwortete auf 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:

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:

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

-- Visforms Developer --
Always consult our documentations before asking a question on our forum, the answer is most probably there. :)
Bitte konsultiere immer zuerst unsere Dokumentationen bevor du eine Frage im Forum stellst, die Antwort ist bestimmt da. :)
Enjoy Joomla!
Folgende Benutzer bedankten sich: MaliRaj

Mehr
1 Monat 3 Wochen her #8165 von kthiemig
kthiemig antwortete auf 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!

Mehr
1 Monat 3 Wochen her - 1 Monat 3 Wochen her #8166 von prffrost
prffrost antwortete auf 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?

 

Mehr
1 Monat 3 Wochen her - 1 Monat 3 Wochen her #8168 von Administrator IV
Administrator IV antwortete auf 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:
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:
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:
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:
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:
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

-- Visforms Developer --
Always consult our documentations before asking a question on our forum, the answer is most probably there. :)
Bitte konsultiere immer zuerst unsere Dokumentationen bevor du eine Frage im Forum stellst, die Antwort ist bestimmt da. :)
Enjoy Joomla!
Folgende Benutzer bedankten sich: prffrost

Mehr
1 Monat 2 Wochen her #8190 von prffrost
prffrost antwortete auf 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?

Moderatoren: Administrator AVAdministrator IV