【问题标题】:Looping data in controller from model codeigniter从模型 codeigniter 循环控制器中的数据
【发布时间】: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


【解决方案1】:

我认为更好的方法是在您的模型中创建另一个函数,该函数通过IDemail 或另一个唯一字段搜索您的数据库。如果函数返回row - 则用户存在。如果它返回nothing - 然后添加一个新用户。

【讨论】:

  • 问题解决了。我通过验证模型中而不是控制器中的现有用户来遵循您的建议,并且它有效。不错
猜你喜欢
  • 2017-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
  • 2011-12-21
  • 2016-06-27
  • 1970-01-01
相关资源
最近更新 更多