【发布时间】:2015-04-09 08:12:16
【问题描述】:
我试图阻止用户创建相同的用户名。好吧,我真正的问题是如何从控制器中的模型循环数据列表。也许我们知道如何使用 this -> data['user'] 在视图中循环它,并且在视图中我们可以调用 $user。但是我们如何在控制器层做到这一点。
这是我的代码
控制器
$username = strtolower($this->input->post('name'));
$fixUsername = str_replace(" ",".",$username);
$counter = 1;
$list[] = $this->addusermodel->getAllUsername();
for($i=0;$i<sizeof($list);$i++) {
if($list[$i] == $fixUsername) {
$counter = 0;
}
}
if($counter == 0) {
$data['result'] = "The username has already been taken";
$this->load->view('adduserview',$data);
} else {
$data = array(
'Nama' => $this->input->post('name'),
'Username' => $fixUsername."@praba",
'Password' => md5($this->input->post('password')),
'created' => date("Y-m-d h:i:sa"),
'createdBy' => $createdBy,
'lastModified' => date("Y-m-d h:i:sa"),
'lastModifiedBy' => $lastModifiedBy
);
$this->addusermodel->saveUser($data);
//$data['Username'] = $listName;
$data['message'] = "New user successfully added.";
$data['messageContent'] = "The username: ".$fixUsername."@praba". $counter;
$this->load->view('successpageview',$data);
//redirect('successpageview','refresh');
}
我的模型(和往常一样)
function getAllUsername() {
$this->db->select('Username');
$this->db->from('tbluser');
$query = $this->db->get();
return $query->result_array();
}
【问题讨论】:
-
无法理解您真正想要做什么?你能详细说明一下吗
-
其实我只是为了防止用户通过验证相同的用户名来添加新用户。我只是在控制器中验证它,但现在我通过在模型中验证它来更改它并返回结果(真/假)
-
而不是获取所有用户名并遍历所有用户名以检查是否存在更好的方法是在数据库表中搜索用户名..所以您可以在模型中创建另一个方法,如下所示。函数 checkUsernameExistance($username) { $this->db->select('Username'); $this->db->from('tbluser'); $this->db->where('用户名', $username); $query = $this->db->get();返回 $query->result_array(); }
标签: php codeigniter