我已经失去了好几个小时,我确信这很简单!
我对codeigniter很新。
基本上我想使用从我的表单中收到的值在我的数据库中执行一个简单的INSERT,这是我的观点:
<!DOCTYPE html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Page Title</title>
</head>
<body>
<div id="formage">
<?php echo validation_errors(); ?>
<?php echo form_open('../add_client'); ?>
<p>
<?php echo form_label('First Name', 'first_name');?>
<?php echo form_input('first_name', '', 'id="first_name"' );?>
</p>
<p>
<?php echo form_label('Last Name', 'second_name');?>
<?php echo form_input('second_name', '', 'id="second_name"' );?>
</p>
<p>
<?php echo form_label('Email Address', 'email_address');?>
<?php echo form_input('email_address', '', 'id="email_address"' );?>
</p>
<p>
<?php echo form_label('Password', 'password');?>
<?php echo form_password('password', '', 'id="password"' );?>
</p>
<p>
<?php echo form_label('Confirm Password', 'passwordconf');?>
<?php echo form_password('passwordconf', '', 'id="passwordconf"' );?>
</p>
<p>
<?php echo form_submit('submit', 'Add New Client');?>
</p>
<?php echo form_close(); ?>
</div>
这会调用我的控制器:
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
class Add_client extends CI_Controller{
function __construct(){
parent::__construct();
}
function index(){
$this->load->library('form_validation');
$this->form_validation->set_rules('first_name', 'First Name', 'required');
$this->form_validation->set_rules('second_name', 'Second Name', 'required');
$this->form_validation->set_rules('email_address', 'Email Address', 'required|valid_email');
$this->form_validation->set_rules('password', 'Password', 'required|min_length(4)');
$this->form_validation->set_rules('passwordconf', 'Password', 'required|matches[password]');
if($this->form_validation->run() !== false){
$this->load->model('add_client_model');
$this->add_client_model->addUser(
$this->input->post('first_name'),
$this->input->post('second_name'),
$this->input->post('email_address'),
$this->input->post('password'));
}
$this->load->view('add_client_view');
}
}
反过来从我的模型中调用addUser函数:
<?php
class Add_client_model extends CI_Model{
function __construct(){
}
public function addUser($fname, $sname, $email, $password){
$this->db->set('first_name', $fname);
$this->db->set('second_name', $sname);
$this->db->set('email_address', $email);
$this->db->set('pasword', sha1($name));
$this->db->insert('users');
}
}
我遇到的问题是,每当我提交表单并调用该函数时,它似乎都会插入变量名称(参见第二行):
https://dl.dropbox.com/u/76853467/Picture%204.png
我似乎无法接受我插入我的函数参数的帖子数据!
有什么建议吗?非常感谢!
答案 0 :(得分:1)
试试这个:
$data = array(
'first_name' => $fname,
'second_name' => $sname,
'email_address' => $email,
'password' => sha1($password)
);
$this->db->insert('users', $data);
答案 1 :(得分:0)
然而,如何使用好的旧$ _POST对象来访问它?这毕竟是CI将获得它的数据。
答案 2 :(得分:0)
您是否使用echo或使用firephp检查了变量值(如果您正在使用它)?
确保参数在从帖子接受的模型中发送适当的值。
答案 3 :(得分:0)
我无法在控制器中看到表单助手。也许你已经自动加载了它?如果没有,请尝试在其中添加。
$this->load->helper('form');