使用joomla组件更新mysql中的timestamp字段

时间:2012-12-24 11:55:05

标签: joomla joomla2.5 joomla-extensions

我正在研究joomla组件(com_book)3.0版。我试图使用 form 将书籍插入数据库,在数据库中,我正在使用updated_at列,我正在使用{{1 }}。当我使用数据库插入和更新图书以及使用表单插入图书时,timestamp datatype列工作正常,然后它工作正常,但是当我尝试使用时间updated_at列不更新的表单更新图书时。

有谁可以解释我在这个过程中犯了什么错误?

4 个答案:

答案 0 :(得分:2)

另一种方法是为其创建自定义字段,

在book.xml表单文件中使用此字段代码

<fieldset
addfieldpath="/administrator/components/com_book/models/fields"
>
..
..
<field name="timestamp" type="lastmodified"
label="" description="" />
..
..
</fieldset>

并创建一个名为lastmodified.php的文件 在/ administrator / components / com_book / models / fields文件夹中

<?php

defined('JPATH_BASE') or die;

jimport('joomla.form.formfield');

/**
 * Supports an HTML form field
 */
class JFormFieldLastModified extends JFormField
{
    /**
     * The form field type.
     *
     * @var        string
     * @since    1.6
     */
    protected $type = 'lastmodified';

    /**
     * Method to get the field input lastmodified.
     *
     */
    protected function getInput()
    {
        // Initialize variables.
        $html = array();
        $old_time_updated = $this->value;
        if ($old_time_updated) {
            $jdate = new JDate($old_time_updated);
            $pretty_date = $jdate->format(JText::_('DATE_FORMAT_LC2'));
        }
        $time_updated = date("Y-m-d H:i:s");
        $html = '<input type="hidden" name="'.$this->name.'" value="'.$time_updated.'" />';

        return $html;
    }
}

?>

答案 1 :(得分:1)

将此函数粘贴到表格的表文件中,例如 的Joomla根/管理员/ com_book /表/ book.php中 如果已经有商店功能,那么编辑它并单独添加这些行man,这将完成工作,

    public function store($updateNulls = false)
{
    $date   = JFactory::getDate();
               // this is your primary key maybe id or book_id
    if ($this->book_id) {
        // Assigning the last modified date to your timestamp field
        $this->timestamp    = $date->toSql();
    }

    // Attempt to store the user data. - just leave the rest to parent function
    return parent::store($updateNulls);
}

答案 2 :(得分:0)

在数据绑定后的保存功能中,您可以设置updated_at

// Bind the data to the table
if (!$table->bind($post))
{
//display error
}
//after binding write this line-
$table->updated_at  = date('Y-m-d H:i:s');

如果这不起作用,请告诉我。

答案 3 :(得分:0)

Joomla Component Creator可以构建Joomla 3.0组件,并且可以避免弄乱像这样简单的东西。

看看:http://www.notwebdesign.com/joomla-component-creator/

一张桌子免费。如果没有别的,你可以从那个或高峰复制粘贴代码,看看如何自己开发。