Continuamos con el Tema 7 de la creación de un carrito de compras en codeIgniter, hoy
veremos cómo hacer una Crud de ususarios en CodeIgniter, en la que vamos a poder crear,
actualizar y eliminar a los usuarios del sistema;
en este caso los usuarios son únicamente los administradores, en el tema pasado vimos cómo crear un un sistemad de login con ajax, debido a que estabamos cargando algunas librerias en varios controladores y al ser necesarias en la mayoria de estos fué necesario hacer algunas modificaciones, entonces para seguir este tutorial lo primero que vamos a hacer es descargar aquí el ejemplo actualizado de la clase anterior, ahí se encuentra la base de datos la que también debemos actualizar. Recordemos que la url para acceder a las funciones administrativas es: http://localhost/cart/login y que el usuario y la contraseña es: admin.
Paso 2
Después de haber reemplazado el ejemplo y la base de datos lo primero que vamos a hacer escrear un controlador llamado users.php, como ya sabemos lo ubicamos en cart/application/controllers/
Código users.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Users extends CI_controller{
function __construct()
{
parent::__construct();
$this ->load->model('Users_model');
// estas reglas son comunes a los formularios de crear y editar por eso las inicializamos en el constructor
$this->form_validation->set_rules('name', 'Nombres', 'required|min_length[3]');
$this->form_validation->set_rules('last_name', 'Apellidos', 'required|min_length[3]');
$this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[4]|md5');
$this->form_validation->set_rules('passconf', 'Confirmar password', 'required|matches[password]|md5');
$this->form_validation->set_message('required', 'el campo %s es requerido');
$this->form_validation->set_message('matches', 'El password no coincide');
$this -> form_validation -> set_error_delimiters('<ul><li>', '</li></ul>');
}
function index(){
$data['title'] = 'Administración de Usuarios';
$data['records'] = $this->Users_model->get_users();
$this->load->view('admin/header_admin',$data);
$this->load->view('admin/users');
$this->load->view('front/footer');
}
function add(){ // Agregar usuarios
$data['title'] = 'Registrar Usuario';
$this->form_validation->set_rules('username', 'Usuario', 'required|callback__username_check|min_length[4]|max_length[15]');
$this->form_validation->set_message('_username_check', 'El usuario ya existe');
if ($this->form_validation->run() == FALSE){
$this->load->view('admin/header_admin',$data);
$this->load->view('admin/add_user');
$this->load->view('front/footer');
}else{
$name = $this->input->post('name');
$last_name = $this->input->post('last_name');
$username = $this->input->post('username');
$password = $this->input->post('password');
$insert = $this->Users_model->add_user($name, $last_name, $username, $password);
$data['title'] = 'El usuario se agregó correctamente';
$this->load->view('admin/header_admin',$data);
$this->load->view('admin/success');
$this->load->view('front/footer');
}
} // fin del método
// Método privado
function _username_check($username){ // verificamos si el usario existe
return $this->Users_model->username_check($username);
}
function edit() // Método para tomar los datos del usuario y pasarlos al formulario de editar
{ $id=$this->input->post('id');
if($id!=''){
$data['title'] = 'Editar Usuarios';
$data['results'] = $this->Users_model->edit_user($id);
$this->load->view('admin/header_admin',$data);
$this->load->view('admin/edit_user');
$this->load->view('front/footer');
}else{ redirect('users');}
} // fin
function update(){ // Si los datos son válidos se actualiza el usuario de lo contrario se muestran los mensajes de error
$data['title'] = 'Editar Usuario';
$data['id'] = $this->input->post('id');
$this->form_validation->set_rules('username', 'Usuario', 'required|callback__user_check|min_length[4]|max_length[15]');
$this->form_validation->set_message('_user_check', 'El nuevo Usuario que trata de tomar está en uso');
if ($this->form_validation->run() == FALSE){
$this->load->view('admin/header_admin',$data);
$this->load->view('admin/edit_user');
$this->load->view('front/footer');
}else{
$id = $this->input->post('id');
$name = $this->input->post('name');
$last_name = $this->input->post('last_name');
$username = $this->input->post('username');
$password = $this->input->post('password');
$insert = $this->Users_model->update_user($id, $name, $last_name, $username, $password);
if($insert){
$data['title'] = 'El usuario se actualizó correctamente';
$this->load->view('admin/header_admin',$data);
$this->load->view('admin/success');
$this->load->view('front/footer');
}else{
$this->load->view('admin/header_admin',$data);
$this->load->view('admin/edit_user');
$this->load->view('front/footer');
}
}
}// fin update
function _user_check($username)
{
if($id = $this->input->post('id')){
return $this->Users_model->user_check($username, $id);
}
}
function delete(){
$id = $this->input->post('id');
$delete= $this->Users_model->delete_user($id);
if($delete){
$data['title'] = 'El usuario se eliminó correctamente';
$this->load->view('admin/header_admin',$data);
$this->load->view('admin/success');
$this->load->view('front/footer');
}
}
}
Paso 3
vamos a cart/application/models/ y creamos un modelo llamado users_model.phpCódigo de users_model.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Users_model extends CI_Model{
function get_users(){
$this->db->select('id, name, last_name, username');
$query = $this->db->get('users');
return $query->result();
}
function username_check($username)
{
$this->db->where('username', $username);
$query = $this->db->get('users');
if($query->num_rows>0){
return FALSE;
}else{
return TRUE;
}
}
function add_user($name, $last_name, $username,$password){
$data = array(
'name' => $name,
'last_name' => $last_name,
'username' => $username,
'password' => $password
);
return $this->db->insert('users', $data);
}
function edit_user($id)
{
$this->db->where('id', $id);
$query = $this->db->get('users');
return $query->result();
}
function update_user($id, $name,$last_name, $username,$password){
$data = array(
'name' => $name,
'last_name' => $last_name,
'username' => $username,
'password'=>$password
);
$this->db->where('id', $id);
return $this->db->update('users', $data);
}
function user_check($username, $id){
$this->db->where('id !=', $id);
$this->db->where('username', $username);
$query = $this->db->get('users');
if($query->num_rows()>0){
return false;
}else{
return true;
}
}
function delete_user($id){
$this->db->where('id', $id);
$query = $this->db->delete('users');
return true;
}
}
Último paso
vamos a cart/application/views/admin/ y creamos 4 vistas con estos nombres: users.php, add_user.php, edit_user.php y success.php.
Código de la vista users.php
<?=heading($title, 2);
$new_img = '<img src="'. base_url().'assets/img/user.png"/>'; ?>
<div class="container_table">
<p align="center"><?=anchor('users/add/' ,'Nuevo '.$new_img, 'title="Agregar Usuario"') ?></p>
<?php
$edit_img = '<img src="'. base_url().'assets/img/edit.png"/>';
$delete_img = '<img src="'. base_url().'assets/img/delete.png"/>';
$this->table->set_heading('Nombres', 'Apellidos','Usuario', $edit_img, $delete_img);
$tmpl = array ( 'table_open' => '<table border="1">' );
$this->table->set_template($tmpl);
$attributes = array('class' => 'edit_user');
$attributes2 = array('class' => 'delete_user');
$j = 0;
foreach($records as $record){
if($j<1){
$delete = '-';
}else{
$delete = form_open('users/delete',$attributes2).form_hidden('id', $record->id).form_submit('action', 'Eliminar').form_close();
}
$this->table->add_row($record->name,
$record->last_name,
$record->username,
form_open('users/edit',$attributes).form_hidden('id', $record->id).form_submit('action', 'Editar').form_close(),
$delete
);
$j++;
}
echo $this->table->generate();
?>
</div>
Código de la vista add_user.php
<?=heading($title,4);
$attributes = array('id' => 'form_login', 'class'=>'users');
$name = array('name'=>'name', 'id'=>'name','class'=>'input','placeholder'=>'Nombres',
'value'=>set_value('name'), 'size'=> '35',);
$last_name = array('name'=>'last_name', 'id'=>'last_name','class'=>'input','placeholder'=>'Apellidos',
'value'=>set_value('last_name'), 'size'=> '35',);
$username = array('name'=>'username', 'id'=>'username','class'=>'input','placeholder'=>'Usuario',
'value'=>set_value('username'), 'size'=> '35',);
$password = array('name'=>'password', 'id'=>'password','class'=>'input','placeholder'=>'Contraseña',
'type'=>'password', 'size'=> '35',);
$passconf = array('name'=>'passconf', 'id'=>'passconf','class'=>'input','placeholder'=>'Repita la Contraseña',
'type'=>'password', 'size'=> '35',);
if(validation_errors()):
?>
<div id="error"><?=validation_errors();?></div>
<?php endif ?>
<?=form_open('users/add', $attributes);?>
<div class="padding"><?=form_label('Nombres');?></div>
<div class="padding"><?=form_input($name);?></div>
<div class="padding"><?=form_label('Apellidos')?></div>
<div class="padding"><?=form_input($last_name)?></div>
<div class="padding"><?=form_label('Usuario')?></div>
<div class="padding"><?=form_input($username)?></div>
<div class="padding"><?=form_label('Password')?></div>
<div class="padding"><?=form_input($password)?></div>
<div class="padding"><?=form_label('Confirmar Password')?></div>
<div class="padding"><?=form_input($passconf)?></div>
<?=form_submit(array('name' => 'submit','class'=>'submit','value' => 'Guardar'))?>
<?=form_close();?>
<div class="clear"></div>
Código de la vista edit_user.php
<?=heading($title,4);
$attributes = array('id' => 'form_login', 'class'=>'users');
$name = array('name'=>'name', 'id'=>'name','class'=>'input','placeholder'=>'Nombres',
'value'=>set_value('name'), 'size'=> '35');
$last_name = array('name'=>'last_name', 'id'=>'last_name','class'=>'input','placeholder'=>'Apellidos',
'value'=>set_value('last_name'), 'size'=> '35');
$username = array('name'=>'username', 'id'=>'username','class'=>'input','placeholder'=>'Usuario',
'value'=>set_value('username'), 'size'=> '35');
$password = array('name'=>'password', 'id'=>'password','class'=>'input','placeholder'=>'Contraseña',
'type'=>'password', 'size'=> '35');
$passconf = array('name'=>'passconf', 'id'=>'passconf','class'=>'input','placeholder'=>'Repita la Contraseña',
'type'=>'password', 'size'=> '35');
$data = array('name'=>'id', 'value'=>set_value('id'));
if(validation_errors()){ ?>
<div id="error"><?=validation_errors();?></div>
<?php }else{
foreach ($results as $result){
$id = $result->id;
$name['value'] = $result->name;
$last_name['value'] = $result->last_name;
$username['value'] = $result->username;
}
}
?>
<?=form_open('users/update', $attributes);?>
<div class="padding"><?=form_label('Nombres');?></div>
<div class="padding"><?=form_input($name)?></div>
<div class="padding"><?=form_label('Apellidos')?></div>
<div class="padding"><?=form_input($last_name)?></div>
<div class="padding"><?=form_label('Usuario')?></div>
<div class="padding"><?=form_input($username)?></div>
<div class="padding"><?=form_label('Nuevo Password')?></div>
<div class="padding"><?=form_input($password)?></div>
<div class="padding"><?=form_label('Confirmar Password')?></div>
<div class="padding"><?=form_input($passconf)?></div>
<?=form_hidden('id',$id)?>
<?=form_submit(array('name' => 'submit','class'=>'submit','value' => 'Modificar'))?>
<?=form_close();?>
<div class="clear"></div>
Código de la vista success.php
Esta vista es donde damos los mensajes de éxito después de cada acción realizada.
<?php echo '<p class="success">'.$title.'</p>'; ?>
Así ya tenemos la crud de usuarios en codeIgniter.
Descargar Ejemplo
No hay comentarios. :
No se permiten comentarios nuevos.