Codeigniter set_value()并填充表单值

use*_*438 8 codeigniter retain

我的表单字段看起来像这样

    echo form_label('Quantity', 'quantity');
    echo form_input('quantity', $quantityx);
Run Code Online (Sandbox Code Playgroud)

我修改它以保留表单值

    echo form_label('Quantity', 'quantity');
    echo form_input('quantity', $this->input->post('quantity'));
Run Code Online (Sandbox Code Playgroud)

我在后面的代码中设置了$ quantityx,以便从数据库中填充一个值,以便用户可以编辑一行.

如何保留验证值,并同时从数据库中填充变量?

我试过这个井

    echo form_label('Quantity', 'quantity');
    echo form_input('quantity', set_value($quantityx));
Run Code Online (Sandbox Code Playgroud)

谢谢你的任何建议

tom*_*ans 8

您可以像这样设置它们,如果set_value('columnanme')返回false则表单$_POST没有发生,那么它将从数据库示例中获取数据 $profile->firstname

$firstname = set_value('firstname') == false ? $profile->firstname : set_value('firstname');
$lastname = set_value('lastname') == false ? $profile->lastname : set_value('lastname');
Run Code Online (Sandbox Code Playgroud)

使用它像:

echo form_label('Firstname', 'fname');
echo form_input('firstname', $firstname);
echo form_label('Firstname', 'lnamey');
echo form_input('firstname', $lastname);
Run Code Online (Sandbox Code Playgroud)

在你的情况下你可以做:

$quantity = set_value('Quantity') == false ? $quantityx : set_value('Quantity');
Run Code Online (Sandbox Code Playgroud)

在你的表格上:

echo form_label('Quantity', 'quantity');
    echo form_input('quantity', $quantity);
Run Code Online (Sandbox Code Playgroud)

假设$quantityx保存数据库中的数据

编辑
=============================================

只需使用set_values()第二个参数作为默认值.即set_value('name_of_input_field',$data_from_databse_as_default); 如果这不起作用,那么使用我的第一个答案.

  • 相反,我宁愿只使用set_value中的第二个参数来代替执行不必要的if else检查.例如.`echo form_input('quantity',set_value('quantity',$ profile-> firstname))`.第二个参数是后备值. (3认同)