简体   繁体   中英

404 Page not found Codeigniter

I'm new to codeigniter. I'm making crud from a tutorial, whenever I clicked the Edit.

It links to.. http://localhost/crud/index.php/users/edit/1

and I'm getting I'm getting 404 Page not Found.

I think it's just a problem on the uri or pagination of the controllers. What would be the problem?

users.php - controller

<?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 - views/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>

You forgot to add the function edit in your controller. In your case it will be something like this:

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);

...

}

You have a couple of errors, first you must to rename your "update" method to "edit".

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: I'm argentinian and my english skills are poor..

I can not see a function in your controller called "edit". The way CI URLs work by default, is that the first segment "users" is the controller, class name (Users). - The file and class must have the same name. The second segment of the URL "edit" will be the name of a function within the class. In your case your URL is looking for class "Users" and a function called "edit" within that class, and "edit" does not exist!

Add this.

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

In your users.php - controller may be a function edit like something:

  function edit() {

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


}

And in model:

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);         

   }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM