2013-10-11 219 views
0

我是codeigniter的新手。每當我點擊「編輯」時,我都會從教程中弄到一些東西。404頁未找到Codeigniter

它鏈接到... http://localhost/crud/index.php/users/edit/1

和我得到我得到404找不到網頁。

我認爲這只是控制器的uri或分頁問題。 會有什麼問題?

users.php - 控制器

<?php 

if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Users extends CI_Controller { 

function __construct() 

{ 

parent::__construct(); 

#$this->load->helper('url'); 

$this->load->model('users_model'); 

} 

public function index() 

{ 

$data['user_list'] = $this->users_model->get_all_users(); 

$this->load->view('show_users', $data); 

} 
public function add_form() 

{ 

$this->load->view('insert'); 

} 
public function insert_new_user() 

{ 

$udata['name'] = $this->input->post('name'); 

$udata['email'] = $this->input->post('email'); 

$udata['address'] = $this->input->post('address'); 

$udata['mobile'] = $this->input->post('mobile'); 

$res = $this->users_model->insert_users_to_db($udata); 

if($res){ 

header('location:'.base_url()."index.php/users/".$this->index()); 

} 

} 
public function delete_a_user($id) 

{ 

$this->db->where('users.id',$id); 

return $this->db->delete('users'); 

} 
public function delete($id) 

{ 

$this->users_model->delete_a_user($id); 

$this->index(); 

} 

public function update() 

{ 

$mdata['name']=$_POST['name']; 

$mdata['email']=$_POST['email']; 

$mdata['address']=$_POST['address']; 

$mdata['mobile']=$_POST['mobile']; 

$res=$this->users_model->update_info($mdata, $_POST['id']); 

if($res){ 

header('location:'.base_url()."index.php/users/".$this->index()); 

} 

} 

} 

show_users.php - 視圖/ HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 

<head> 

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

<title>CI CRUD</title> 

<script type="text/javascript"> 

function show_confirm(act,gotoid) 

{ 

if(act=="edit") 

var r=confirm("Do you really want to edit?"); 

else 

var r=confirm("Do you really want to delete?"); 

if (r==true) 

{ 

window.location="<?php echo base_url();?>index.php/users/"+act+"/"+gotoid; 

} 

} 

</script> 

</head> 

<body> 

<h2> Simple CI CRUD Application </h2> 

<table width="600" border="1" cellpadding="5"> 

<tr> 

<th scope="col">Id</th> 

<th scope="col">User Name</th> 

<th scope="col">Email</th> 

<th scope="col">Mobile</th> 

<th scope="col">Address</th> 

<th scope="col" colspan="2">Action</th> 

</tr> 

<?php foreach ($user_list as $u_key){ ?> 

<tr> 

<td><?php echo $u_key->id; ?></td> 

<td><?php echo $u_key->name; ?></td> 

<td><?php echo $u_key->email; ?></td> 

<td><?php echo $u_key->address; ?></td> 

<td><?php echo $u_key->mobile; ?></td> 

<td width="40" align="left" ><a href="#" onClick="show_confirm('edit',<?php echo $u_key->id;?>)">Edit</a></td> 

<td width="40" align="left" ><a href="#" onClick="show_confirm('delete',<?php echo $u_key->id;?>)">Delete </a></td> 

</tr> 

<?php }?> 

<tr> 

<td colspan="7" align="right"> <a href="<?php echo base_url();?>index.php/users/add_form">Insert New User</a></td> 

</tr> 

</table> 

</body> 

</html> 
+0

如果你是新來的CodeIgniter你爲什麼不嘗試http://www.grocerycrud.com ?它會更容易安裝和使用:) –

回答

0

我不能看到你所謂的 「編輯」 控制器的功能。 CI URL的默認工作方式是,第一個段「users」是控制器,類名(Users)。 - 文件和類必須具有相同的名稱。 URL「edit」的第二部分將是類中某個函數的名稱。在你的情況下,你的URL正在尋找類「用戶」,並在該類中尋找一個名爲「編輯」的功能,並且「編輯」不存在!

加入此項。

public function edit(){ 
    // do your stuff here 
} 
1

您忘了在控制器中添加功能編輯。在你的情況下,它會是這樣的:

function edit($id) 

{ 

$mdata['name']=$_POST['name']; 
$mdata['email']=$_POST['email']; 
$mdata['address']=$_POST['address']; 
$mdata['mobile']=$_POST['mobile']; 

$res=$this->users_model->update_info($mdata, $id); 

... 

} 
+0

你好!我在嘗試後仍然遇到同樣的錯誤.. – Beabi

0

在你users.php - 控制器可能是一個功能的編輯喜歡的東西:

function edit() { 

    $this->user_model->edi_user(); 
    redirect('http://url.com/user/'); 


} 

,並在型號:

public function edit_user(){ 

$id   = $this->session->userdata('user_id'); 
$data  = array(
'name'  => $this->input->post('name'), 
'lastname' => $this->input->post('lastname'), 
); 

$this->db->where('id', $id); 
$this->db->update('users', $data);   

    } 
1

您有幾個錯誤,首先您必須將您的「更新」方法重命名爲「編輯」。

public function edit($id) { 

    $mdata['name'] = $_POST['name']; 
    $mdata['email'] = $_POST['email']; 
    $mdata['address'] = $_POST['address']; 
    $mdata['mobile'] = $_POST['mobile']; 

    $res = $this->users_model->update_info($mdata, $id); 

    if($res) 
     // this is wrong too.. $this->index() execute the index method 
     // header('location:'.base_url()."index.php/users/".$this->index()); 

     // use redirect function like this 
     redirect('users/index'); 

}

PD:我是阿根廷和我的英語技能差..