使用codeigniter在同一视图页面中编辑和添加

时间:2018-07-20 11:31:28

标签: php codeigniter

我正在使用codeigniter创建注册表。

我已经成功完成了插入部分,现在我正尝试使用同一视图页面更新记录,该页面用于将值插入到datbase中。

但是,我遇到了错误:

  

遇到PHP错误严重性:注意

     

消息:未定义变量:fn

     

文件名:views / myform.php

     

行号:18

有人可以帮助我解决此问题吗?

我无法获取表格中的值。

控制器:

    public function updatedata($id)
    {
      //$id=$this->input->get('id');
      $result['data']=$this->Form_model->displayrecordsById($id);

          $this->form_validation->set_rules('fname', 'First name', 'required');
          $this->form_validation->set_rules('lname', 'Last name', 'required');
          $this->form_validation->set_rules('username', 'Username', 'required|min_length[5]|max_length[12]');
          $this->form_validation->set_rules('email', 'Email', 'required|valid_email');

          if ($this->form_validation->run() == FALSE)
          {
              $this->load->view('myform',$result);
          } 

          else 
          {
              $config['upload_path']   = './uploads/';
              $config['allowed_types'] = 'gif|jpg|png';
              $this->load->library('upload', $config);

                  $fn=$this->input->post('fname');
                  $ln=$this->input->post('lname');
                  $un=$this->input->post('username');
                  $em=$this->input->post('email');
                  if($this->upload->do_upload('filename'))
                       {
                           $fi= $this->upload->data('file_name');
                           $file = ("uploads/".$result['data'][0]->filename);
                            //delete the existing file if needed
                            if (file_exists($file)) {
                                unlink($file);
                            }
                       }
                  else
                       {
                          $fi= $result['data'][0]->filename;
                       }
                  $this->Form_model->updaterecords($fn,$ln,$un,$em,$fi,$id);
                  echo 'Successfully updated your record';
                  //exit();
              } 
    }

模型

    //get values 
        function displayrecordsById($id)
    {
            $query=$this->db->query("select * from form where ID='".$id."'");
            return $query->result();
    }

        //update record
        function updaterecords($fn,$ln,$un,$em,$fi,$id)
    {
            $query=$this->db->query("update form SET first_name='$fn',last_name='$ln',username='$un',email='$em',filename='$fi' where ID='".$id."'");
    }

视图

    <body>

        <?php echo form_open_multipart('form'); ?>
            <div class="container">

                <h2 style="color:#ff1a1a">Registration Form</h2><br>

                <h5 style="color:#ff1a1a">First Name</h5>
                <input type="text" class="form-control" name="fname" value="<?php echo set_value("first_name", $fn); ?>" size="50">
                <span class="text-danger"><?php echo form_error("fname");?></span>

                <h5 style="color:#ff1a1a">Last Name</h5>
                <input type="text" class="form-control" name="lname" value="<?php echo set_value("last_name", $ln); ?>" size="50">
                <span class="text-danger"><?php echo form_error("lname");?></span>

                <h5 style="color:#ff1a1a">Username</h5>
                <input type="text" class="form-control" name="username" value="<?php echo set_value("username", $un); ?>" size="50">
                <span class="text-danger"><?php echo form_error("username");?></span>

                <h5 style="color:#ff1a1a">Email Address</h5>
                <input type="text" class="form-control" name="email" value="<?php echo set_value("email", $em); ?>" size="50">
                <span class="text-danger"><?php echo form_error("email");?></span>

                <h5 style="color:#ff1a1a">Password</h5>
                <input type="password" class="form-control" name="password" value="" size="50">
                <span class="text-danger"><?php echo form_error("password");?></span>

                <h5 style="color:#ff1a1a">Password Confirm</h5>
                <input type="password" class="form-control" name="passconf" value="" size="50">
                <span class="text-danger"><?php echo form_error("passconf");?></span><br>

                <h5 style="color:#ff1a1a">Upload image</h5>
                <input type="file" name="filename" size="20">
                <img src="<?php echo base_url('uploads/' . $row->filename);?>" class="img-responsive" alt="image" width="100px" height="100px"><br><input type="file" name="filename" value="">
                <span class="text-danger"><?php echo form_error("filename");?></span><br>

                <div><input type="submit" value="Submit" class="btn btn-success"></div>

            </div>
        </form>

    </body>

2 个答案:

答案 0 :(得分:0)

您认为$ fn像这样:

`$data[0]->$fn`

这是因为result [' data ']是您传递给视图的内容。您的数据以数组形式来自模型,但是由于您通过ID查询,在这种情况下可以使用[0]。假设您的ID是唯一的。

如果每个ID有许多不同的记录,则必须使用foreach循环来获取所有记录。

您必须使用$ fn,$ ln等。

另外,您应该阅读以下内容:https://www.codeigniter.com/userguide3/database/queries.html

如果您要处理用户输入的数据,您的查询将不安全。

答案 1 :(得分:0)

如果只有一组数据要查看,即只有这样一组数据:

$result['data']=$this->Form_model->displayrecordsById($id);

您可以将数组更改为:

$data=$this->Form_model->displayrecordsById($id);

并像这样通过:

if ($this->form_validation->run() == FALSE)
{
 $this->load->view('myform',$data);
} 

然后,您将可以使用 $ fn 名称直接在视图中访问值。