[TYPO3-project-formidable] how to combine _two_ form-fields to be inserted/updated as a _single_ db-field
Michael Wilde
michael.wilde at yahoo.de
Mon Jan 29 14:47:02 CET 2007
Hi there,
1st Question:
=============
within my application I would like to read the values of one date _and_
one time form-field and store it together as a _single_ timestamp in a
database. And vice versa it should be possible to read a _single_
timestamp and display it as two seperate form fields again.
-----------------------------------------------------------------------
The table looks as follows:
uid | pid | ... | my_timestamp
----+-----+ ... +-------------
1 | 2 | ... | 1169485200
within my form.xml file I've got two form-fields "my_date" and
"my_time". "my_date" is a DATE renderlet and "my_time" is a TEXT
renderlet. Both form-fields should be combined to a single timestamp to
be inserted into the database (--> "my_timestamp").
To do so I've used beforeinsertion and beforerender processes in the
form.xml datahandler:
<process>
<beforeinsertion>
<userobj>
<php><![CDATA[
$oThis = t3lib_div::makeInstance("tx_myapp_pi1");
$aData = array_pop(func_get_args());
return $oThis->beforeInsertationOfBirthday($aData);
]]></php>
</userobj>
</beforeinsertion>
<beforerender>
<userobj>
<php><![CDATA[
$oThis = t3lib_div::makeInstance("tx_myapp_pi1");
$aData = array_pop(func_get_args());
return $oThis->beforeRenderOfBirthday($aData);
]]></php>
</userobj>
</beforerender>
</process>
The content of the two user-functions:
function beforeInsertationOfBirthday($aData) {
$aData['my_timestamp'] =
$this->convertToTimestamp($aData['my_date'],$aData['my_time']);
return $aData;
}
function beforeRenderOfBirthday($aData) {
$aData['my_date'] = $this->convertToDate($aData['my_timestamp']);
$aData['my_time'] = $this->convertToTime($aData['my_timestamp']);
return $aData;
}
The problem here is that a valid timestamp is correctly read out of the
database and it is correctly rendered, but it is not possible to insert
a timestamp into the database. The value for "my_date" and "my_time" in
the variable $aData of beforeInsertationOfBirthday() seem to be not
available.
Everything works fine as long as the name of the form-fields are the
same as the names of the table-columns in the database. But I can't
figure out how to use fieldnames that do not exist in the database.
This means: everything works fine for a field with the name "my_date2"
and a table-column with the name "my_date2". Here the data is inserted
correctly. But it is not possible for me to change the field name to
e.g. "my_date3". Further it is not possible to use a second field
"my_time2", combine it with "my_date2" and insert the resulting
timestamp as "my_timestamp" into the database.
Hope anyone that understood the problem can help me further on this.
2st Question:
=============
Is there any possibility to store dates before 1970 as timestamp into a
database using Formidable?
TIA,
Michael.
More information about the TYPO3-project-formidable
mailing list