Verständnisfrage: VisForms mit Subscription

  • Joomla Version
    5.x
    PHP Version
    Unbekannt
    Hoster
    all-inkl.com
    Link (URL) zur Seite mit dem Problem
    https://docs.joomla-5.visforms.vi-solutions.de/docs/subscription/field-types/sql/examples/example_two-forms_users-and-cars/

    Hallo,


    ich hab gerade die Doku durchgearbeitet und bei mir sind leider die beigefügten Fotos nicht so gut, dass man alles drin sehen kann.


    Ich versuche gerade das Beispiel der SQL-Elemente zu verstehen.

    Hier steht im Punkt "Feld Select User" folgendes:

    Zitat
    Code
    select CONCAT(F395, ' ', F396) as label, id as value from #__visforms_39;

    Hinweis: Der Teil F395 bezieht sich auf das Feld "First Name" mit der Feld-ID 396.

    Hinweis: Der Teil _39 bezieht sich auf die Daten-Tabelle des Formulars "Benutzer" mit der Formular-ID 39.


    F395 und F396 sind Feld-ID aus der Tabelle 1, wenn ich das im Bild richtig erkenne.


    Ich unterstelle, dass es eigentlich Formular 39 sein sollte, weil daraus ja die Daten geholt werden sollen - lt. SQL-Befehl.


    Wenn man jetzt aber weiterschaut, könnte man unterstellen, dass die Formular-ID nicht passt.


    Wie gesagt, die Bilder kann man nicht so super vergrößern, daher bin ich grade etwas verwundert... Aber kann natürlich passiert.

    In diesem Beispiel müsste dann der Quellcode eher lauten:


    Code
    select CONCAT(F395, ' ', F396) as label, id as value from #__visforms_40;


    Aber für mein Verständnis gerade mal.

    • In dem Beispiel wird für jedes Ausfüllen des Formulars 1 (also die Daten des Users) ein DB Eintrag angelegt. Erzeugt man damit dann nicht unnötig Speicher- / DB-Verschwendung - oder hab ich da grad einen Hänger. Wenn man am Ende die Daten per Email verschickt... könnte man sie am Ende nicht löschen...
      Oder geht man davon aus, dass man die Daten später noch einmal in anderen Bereichen wieder aufruft
    • Also könnte man sich ein Formular erstellen, womit man "nur" Personendaten erfasst (z.B. nur eine Liste der Mitarbeiter), man wählt einfach aus Vorname, Nachname und erhält dann die Concat-Funktion Vorname " " Nachname und evtl. noch eine hinterlegte Emailadresse oder Telefonnummer... was man eben so haben möchte... und könnt die in einem anderen Formular dann einfach weiternutzen (Fahrer eines Fahrzeuges oder Ausleiher von Artikeln oder oder oder)? Sprich man würde 1 Personenformular erstellen, aber x unterschiedliche Themenformulare - wenn ich die mal so nenne.


    Gruß und schönes Wochenende

  • Weiß auch nicht, aber, wenn ich in der verlinkten Anleitung mit rechter Maus auf Bilder klicke und "Bild in neuem Tab öffnen" (Firefox oder Vivaldi) wähle, sind die Bilder eigentlich groß genug und dort ja dann auch weiter zoombar.


    Aber, es kann natürlich sein, dass bei dir das Formular die ID 40 hat. Ist ja abhängig davon, wie viele Formulare man schon angelegt hat, wie viele vielleicht verworfen, wo das sog. AUTOINCREMENT gerade steht usw.


    Was du unter "mein Verständnis" beschreibst, ist das Grundprinzip relationaler Datenbanken. Diverse Tabellen jeweils mit bestimmten "Themen", die bei Bedarf via IDs wechselseitig abgefragt werden. Eine Änderung des Nachnamens kann so an 1 Stelle, in 1 Tabelle eingegeben werden und alle anderen Abfragen ziehen diesen auf aktuellem Stand. Ein Beitrag in Joomla zieht zB so, ohne weiteres Zutun(!), einen geänderten Kategorienamen (Titel), weil Kategorien in einer anderen Tabelle abgelegt sind und Kategorien in der Beitragstabelle lediglich 1x (Feld catid) über die Kategorie-ID referenziert sind.


    EDIT: Dadurch können allerdings Datenbankabfragen ziemlich komplex ("kompliziert") werden, weil z.B. ja der Ersteller-Name eines Beitrags UND/ODER Kategorie wiederum in einer anderen Tabelle liegt usw. usf. Will man nun beide Ersteller in seiner Abfrage haben, wirds noch erheblich trickiger... Ein Hoch auf Joomla Datenbank-PHP-Interface ;) (aber bei dir nicht anwendbar)

  • okay, aber irgendwie funktioniert es bei mir leider nicht.

    Ich habe 2 Formulare gemacht - jetzt gedanklich für eine Krankmeldung eines Mitarbeiters

    1. Personendaten - je nachdem wie weit man das später treiben möchte, kann der Teamleiter eine Meldung machen, d.h. er kann seine Mitarbeiter auswählen. Für den Anfang würde ich es so testen wollen, dass jemand sich selbst meldet... aber damit das Formular später upzugraden ist, lege ich das Formular trotzdem auch an. Auch wenn ich die Daten eigentlich aus den Userdaten direkt bekommen könnte.
      1. Formular hat in meiner Testumgebung die ID 3
      2. Feld Vorname ID 10
      3. Feld Nachname ID 11
      4. Feld Submit ID 12
    2. Krankmeldung - hier ist das erst Feld dann die Personendaten aus der Tabelle 1. Personendaten. Die weiteren Felder sind ja quasi zunächst unerheblich fürs Verständnis.
      1. Formular hat in meiner Testumgebung die ID 4
      2. Feld Personendaten hat die ID 13
        1. Typ Listbox SQL mit dem Code aus dem Handbuch - natürlich etwas abgewandelt:
          Code
          select CONCAT(F10, ' ', F11) as label, id as value from #__visforms_3;

          hier bekomm ich beim Testen die Meldung:
          Code
          Table 'xxxx__visforms_3' doesn't exist'


    Quasi komm ich jetzt an diesem Punkt nicht weiter. Ich denke das die Tabelle nicht #__visforms_ID richtig ist.

    In der Datenbank an sich finde ich aber auch gerade nicht die Daten, die ich in Formular 1 Personendaten eingegeben und abgeschickt habe...
    Vermutlich hab ich irgendwo vorher noch nen Denkfehler, weil ich auch keine andere Tabelle finde, wo die Eingabekombination von mir angezeigt würde.

  • Hallo,


    danke dass du dir Zeit nimmst...

    ich finde bei mir nur diese Datenbank-Tabellen:


    Alle sind Tabellen hab ich durchgeschaut... nirgendwo ist der abgeschickte Eintrag zu finden :(


    Installiert wurde zunächst die Free-Version, welche dann upgegradet wurde in eine Subscription.


    Kurzer Nachtrag:


    Ich habe auch kontrolliert, ob die Option "Ergebnis speichern" aktiviert ist. Dies ist auf ja gesetzt und trotzdem wird nichts in der DB gespeichert.

  • Weiß ich dann auch nicht. Bei mir in der Free (vor wenigen Tagen installiert), ists wie oben gezeigt. 1 Formular angelegt mit 2 Feldern und schon waren die Tabellen da und werden beim Senden im FE gefüllt, also die _visforms_1-Tabelle dauerhaft) .


    Eben ein zweites angelegt, ganz ohne Felder, nur mal so Neu und speichern mit Pflichteingaben, sowie "Save Result". Und neue DB-Tabellen werden on-the-fly angelegt.


    Allerdings Joomla 4.4.2


  • Nochmal kurzer Nachtrag:

    Im Formular selbst war das Feld mit Ergebnis speichern auf nein.

    Das hab ich nun korrigiert und damit wurde dann auch die entsprechende Tabelle beim nächsten Submit der Daten erstellt.


    Ich hätte unterstellt, dass die Tabelle standardmässig aktiviert / erstellt würde... dazu hab ich auch keinen Hinweis in der Doku gefunden... aber nun gut.


    Jetzt funktioniert es auch.


    Danke dir für die Hilfe