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.

Important information for almost every question:
V1: Which Visforms version is running?
V2: Which Joomla version is running?
V3: Which PHP version is running?

. Feldtyp selectsql mit Formularfeld steuern

More
2 years 7 months ago #8048 by gedo
Ich habe ein Testformular erstellt, wobei das erste ein Feld vom Typ radio ist, und die Wert/Vaules mit varchar befüllt ist und die Bezeichnung ebenfalls.Im zweiten Feld vom Typ selectsql möchte ich nun in der Where-Klausel (F5 in {${input:fieldname[]}) verwenden.Das erste Feld hat den namen „Rasse“ alias „rasse“ und die ID 501.Egal welche Schreibweise ich verwende {${input:Rasse[]} oder {${input:rasse[]} oder {${input:501[]} funktioniert die Abfrage nicht. Wobei der Test mit  F5 in („xxxx“) funktioniert.

Was schreibe ich falsch? bzw. kann man auch die Bedingung = verwenden?

More
2 years 7 months ago - 2 years 7 months ago #8050 by MaliRaj
Replied by MaliRaj on topic . Feldtyp selectsql mit Formularfeld steuern
Hallo gedo,
1. dein erstes Feld 'rasse' (Typ: radio) erzeugt vermutlich kein Array. Daher wäre wohl die richtige Schreibweise:
Code:
${input:rasse}

2. Dein komplettes SQL-Statement wäre hilfreich zum erkennen weiterer möglicher Klammerfehler {}

3. Der "Test"-Button in der Feldkonfiguration deines selectsql-Feldes wird immer einen Fehler ergeben, da die Variable 'rasse' erst zur Laufzeit des Formulares gültig (vorhanden) ist.

Freundliche Grüße aus PM
Heinz
(Joomla 5.1.2 / Visforms+Subscription 5.12 / PHP 8.2)
Last edit: 2 years 7 months ago by MaliRaj.
The following user(s) said Thank You: Administrator AV

More
2 years 7 months ago #8053 by Administrator AV
Replied by Administrator AV on topic . Feldtyp selectsql mit Formularfeld steuern
Hallo gedo,

der Hinweis von MaliRaj ist korrekt.

Die [] kannst du sogar auch weg lassen, wenn du einen Platzhalter für ein Feld vom Typ Select/Selectsql verwendest.
Die Dokumenation wird entsprechend angepasst werden.

Darüber hinaus fällt auf, dass du in allen 4 Beispielen am Anfang eine { hast.
Diese ist falsch erzeugt auf jeden Fall einen Fehler.
{${input:rasse[]}

Da der Wert eine Feldes vom Typ Radio einfach ein "String" ist, kannst du in diesem Fall in der where-Klausel auch mit "=" statt "in" arbeiten.

Gruß,
Aicha

: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 :-).

More
2 years 7 months ago - 2 years 7 months ago #8054 by gedo
Danke Für die Tipps!

Wie gesagt wenn ich  in der Klausel in "xxxx" schreibe hat die komplette SQL korrekt funktioniert.

Habe mir als Info das ${input:feldname} (da radio ohne ) im Label eingebunden.
interessant das beim Formularaufruf eine 0 für das Ergebnis angezeit wurde, jedoch beim Wechsel der Auswahl kam nicht der TEXT-string sondern nicht (nehme an NULL).

Daraufhin im radio-Feld nur int-Werte verwendet und im abhängigen SQL-Feld mit CASE/WHENN wieder in den entsprechenden TEXT konvertiert - SO FUNKT ES !!

select id as value, CONCAT(F1," - ",F5," - ",F16) as label 
FROM new_visforms_1
WHERE (F5 > DATE_ADD(SYSDATE(), INTERVAL -91 DAY) and F4 like (CASE
WHEN ${input:rasse} IS NULL THEN "%"
WHEN ${input:rasse} = 0 THEN "%"
WHEN ${input:rasse} = 1 THEN "Bichon Fris%"
WHEN ${input:rasse} = 2 THEN "Bologneser"
WHEN ${input:rasse} = 3 THEN "Cavalier King Charles Spaniel"
WHEN ${input:rasse} = 4 THEN "Japan Chin"
WHEN ${input:rasse} = 5 THEN "Chinese Crested Dog"
WHEN ${input:rasse} = 6 THEN "Coton De Tul%"
WHEN ${input:rasse} = 7 THEN "King Charles Spaniel"
WHEN ${input:rasse} = 8 THEN "Malteser"
WHEN ${input:rasse} = 9 THEN "Papillon"
WHEN ${input:rasse} = 10 THEN "Pekingese"
WHEN ${input:rasse} = 11 THEN "Phalene"
WHEN ${input:rasse} = 12 THEN "Shih Tzu"
ELSE "%"
END)) order by F5 asc
 
Last edit: 2 years 7 months ago by gedo.

More
2 years 7 months ago - 2 years 7 months ago #8060 by MaliRaj
Replied by MaliRaj on topic . Feldtyp selectsql mit Formularfeld steuern
Hallo gedo, dass es nun wie gewünscht "funkt" ist gut. Ich habe mich gefragt, warum dein SQL-Statement (für mich) so umständlich aufgebläht ist und warum du das wohl so gelöst hast. Ich kenne natürlich mangels Information deine genaue Anforderung nicht. Aber so wie ich das erkenne/vermute, willst du mit Feld 2  alle Datensätze mit einer bestimmten Rasse ermitteln, die du in Feld 1 zur Auswahl anbietest. Oder? Wenn das so ist, warum so umständlich über Zahlenwerte und schwer wartbarer SQL-Abfrage. Du könntest das Feld 1 selbst als SQL-Auswahlliste (alle Rassen aus deiner Tabelle) konfigurieren und dann im Feld 2 mit einer stark vereinfachten SQL-Abfrage nach Feld 1 filtern. Der Vorteil dabei wäre, dass sich auch bei neu hinzugefügten Rassen, die Auswahl im Feld 1 dynamisch anpasst und am SQL-Statement nichts geändert werden muss.
Hoffentlich ist das jetzt nicht mehr Verwirrung als Hilfe.

Freundliche Grüße aus PM
Heinz
(Joomla 5.1.2 / Visforms+Subscription 5.12 / PHP 8.2)
Last edit: 2 years 7 months ago by MaliRaj.

Moderators: Administrator AVAdministrator IV
Powered by Kunena Forum