我正在开发一个小项目,用户在其中创建帐户,然后他们可以添加项目,编辑项目,查看项目。当用户添加项目时,他/她的id(在会话中可用)也会添加到项目表中。我想使用动态codeigniter表单添加项目。当加载 create_project_view 并且用户登录时,页面上会显示表单,但是当我在源代码上单击其源代码时,表单不可见,但是如果用户注销了表单在屏幕上和源代码上都可见。我不知道为什么表单在源代码中不可见。这可能是我无法添加数据的可能原因,因为页面上没有显示任何形式。这也可能是因为当我点击提交按钮并且我已登录时,它会将我退出。
我使用的是PHP版本:7.2.1,但随后降级为PHP版本:5.6.3仍然存在这些问题。在这个问题上你能帮我吗?
下面我在用户登录并注销时共享我的代码和屏幕截图 screenshot when user is logged in:
这是一个按钮代码,它将我带到(创建)控制器
<h1>Projects</h1>
<table class="table table-hover">
<thead class="bg-warning">
<a class="btn btn-primary pull-right" href="<?php echo base_url();?>projects/create">Create Project</a><br>
<tr>
<th>Project Name</th>
<th>Project Created</th>
</tr>
</thead>
<tbody>
<?php foreach($projects as $project): ?>
<tr>
<?php echo"<td><a href='".base_url()."projects/display/".$project->id."'>".$project->project_name."</a></td>" ?>
<?php echo"<td>".$project->created_date."</td>" ?>
</tr>
<?php endforeach; ?>
</tbody>
</table>
2-(Controller)projects.php: 其中包含'create'项目功能
class Projects extends CI_Controller
{
public function create()
{
$this->form_validation->set_rules('project_name','Project
Name','trim|required');
$this->form_validation->set_rules('project_body','Project
Body','trim|required');
if($this->form_validation->run()==false)
{
$data['main_view']="projects/create_project_view";
$this->load->view('Layouts/main',$data);
}
else
{
$user_data= array(
'user_project_id' =>$this->session->userdata('user_id'),
'project_name' =>$this->input->post('project_name'),
'project_body' =>$this->input->post('project_body'));
if($this->project_model->create_project($user_data))
{redirect("projects/index");}
}
}
}
?>
3-(模态)porject_model.php
<?php
class project_model extends CI_Model
{
public function create_project($data)
{
$insert_query=$this->db->insert('projects', $data);
return $insert_query;
}
}
?>
4。 (查看):Create_project_view.php: 通过这个表单,我将数据发送到“项目”控制器
<h1>Registration Form</h1>
<?php $attributes=array('Id'=>'reg_form','class'=>'form-vertical');?>
<?php echo form_open('projects/create',$attributes);?>
<div class="form-group">
<?php echo form_label('Project title:'); ?>
<?php $data=array(
'Name'=>'project_name',
'class'=>'form-control',
'placeholder'=>'Enter Your First Name:');?>
<?php echo form_input($data); ?>
</div>
<div class="form-group">
<?php echo form_label('project body:'); ?>
<?php $data=array(
'Name' =>'project_body',
'class' =>'form-control',
'placeholder' =>'Enter Your User Name:');?>
<?php echo form_textarea($data); ?>
</div>
<div class="form-group">
<?php $data=array(
'Name'=>'reg_button',
'class'=>'btn btn-primary',
'value'=>'Register');?>
<?php echo form_submit($data); ?>
</div>
<?php echo form_close(); ?>
答案 0 :(得分:1)
您可能在同一页面中有两个相互冲突的表单。如果您在表单中有注销功能(这不是必需的,您可以通过向按钮提供onClick事件使其成为直接链接),您的&#34;提交&#34;创建项目的操作可能会触发该操作,而不是自己的操作。这看起来就是你要退出的原因。
否则,我在表单中看不到其他问题。随着您开发更多应用程序,您将采用更好的结构,这样,您就不会陷入这样的陷阱。
答案 1 :(得分:0)
Jamshid Hashimi的回答是正确的。我只是在这里分享代码,所以其他人也可能受益,并且在我进入时不会遇到类似的陷阱。实际上问题是在其他视图中称为(login_view)我没有发布它。我在一个页面中有两个表单。我打开了第一页,然后没有关闭第一个表单,我打开了第二个表单。在10号线,我评论了我忘了的那条线。
<!--When user is logged in -->
<?php if($this->session->userdata('loged_in')): ?>
<h2>Logout</h2>
<?php echo"You are loged in as " . $this->session->userdata('user_name');?>
<?php echo form_open('users/logout');?>
<?php $data=array(
'name'=>'lgout',
'class'=>'btn btn-primary',
'value'=>'Log out');?>
<?php echo form_submit($data); ?>
<?php echo form_close(); ?> **<!--I forgot this line -->**
<?php else: ?>
<!--When user is not logged in -->
<h2>login</h2>
<?php $attributes=array('id'=>'regform','class'=>'form-horizontal'); ?>
<?php if($this->session->flashdata('errors')): ?>
<?php echo $this->session->flashdata('errors'); ?>
<?php endif; ?>
<!--form starts here-->
<?php echo form_open('users/login',$attributes); ?>
<div class="form-group">
<?php echo form_label('User Name:');?>
<?php $data=array(
'name'=>'username',
'class'=>'form-control',
'placeholder'=>'Enter Your Name'); ?>
<?php echo form_input($data); ?>
</div>
<div class="form-group">
<?php echo form_label('User Password:');?>
<?php $data=array(
'name'=>'userpass',
'class'=>'form-control',
'placeholder'=>'Enter Your Name'); ?>
<?php echo form_password($data); ?>
</div>
<div class="form-group">
<?php $data=array(
'name'=>'sbmt',
'class'=>'btn btn-primary',
'value'=>'Login'); ?>
<?php echo form_submit($data); ?>
</div>
<?php echo form_close(); ?> <!--form ends here-->