Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更新我想要的表单输入记录_Php_Codeigniter_Query Builder - Fatal编程技术网

Php 更新我想要的表单输入记录

Php 更新我想要的表单输入记录,php,codeigniter,query-builder,Php,Codeigniter,Query Builder,我正在尝试制作一个类似于页面的个人资料。我希望它将空字段显示为文本字段,为此,我在视图中使用以下代码 $vNaam = $row->vNaam; if(empty($vNaam) && $this->uri->segment(3) == $this->session->userdata('username')){ echo "<p>Voornaam: "; echo form

我正在尝试制作一个类似于页面的个人资料。我希望它将空字段显示为文本字段,为此,我在视图中使用以下代码

$vNaam = $row->vNaam;
        if(empty($vNaam) && $this->uri->segment(3) == $this->session->userdata('username')){
            echo "<p>Voornaam: ";
            echo form_input('vNaam', $this->input->post('vNaam'));
            echo form_error('vNaam');
            echo "</P>";
        } else {
            echo "<li>";
            echo "<p>Voornaam: ";
            echo $vNaam;
            echo "</P>";
            echo "</li>";
        }
最后是我的模型

function update_info($data){

    $this->db->where('id', $this->session->userdata('user_id'));
    $this->db->update('users',$data);

}
有了这一点,我试图使它只更新尚未填写的记录

现在,当我在我的网站上创建一个新帐户并填写表格并进行更新时,它可以正常工作,但只能工作一次。假设我将其中一个字段留空,当我再次尝试更新该字段时,什么也没有发生。它不显示文本字段,只显示一个空标记。但问题是,我希望人们能够随心所欲地添加数据。
任何帮助都将不胜感激

我将通过一个例子向您解释这一点。但为此,必须保持输入名称和数据库字段名称相同

1表格用户示例

2.你的看法

4你的模型

说明:


当您在地址中用一个空白值提交上面的表单时,带有SLALN标志的ARAYAL过滤器将从POST数组中删除空白值。此外,由于输入名称与表字段名称相同,因此已准备好将在更新查询中使用的数组。将数组传递给模型,就这样。希望它能有所帮助。

我解决了这个具体问题,在我的一个字段上删除了愚蠢地放置的“必需”验证规则,这样当我尝试更新时,更新没有包含必需的字段,它就失败了。因为我也愚蠢到没有在我的视图上设置任何验证错误输出,所以我没有注意到。很抱歉。

请描述您期望的结果和当前的结果。你有什么问题?在编辑你的帖子时描述一下,这样别人在读到你的问题时就能看到,而不是写在评论中,因为评论比较难读,也不太可能被看到。如果我没有弄错的话,那正是我正在做的。或者我在这里遗漏了什么?如果输入字段上的标签是空的,那么if…else就有问题了。但我觉得很好。如果字段为空,请检查条件是否为真,并且不知道其他条件是否为真,因为您正在使用&&这两个条件都必须为真。尝试打印条件和调试。
function update_info($data){

    $this->db->where('id', $this->session->userdata('user_id'));
    $this->db->update('users',$data);

}
id  |  name  |   email  |   mobile   |   address
<form action="/users/update" method="POST">
    <input type = "text" name = "name" />
    <input type = "email" name = "email" />
    <input type = "text" name = "mobile" />
    <input type = "text" name = "address" />
</form>
class Users extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
    }

    public function update()
    {
        $data = array_filter($this->input->post(), 'strlen');  
        // Remove all empty values from array

       $this->user_model->update_details($data);
    }
}
class User_model extends CI_Model
{
    public $db;
    public function __construct()
    {
        parent::__construct();
        $this->db = $this->load->database('default',TRUE);
    }

    public function update_details($data)
    {
        /* 
        Now $data is a ready array to be update directly in your table
        which has all non-null values and also ready with columns name with it
        */

        $this->db->where('id', $this->session->userdata('user_id'));
        $this->db->update('users', $data);
    }
}