你好,我刚开始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值的视图。但是,当它重新加载后,会出现两种形式。我知道这个问题是由于我的观点受到双重影响。我想问一下,在数据库操作之后,是否有另一种发送值的方式来查看?
只需加载一次视图:
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);
}
顺便说一句,您的代码有点乱,请使用
// 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);
}
);
}
}