Zum Inhalt springen

2 formularfelder zusammenfassen

Erstellt am 6. Februar 2008 · 13 Antworten · letzte Antwort am 7. Februar 2008

Tags: Datenbank, Frage

Juergen_190 ·

Hallo,

Ich speichere mit Mailformplus den Vor und Nachnamen einer Person in einer Datenbank einer weiteren Extension.

Diese nutzt idiotischérweise zur Listenausgabe ein Feld "Namen", das es zusaätzlich zu vor und nachnamen in der datenbank gibt.

In meinem Formular frage ich vor und nachnamen ab.

Kann ich irgendwie mit dbinsert die beiden felder vor und nachname zusammengefasst zu einem in die DB unter namen abspeichern??

Juergen

Juergen_190 ·

Ja, Georg, da war ich schon.
Ich vermute ja auch mal mit specialmapping... aber wie?

So siehts bei mir aus:

plugin.tx_thmailformplus_pi1.saveDB = 1
plugin.tx_thmailformplus_pi1.saveDB {
dbTable = tx_wecstaffdirectory_info

# change “192” to an existing page-ID in your TYPO3 project
dbinsert=pid:22,hidden:1,cruser_id:1

# if dbkey is not set: "uid" is taken
dbkey =uid

# [inputFieldName]:[DBName]
mapping=name:last_name,vorname:first_name,text:biography,email:email,photo:photo_main

# crop string (e.g. form a textarea) to int number of chars
#cropTextArea.[db-fieldname] = [int]

# enable special mappings
specialMapping = 1
specialMapping {

# store submission datetime in format YYYY-MM-DD HH:SS
# sub_datetime = [fieldname]

# set timestamp (submission time) to field crdate
crdate = 1

# store submission IP to field
# logIP = [fieldname]

# store uid to a second field (reference).
# Enables storage in CSV as well and
# activates marker ###DB_UID### in E-Mails
# storeuid = [fieldname]
}
}

ich muss aber eben noch ein feld namens "namen", bestehend aus vor und nachname mit abspeichern. Und im Formular will ich ja nicht namen, vorname und nachname abfragen.

Juergen, der schon tfm geguckt hat:-)

just2b ·

ich dachte eher an

How to write two submitted values in one DB-field:

Simply write the two mappings separated by “,”.

example:

surname:name,forename:name

just2b ·

😉

space weiß ich leider nicht, aber ich hätt 2 möglichkeiten für dich:
- ein 3. feld, das dass trennzeichen beinhaltet, als hidden input field
- per js vorm submit das trennzeichen ergänzen

georg

Juergen_190 ·

Die Lösung bleib ich dann natürlich nicht schuldig:

Im Formular:

<input type="hidden" name="trenner" value=" ">

Im Template:

# [inputFieldName]:[DBName]
mapping=name:last_name,vorname:first_name,vorname:name,trenner:name,name:name,text:biography,email:email,photo:photo_main

Gruss

Unbekannter Benutzer ·

Am Einfachsten ist es wohl mit einem Preprocessing zu arbeiten:

saveDB.fields.[fieldname].preProcessing

Diese Option kann ein TS-Objekt sein (USER,TEXT,...). Somit kannst du z.B. für das Feld "vorname" ein Preprocessing in einem TEXT-Objekt einbauen. In dem Objekt fügst du die GPVars "vorname" und "nachname" zusammen.
Optional gehts auch mit einer userFunc.

lg, reinhard

Unbekannter Benutzer ·

Zum Beispiel:

plugin.tx_thmailformplus_pi1.saveDB.vorname.preprocessing = USER
plugin.tx_thmailformplus_pi1.saveDB.vorname.preprocessing.userFunc = user_myclass->user_myfunc
class user_myclass {
  function user_myfunc(...) {
    $vorname = t3lib_div::_GP('vorname');
    $nachname = t3lib_div::_GP('nachname');
    return $vorname." ".$nachname;
  }
}

Bevor der Wert vom Formularfeld Vorname in die DB gespeichert wird, wird das preProcessing ausgeführt, also in diesem Fall die userFunc aufgerufen. Der Returnwert der userFunc wird als der neue Wert von Vorname genommen und in die DB gespeichert.

Wenn du keine userFunc verwenden willst, kannst du auch z.B. ein Textobjekt verwenden und darin mit TS die beiden Werte verknüpfen.

lg, reinhard

Juergen_190 ·

Hi Reinhard,

Die Version mit TS ohne php interessiert mich.
Da ich mich mit php lange nicht beschäftigt habe, und auch den quelltext wegen evtl. Updates nicht ändern möchte.

Gruß, Juergen

Unbekannter Benutzer ·

Eine Lösung wie diese könnte für deine Wünsche angemessen sein:

plugin.tx_thmailformplus_pi1.saveDB.vorname.preProcessing = TEXT
plugin.tx_thmailformplus_pi1.saveDB.vorname.preProcessing.value = {GPvar:vorname}&nbsp;{GPvar:nachname}

lg, reinhard