在codeigniter中加载视图两次

时间:2011-06-16 10:47:03

标签: php codeigniter

您好我刚开始CodeIgniter。我在加载视图时遇到问题。

我的观点是我正在创建一个示例添加表单。提交后,它将转到控制器并在数据库中插入条目。我想如果数据库操作成功,它再次来到同一视图再次有一些值。在这些值的基础上,我将显示一些特定的行,通知用户有关插入操作的信息。我在控制器中的功能看起来像

public function add_user()
{
    $this->load->view('add_user');
    $post=$this->input->post();
    if(isset($post['name']))
    {
        $data=array(
        'name'=>$post['name'],
        'designation'=>$post['designation']
        );
        if($this->db->insert('user',$data))
        $result['update']=true;
        else
        $result['update']=false;
        $this->load->view('add_user',$result);
    }

}

我的观点看起来像

    <h1 align="center">Add User</h1>
    <table border="0" cellpadding="2" cellspacing="2" align="center">
        <?php
        if(isset($update))
        {
            if($update)
            {
                ?>
                <tr bgcolor="#00FF00">
                    <td>Record Added Successfully</td>
                </tr>
            <?php
            }
            else
            {
                ?>
                <tr bgcolor="#FF0000">
                    <td>Insertion Operation Failed</td>
                </tr>
            <?php
            }   
        }
        ?>
        <?php echo(form_open('first/add_user'));?>
            <tr>
                <td>Name</td>
                <td><input type="text" name="name" /></td>
            </tr>
            <tr>
                <td>Designation</td>
                <td>
                    <select name="designation">
                        <option value="Junior PHP Developer">Junior PHP Developer</option>
                        <option value="Senior PHP Developer">Senior PHP Developer</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td colspan="2" align="center">
                    <input type="submit" name="submit" value="Add User" />
                </td>
            </tr>   
        </form>
    </table>

现在我想要的是,如果插入操作成功,我发送真值来查看,如果不是,我发送假值。在此值的基础上,我显示了一些行。根据我理解的逻辑,我正在加载视图两次。因为它第一次加载表单而第二次加载视图时带有一些true或false值。但是在重新加载之后会发生什么,有两种形式。我知道这个问题是由于我的观点加倍加载。我想询问在数据库操作之后是否还有另一种方法可以查看值?

2 个答案:

答案 0 :(得分:2)

只需加载您的观点一次:

public function add_user()
{
  $post=$this->input->post();
  $result = array();
  if(isset($post['name']))
  {
      $data=array(
       'name'=>$post['name'],
       'designation'=>$post['designation']
      );
      if($this->db->insert('user',$data))
      $result['update']=true;
      else
      $result['update']=false;
  }
  $this->load->view('add_user',$result);
}

顺便说一句,你的代码有点乱,请继续处理

答案 1 :(得分:0)

// try something like this
//you may need to use form validation helper 

//load add user form
public function add_user(){
//any data required for the form
$data['anything'] = '';
$this->load->view('add_user',$data);
}
//to process adding user action, form action will point to this
function adding_user(){
 if($this->input->post('name')){
   $data=array(
   'name'=>$post['name'],
   'designation'=>$post['designation'];
    if($this->db->insert('user',$data)){
     echo 'user added successfully!';
    }else{
     redirect(user/add_user);
    }
  );

 }
}