我有一个对话框。
<div id="dialog-form" title="Create new Admin">
<p class="validateTips">All form fields are required.</p>
<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<fieldset>
<label for="name">Name</label>
<input type="text" name="name" id="name" value="" class="text ui-widget-content ui-corner-all" />
<label for="role">Role</label>
<select name="user_role" class="select ui-widget-content ui-corner-all" >
<option value="administrator">Administrator</option>
<option value="visitor">Visitor</option>
<option value="Helper">Helper</option>
</select>
<label for="email">Email</label>
<input type="text" name="login_email_admin" id="login_email_admin" value="" class="text ui-widget-content ui-corner-all" />
<label for="Passoword">Password</label>
<input type="passowrd" name="password" id="password" value="" class="text ui-widget-content ui-corner-all" />
<label for="Passoword">Re-Enter Password</label>
<input type="password" name="password_2" id="password_2" value="" class="text ui-widget-content ui-corner-all" />
<input style="margin-top:15px;" type="submit" name="add_admin" value="Add New Admin">
</fieldset>
</form>
我在视图中使用以下php代码来提取此对话框表单中的数据..
<?php
if($_POST['add_admin'])
{
$this->user_role=$this->input->post('name');
$this->user_role=$this->input->post('user_role');
$this->login_email_admin=$this->input->post('login_email_admin');
$this->password=$this->input->post('password');
$this->load->database();
$this->db->insert('admin_user',$this);
}
?>
但它没有插入db.this问题真的困住了我。我在表单提交时调用页面本身,我不知道它不起作用的原因是什么。 另外有一种方法,我将摆脱使用模型,而我可以在视图中做所有数据库操作?
答案 0 :(得分:4)
添加echo
以打印变量;)
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"
enctype="multipart/form-data">
答案 1 :(得分:2)
这段代码在很多方面都是错误的:
if($_POST['add_admin'])
{
$this->user_role=$this->input->post('name');
$this->user_role=$this->input->post('user_role');
$this->login_email_admin=$this->input->post('login_email_admin');
$this->password=$this->input->post('password');
$this->load->database();
$this->db->insert('admin_user',$this);
}
$this
引用,其中包含的内容远远超过这些属性应该是这样的:
$field['user'] = $this->input->post('name'); //or whatever is the FIELD NAME
$field['user_role'] = $this->input->post('user_role');
$field['login_email_admin'] = $this->input->post('login_email_admin');
$field['password'] = $this->input->post('password');
$this->load->database();
$this->db->insert('admin_user',$field);
请参阅手册上的insert chapter以供参考。
另外,我不知道你为什么要在视图中这样做,你应该在模型中插入,并且必须在控制器中完成对提交表单的检查(理想情况下你可以使用表单验证类,对于此任务非常方便。
你正在使用一个带有MVC架构的框架,但是在这段代码中你几乎什么都没有利用......
答案 2 :(得分:1)
1)您需要将$ _POST传递给您在视图中的控件...
$this->load->view("MyView",array('_POST'=>$_POST));
2)你不需要PHP来发布自己的解决方案
<form action="" method="post" enctype="multipart/form-data">
操作为空白时,浏览器默认 自身。另一种(更绝对的)解决方案也可以是$_SERVER['REQUEST_URI']
如果你想成为更多CI,你可以内联(实例化验证类并包含表单助手)
<?php echo form_open(''); ?>
另外$ _SERVER ['PHP_SELF']因为你从index.php运行而无法工作,你的URL是通过.htaccess控制的。
答案 3 :(得分:0)
这个问题已经得到了解答,但我想指出,没有任何参数的form_open()会完全符合您的要求(创建动作=&#34;&#34;) 。
所以你可以简单地使用下面的代码:
<?php echo form_open(); ?>
以下是CodeIgniter的来源:
function form_open($action = '', $attributes = '', $hidden = array())