Ergebnis 1 bis 4 von 4

Thema: Tabelle für "Select-Menü (DB)", Struktur?

  1. #1
    Contao-Fan Avatar von deerwood
    Registriert seit
    24.11.2009.
    Ort
    Hamburg
    Beiträge
    344

    Standard Tabelle für "Select-Menü (DB)", Struktur?

    Moin alle,

    ich möchte ein langes/mehrseitiges Formular mit EFG erstellen, das immer wieder Bewertungen der "Schulnoten"-Art abfragt, so etwa: "Wie gut finden Sie dies" und dann mögliche Antworten "seht gut/gut/befriedigend/...". Und ähnliche Bewertungen sind immer und immer wieder erforderlich, manchmal auch mit Mehrfachauswahl. EFG hat da ja was zu bieten, nämlich alle ".... (DB)" Feld-Typen. Und irgendwo habe ich gelesen, dass man dafür eine eigene Tabelle in der DB braucht, die man per phpMyAdmin anlegt (?).

    Aber irgendwie konnte ich auch nach Stunden nicht herausfinden, wie eine solche Tabelle beschaffen sein muss. Das ist entweder nicht dokumentiert, oder ich habe die Doku nicht gefunden.

    Mein Plan ist, eine universelle Tabelle für diesen Zweck einzuführen, die ich dann, bei Bedarf, für jedes Umfrage-Formular benutzen kann. Sie würde auch eine Spalte zum Filtern enthalten, Spaltenname 'filter' oder 'category' und z.B. mit dem Wert "Schulnoten".

    Daraus sollen dann Options erzeugt werden wie etwa
    • 1 = sehr gut
    • 2 = gut
    • 3 = befriedigend
    • 4 ...

    also angezeigt und vom Benutzer gewählt wird "gut", gespeichert wird 2 ... und ein Label wird natürlich auch gebraucht.

    Kann jemand mir einen Tipp geben?

    LG, Georg

  2. #2
    Contao-Fan Avatar von deerwood
    Registriert seit
    24.11.2009.
    Ort
    Hamburg
    Beiträge
    344

    Standard Re: Tabelle für "Select-Menü (DB)", Struktur? Und ein Patch/Verbesserungs-Vorschlag.

    Hallo alle,

    ich habe mal selbst ein wenig geforscht, mit diesem Ergebnis:

    Wenn man wiederverwendbare eigene "Select/Checkbox/Radio (DB)" braucht, wie in meiner ersten Nachricht angedeutet, dann muss man eine eigene Tabelle erstellen (z.B. per phpMyAdmin), die mindestens zwei Spalten hat. Eine Spalte muss zwingend "id" benannt werden, sonst bekommt man schon im Backend eine Fehler-Meldung. Die zweite Spalte darf beliebige benannt werden, ist aber erforderlich, damit man im Backend einen Anzeige-Wert (label) auswählen kann, weil bei der Auswahl des (label) die "id" Spalte ausgeblendet wird.

    Weitere Spalten dürfen vorhanden sein und können ebenfalls beliebig benannt sein. Sinnvoll ist jedenfalls eine weitere Spalte, die dann den (value) zum (label) liefert. Hier meine Test-Tabelle (my_menu_values):

    Code:
     id, sort, filter,                value,       label
     --- ----- ---------------------- ------------ -------------------------
     10,   10, 'zensur_de',           '1',         'Sehr gut'
     20,   20, 'zensur_de',           '2',         'Gut'
     30,   30, 'zensur_de',           '3',         'Befriedigend'
     40,   40, 'zensur_de',           '4',         'Ausreichend'
     50,   50, 'zensur_de',           '5',         'Ungenügend'
     60,   60, 'zensur_de',           '6',         'Mangelhaft'
     70,   10, 'anzahl_mitarbeiter',  '001-005',   '1-5 Mitarbeiter'
     80,   20, 'anzahl_mitarbeiter',  '006-010',   '6-10 Mitarbeiter'
     90,   30, 'anzahl_mitarbeiter',  '011-050',   '11-50 Mitarbeiter'
    100,   40, 'anzahl_mitarbeiter',  '051-100',   '51-100 Mitarbeiter'
    110,   50, 'anzahl_mitarbeiter',  '101-???',   'Mehr als 100 Mitarbeiter'
    120,   10, 'bike_category',       'race',      'Race-Bikes'
    130,   20, 'bike_category',       'mtb',       'MTB-Bikes'
    140,   30, 'bike_category',       'cross',     'Cross-Bikes'
    150,   40, 'bike_category',       'trekking',  'Trekking-Bikes'
    Sobald ich diese Tabelle als (label) auswähle [bzw. jede Tabelle, die nicht mit "fd_" beginnt] erscheint automatisch ein weiteres Feld für den Wert (value), das hatte ich in meiner ersten Nachricht noch nicht bemerkt, sorry, nicht genug getestet.

    Im Prinzip funktionieren jetzt alle ".... (DB)" Felder im EFG, ich wähle my_menu_values.label und my_menu_values.value und setze z.B. einen Filter "filter='zensur_de'".

    Allerdings bin ich mit der Sortierung nicht zufrieden, weil sie, hart codiert, nach den Anzeigewerten (label) durchgeführt wird. Bei den Zensuren z.B. führt das zu
    • Ausreichend == 4
    • Befriedigend == 3
    • Gut == 2
    • Mangelhaft == 5
    • Sehr gut == 1
    • Ungenügend == 6


    Klar, ich könnte den Beschriftungen (label) einen Sortier-Präfix geben, das ist aber vom Kunden nicht gewünscht.

    Das Optimum wäre, wenn EFG, ähnlich zum Feld "Filter", ein Feld "Sortierung" anbieten würde, in das man z.B. (in meinem Fall) "sort ASC" eintragen könnte (eben schlicht eine ORDER BY Clause, Fallback bei leerem Feld wäre, wie jetzt, die Label Spalte).

    Im Moment behelfe ich mir mit einem Patch in system/modules/efg/FormData.php (Version 1.12.1 stable, Build 32), nicht Update sicher, der im Fall von eigenen Tabellen nach der Spalt "id" sortiert, statt nach dem Anzeigewert:

    PHP-Code:
    --- FormData.php.ORG    2009-12-07 19:17:39.208750000 +0100
    +++ FormData.php    2009-12-08 20:00:21.275384700 +0100
    @@ -1477,18 +1477,23 @@
                         if ( 
    count($arrOptions) == )
                         {
                             
    $blnDoNotAddEmptyOption true;
                         }
     
                     } 
    // end handle calendar events
     
                     
    else // normal lookup table or formdata lookup table
                     
    {
    +                    if ((
    substr($sqlLookupTable03) != 'tl_') && ($sqlLookupIdField == 'id'))
    +                    {
    +                        
    // a normal user lookup table, order by id instead of lookup field label
    +                        $sqlLookupOrder $sqlLookupTable '.' .$sqlLookupIdField;
    +                    }
                         
    $sqlLookup "SELECT " $sqlLookupIdField . (strlen($sqlLookupField) ? ', ' '') . $sqlLookupField . ( strlen($sqlLookupValField) ? ', ' '') . $sqlLookupValField " FROM " $sqlLookupTable $sqlLookupWhere . (strlen($sqlLookupOrder)>" ORDER BY " $sqlLookupOrder "");
     
                         if (
    strlen($sqlLookupTable))
                         {
                             
    $objOptions $this->Database->prepare($sqlLookup)->execute();
                         }
                         if (
    $objOptions->numRows)
                         {
                             
    $arrOptions = array(); 
    Tom, was denkst Du dazu?

    LG, Georg

  3. #3
    Contao-Fan Avatar von Sarvo
    Registriert seit
    22.07.2009.
    Ort
    Aschaffenburg
    Beiträge
    334

    Standard

    Hi deerwood

    es gibt auch ein Modul für ein Umfragetool in TL. Vielleicht ist es für dich damit einfacher das zu gestalten was du möchtest.

    schau mal hier

  4. #4
    Contao-Fan Avatar von deerwood
    Registriert seit
    24.11.2009.
    Ort
    Hamburg
    Beiträge
    344

    Standard

    Danke Sarvo für den Tipp [survey_ce]. Was mir auf Anhieb sehr gut gefällt ist die excellente und ausführliche Dokumentation des Moduls. Das werde ich jedenfalls erproben.

    LG, Georg

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Problem mit Nav struktur und "logged in"
    Von ways2web im Forum Layout / Templates / Holy Grail
    Antworten: 1
    Letzter Beitrag: 09.02.2011, 23:50
  2. Antworten: 2
    Letzter Beitrag: 26.03.2010, 13:36
  3. Menü-Position im horizontalen Menü "merken"
    Von Labskaus im Forum Layout / Templates / Holy Grail
    Antworten: 6
    Letzter Beitrag: 20.01.2010, 14:03
  4. Antworten: 1
    Letzter Beitrag: 03.11.2009, 12:20

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •