Powermail: Selectorbox mit Werten aus Datenbank

  • einpraegsam.net einpraegs...
    MacGyver
    0 x
    9340 Beiträge
    80 Hilfreiche Beiträge
    15. 05. 2008, 15:49

    Nach einer Anfrage habe ich mich entschlossen, das hier zu posten, falls jemand mal ein ähnliches Problem hat.

    [b]Aufgabenstellung:[/b]
    Selecterbox (Dropdown) in Powermail mit beliebigen Werten aus Datenbank

    [b]Lösung:[/b]
    1. Neues Powermail Feld anlegen (typoscript) mit lib.object:
    [img]http://www.design-and-style.de/temp/typo3/pm_select1.gif[/img]

    2. Eine Selectabfrage in TS (Hole name, uid von tt_address der Seite 5):
    [img]http://www.design-and-style.de/temp/typo3/pm_select2.gif[/img]

    Hier nochmal zum Kopieren:
    [TS]lib.object = COA_INT
    lib.object {
    10 = TEXT
    10.value = <label for="uid33">Select:</label>

    20 = CONTENT
    20.wrap = <select id="uid33" name="tx_powermail_pi1[uid33]" size="1">|</select>
    20 {
    table = tt_address
    select {
    pidInList = 5
    orderBy = name
    }
    renderObj = COA
    renderObj {
    10 = COA
    10 {
    10 = TEXT
    10 {
    field = uid
    wrap = <option value="|">
    }
    20 = TEXT
    20 {
    field = name
    wrap = |</option>
    }
    }
    }
    }
    }
    [/TS]

    [b]Ergebnis:[/b]
    [img]http://www.design-and-style.de/temp/typo3/pm_select3.gif[/img]

    Dynamische Selecterbox, mit dem HTML Code:
    [HTML]<label for="uid33">Select:</label>
    <select id="uid33" name="tx_powermail_pi1[uid33]" size="1">
    <option value="23">Name1</option>
    <option value="24">Name2</option>
    </select>
    [/HTML]

    in2code.de - Wir leben TYPO3
    - Möchtest du TYPO3 komplett verstehen? Eigene Erweiterungen erstellen? Bei uns gibt es auch Schulungen https://www.in2code.de/produkte/typo3-schulungen/
    - Die Arbeit mit TYPO3 macht dir Spaß? Du stehst auf Berge? Komm zu uns! https://www.in2code.de/agentur/karriere/


  • tga tga
    T3PO
    0 x
    8 Beiträge
    0 Hilfreiche Beiträge
    26. 06. 2008, 19:06

    Hi,

    nachdem genau diese Anfrage nun bei mir gelandet ist, weil's nicht geklappt hat ;-) :

    mit COA_INT scheint's nicht zu funktionieren (keine Ausgabe im Frontend), mit COA geht's aber...

    Grüße, Tina

  • just2b just2b
    TYPO3-Yoda
    0 x
    18741 Beiträge
    2 Hilfreiche Beiträge
    26. 06. 2008, 19:24

    [quote="tga"]
    mit COA_INT scheint's nicht zu funktionieren (keine Ausgabe im Frontend), mit COA geht's aber...[/quote]
    dann scheinst du nicht die neueste TYPO3 Version zu haben ;)

  • donillo donillo
    R2-D2
    0 x
    78 Beiträge
    0 Hilfreiche Beiträge
    01. 11. 2008, 18:43

    Moinz,

    ich brauche das eigentlich auch. Nur muss ich die Daten aus einer Tabelle holen, die nicht in TYPO3 angelegt/gepflegt wird.
    Die heisst einfach adressen und so habe ich die eingebunden:
    [TS]lib.object = COA_INT
    lib.object {
    10 = TEXT
    10.value = <label for="uid33">Markt:</label>

    20 = CONTENT
    20.wrap = <select id="uid33" name="tx_powermail_pi1[uid33]" size="1">|</select>
    20 {
    table = adressen
    select {
    #pidInList = 5
    orderBy = Ort
    }
    renderObj = COA
    renderObj {
    10 = COA
    10 {
    10 = TEXT
    10 {
    field = uid
    wrap = <option value="|">
    }
    20 = TEXT
    20 {
    field = Ort
    wrap = |</option>
    }
    }
    }
    }
    }
    [/TS]

    Nur passiert da nix. Müsste doch eigentlich klappen oder?[/code]

  • einpraegsam.net einpraegs...
    MacGyver
    0 x
    9340 Beiträge
    80 Hilfreiche Beiträge
    01. 11. 2008, 20:59

    Damit dein Select funktioniert, muss die Tabelle T3 konform sein (mit tx_ anfangen...)

    in2code.de - Wir leben TYPO3
    - Möchtest du TYPO3 komplett verstehen? Eigene Erweiterungen erstellen? Bei uns gibt es auch Schulungen https://www.in2code.de/produkte/typo3-schulungen/
    - Die Arbeit mit TYPO3 macht dir Spaß? Du stehst auf Berge? Komm zu uns! https://www.in2code.de/agentur/karriere/

  • donillo donillo
    R2-D2
    0 x
    78 Beiträge
    0 Hilfreiche Beiträge
    01. 11. 2008, 22:01

    Hi,

    danke, so was habe ich mir schon fast gedacht.
    Nur bekomme ich nun diesen Fehler:

    NO entry in the $TCA-array for the table "tx_markt_adressen". This means that the function enableFields() is called with an invalid table name as argument.

    Wie genau sieht denn eine T3 konforme Tabelle aus? Ich habe schon uid, pid, hidden, deleted angelegt. Oder muss ich da in TYPO3 noch was verändern?

  • donillo donillo
    R2-D2
    0 x
    78 Beiträge
    0 Hilfreiche Beiträge
    01. 11. 2008, 22:55

    So nun habe ich die Tabelle per Kickstarter angelegt.
    Das klappt nun.

  • maxhb maxhb
    Flash Gordon
    0 x
    2148 Beiträge
    0 Hilfreiche Beiträge
    17. 11. 2008, 21:52

    Hallo!
    Das Beispiel für eine Drop-down-Liste per TS funktioniert so weit sehr gut - danke dafür!

    Ein Problem tauch bei mir allerdings auf, wenn ich versuche ein Feld aus bestimmten DB-Einträgen zu erstellen und dieses dann als Komma separierte Liste in einer anderen Tabelle zu speichern.

    Ich habe z.B. eine Tabelle, die verschiedene Anwendungen beinhaltet. Aus diesen soll der User die zutreffenden Auswählen und dann soll das ganze in einem DB-Feld der tt_news gespeichert werden.

    Mein Ansatz:
    [TS]lib.applications = COA_INT
    lib.applications {
    10 = TEXT
    10.value = <label for="uid901">Applications:</label>
    20 = CONTENT

    # Hier wird die Abbildung auf ein PHP-Array vorbereitet, um mehrere werte zu übertragen
    20.wrap = <select id="uid901" name="tx_powermail_pi1[uid901][]" size="7" multiple="multiple">|</select>
    20 {
    table = tx_my_applications
    select {
    pidInList = 109
    orderBy = title
    }
    renderObj = COA
    renderObj {
    10 = COA
    10 {
    10 = TEXT
    10 {
    field = uid
    wrap = <option value="|">
    }
    20 = TEXT
    20 {
    field = title
    wrap = |</option>
    }
    }
    }
    }
    }[/TS]

    Der Code erzeugt eine korrekte Auswahlliste. Nach dem ausfüllen des Formulars weden mir die Werte dann zur Kontrolle von Powermail so angezeigt:

    3
    7
    9

    Problem 1: Der Name des Feldes fehtlt
    Problem 2: Statt der bezeichner stehen dort nur die IDs

    Daraus ergibt sich dann auch
    Problem 3: Von den Werten wird keiner in der DB gespeichert, das Feld bleibt also leer.

    Das Speichern erfolgt so:
    [ts]plugin.tx_powermail_pi1 {
    dbEntry {
    tt_news {
    _enable = TEXT
    _enable.value = 1

    pid = TEXT
    pid.value = 499

    tstamp = TEXT
    tstamp.data = date:U

    # ...
    tx_my_applications = TEXT
    tx_my_applications.data = TSFE:fe_user|sesData|powermail_922|uid901
    # ...
    }[/ts]

    Gibt es eine Lösung, um die 3 Fallstricke zu überwinden?

    Gruß
    maxhb

  • 0 x
    16 Beiträge
    0 Hilfreiche Beiträge
    21. 11. 2008, 22:33

    I solved the problem with the field name by replacing the uid with the fieldname itself. See the example:
    [TS]lib.object = COA_INT
    lib.object {
    10 = TEXT
    10.value = <label for="uid22">Evenement:</label>
    20 = CONTENT
    20.wrap = <select id="uid22" name="tx_powermail_pi1[uid22]" size="1">|</select>
    20 {
    table = tx_kbeventboard_category
    select {
    pidInList = 375
    orderBy = category
    }
    renderObj = COA
    renderObj {
    10 = COA
    10 {
    10 = TEXT
    10 {
    field = [b]category[/b] wrap = <option value="|">
    }
    20 = TEXT
    20 {
    field = category
    wrap = |</option>
    }
    }
    }
    }
    }

    In this way the uid is not reported back, but the fieldname itself.
    Hope this helps,
    Regards,
    tanelkoth[/TS]

  • kyros kyros
    TYPO3-Anwärter
    0 x
    4 Beiträge
    0 Hilfreiche Beiträge
    05. 02. 2009, 10:07

    Hallo zusammen

    Ich hab eine Frage

    Ich hab versucht mit untenstehendem code eine DB abzufragen. Diese heist tx_test und das die spalte Name. Nun leider kommt nichts.

    Die pidinlist wo finde ich die ?

    Wäre cool wenn mir jemand hilft