【问题标题】:codeigniter populate form from databasecodeigniter 从数据库中填充表单
【发布时间】:2009-05-26 13:49:42
【问题描述】:

在控制器中,我有...

function update($id = null)
{
    $this->load->database();

    // more code

    $data = array();
    $data = $this->db->get_where(
            'users',
            array(
            'id' => $id
            )
        );
    $data = $data->result_array();
    $data = $data[0];

    // more code

    $this->load->view('update', $data);
}

在视图中,我有...

<h5>Username</h5>
<input type="text" name="username" value="<?php echo set_value('username'); ?>" size="50" />

<h5>Email</h5>
<input type="text" name="email" value="<?php echo set_value('email'); ?>" size="50" />

<h5>Email Confirmation</h5>
<input type="text" name="emailconf" value="<?php echo set_value('emailconf'); ?>" size="50" />

<h5>Password</h5>
<input type="text" name="password" value="<?php echo set_value('password'); ?>" size="50" />

<h5>Password Confirmation</h5>
<input type="text" name="passconf" value="<?php echo set_value('passconf'); ?>" size="50" />

set_value() 没有读取 $data

搜索 value=""

http://codeigniter.com/forums/viewthread/103837/

发帖者只使用了"" in value=""之间的set_value()函数。

我想知道如何做同样的事情,但我无法让它工作。帮忙?

【问题讨论】:

  • 为什么要在控制器而不是模型中提取数据?
  • 因为他(我们)可以……并且想要。 ;)

标签: forms codeigniter


【解决方案1】:

set_value 需要 2 个参数。字段名称和值。

你需要:

value="<?php echo set_value('username', $username); ?>"

假设您正在传递 $data['username'] 等。

【讨论】:

  • 这是正确答案。它负责从数据库预填充表单 + 填充表单验证用户输入的情况
  • 它是正确的,但是如果您像这里建议的 codeigniter.com/forums/viewthread/159535/#775628 那样替换您的 System/helpers/set_value 代码以避免在规则不存在时再次重新填充表单时出现问题,那么还有一件事可以为您节省大量时间。
【解决方案2】:

我认为您没有将值正确传递给视图。

在控制器中放置:

$data = $this->db->get_where(
        'users',
        array(
        'id' => $id
        )
    );
$data = $data->result_array();

$data['result'] = $data[0];

然后在视图内部:

<h5>Password Confirmation</h5> <input type="text" name="passconf" value="<?php echo $result['passconf']; ?>" size="50" />

【讨论】:

    【解决方案3】:

    试试这个:

    控制器:

    $data = array();
    $data = $this->db->get_where(
            'users',
            array(
            'id' => $id
            )
        );
    $data = $data->result_array();
    $data['view_username'] = $data['username'];
    

    我不使用 $date[0],而是使用列名,但这是您的决定

    查看:

    <h5>Username</h5> <input type="text" name="username" value="<?=$view_username?>" size="50"/>
    

    &lt;?= =&gt; 是 PHP 短标签,请阅读 codeigniter 用户指南

    问候,

    西尔维奥

    【讨论】:

      【解决方案4】:

      set_value() 设计用于 CI 表单验证。

      第一次加载表单时,set_value() 可以使用其第二个参数为该字段填充默认值。提交表单后,您可以再次显示该表单,并且该字段将使用提交的值填充,前提是已对其进行了验证。

      另请参阅 http://codeigniter.com/forums/viewthread/96617/ - set_value() 存在一些文档未阐明的问题。

      目前适用于 CI 1.7.3。

      【讨论】:

        【解决方案5】:

        尝试为控制器中的$_POST 变量分配默认值,例如$_POST['email'] = 'email';

        【讨论】:

        • 您不能设置任何 $_POST 值。
        猜你喜欢
        • 2011-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-12
        相关资源
        最近更新 更多