Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/11/2010, 10:49
Avatar de rogertm
rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 9 meses
Puntos: 638
Exclamación No se validan los datos del formulario en acción de UPDATE

Hola por acá. Tengo un formulario mediante el cual hago actualizaciones (UPDATE) a registros en la base de datos. Todo funciona bien, lo único es que no me hace la validación en a la hora de enviar los datos. Tengo lo siguiente:

En el controlador users_edit.php
Código PHP:
Ver original
  1. <?php
  2. class Users_edit extends Controller{
  3.  
  4.     function __construct()
  5.     {
  6.         parent::Controller();
  7.     }
  8.  
  9.     function index()
  10.     {
  11.         // Cargamos el modelo que sirve la vista
  12.         // que muestra el usuario a editar
  13.         $this->load->model('/cpanel/Users_query');
  14.         $user_edit['user_edit'] = $this->Users_query->users_query_simple();
  15.  
  16.         $this->load->view('/cpanel/users_edit', $user_edit);
  17.     }
  18.  
  19.     function user_do_edit()
  20.     {
  21.         // Reglas de validación
  22.         $this->form_validation->set_rules('usuario_nombre', 'Nombre de Usuario', 'trim|required|htmlspecialchars|xss_clean');
  23.         $this->form_validation->set_rules('usuario_email', 'Correo Electr&oacute;nico', 'trim|required|htmlspecialchars|valid_email|xss_clean');
  24.         $this->form_validation->set_rules('usuario_login', 'Nombre de Login', 'trim|required|htmlspecialchars|xss_clean');
  25.         $this->form_validation->set_rules('usuario_password', 'Contrase&ntilde;a', 'trim|matches[usuario_password_confirm]|md5|xss_clean');
  26.         $this->form_validation->set_rules('usuario_password_confirm', 'Confirmar Contrase&ntilde;a', 'trim|md5|xss_clean');
  27.  
  28.         $this->load->model('/cpanel/Users_query');
  29.         $user_do_edit['do_edit'] = $this->Users_query->users_query_edit();
  30.         redirect('/cpanel/users_edit/index/'.$this->input->post('usuario_ID'));
  31.     }
  32.  
  33. }
  34. ?>

La función index() me muestra el formulario con los datos del usuario que quiero actualizar a travez de la función users_query_simple(), cargada desde el modelo Users_query y user_do_edit() me hace la query, osea, el UPDATE, cargada desde el mismo modelo:
Código PHP:
Ver original
  1. <?php
  2. class Users_query extends Model{
  3.  
  4.     function Users_query()
  5.     {
  6.         parent::Model();
  7.     }
  8.  
  9.     // Seleccionar un solo usuario para editar o borrar
  10.     function users_query_simple()
  11.     {
  12.         // Seleccionar un solo usuario
  13.         $id = $this->uri->segment(4);
  14.         $this->db->select('*');
  15.         $this->db->where('usuario_ID', $id);
  16.         return $this->db->get('gd_usuarios');
  17.     }
  18.  
  19.     function users_query_edit()
  20.     {
  21.         $id = $this->input->post('usuario_ID');
  22.         $post_password = $this->input->post('usuario_password');
  23.  
  24.         $user_data_update = array(
  25.                             'usuario_nombre'    => $this->input->post('usuario_nombre'),
  26.                             'usuario_email'        => $this->input->post('usuario_email'),
  27.                             'usuario_login'        => $this->input->post('usuario_login'),
  28.                             'usuario_password'    => $this->input->post('usuario_password'),
  29.                             'usuario_roll'        => $this->input->post('usuario_roll'));
  30.  
  31.         // si el campo password viene vacio
  32.         // entonces no hago nada con el...
  33.         if($this->input->post('usuario_password') == '')
  34.         {
  35.             unset($user_data_update['usuario_password']);
  36.         }
  37.  
  38.         $this->db->where('usuario_ID', $id);
  39.         return $this->db->update('gd_usuarios', $user_data_update);
  40.     }
  41. }
  42. ?>
Y el formulario o vista:
Código PHP:
Ver original
  1. <?php
  2. if($user_edit->num_rows() > 0)
  3. {
  4.     $user_to_edit = $user_edit->row();
  5. ?>
  6.     <?php echo validation_errors(); ?>
  7.     <?php echo form_open('/cpanel/users_edit/user_do_edit/'.$this->input->post('usuario_ID')); ?>
  8.         <fieldset name="Insert User">
  9.             <legend>Editar los datos del usuario: <strong><?php echo $user_to_edit->usuario_nombre; ?></strong></legend>
  10.             <label for="usuario_nombre">Nombre de Usuario</label>
  11.             <input type="text" name="usuario_nombre" value="<?php echo $user_to_edit->usuario_nombre; ?>" class="input" />
  12.             <label for="usuario_email">Correo Electr&oacute;nico</label>
  13.             <input type="email" name="usuario_email" value="<?php echo $user_to_edit->usuario_email; echo set_value('usuario_email') ?>" class="input" />
  14.             <label for="usuario_login">Nombre de Login (Nombre que se usar&aacute; para acceder al Panel de Control)</label>
  15.             <input type="text" name="usuario_login" value="<?php echo $user_to_edit->usuario_login; ?>" class="input" />
  16.             <label for="usuario_password">Nueva Contrase&ntilde;a</label>
  17.             <input type="password" name="usuario_password" value="<?php // echo set_value('usuario_password'); ?>" class="input" />
  18.             <label for="usuario_password_confirm">Confirmar Nueva Contrase&ntilde;a</label>
  19.             <input type="password" name="usuario_password_confirm" value="<?php // echo set_value('usuario_password'); ?>" class="input" />
  20.             <label for="usuario_roll">Roll del Usuario</label>
  21.             <select name="usuario_roll">
  22.                 <optgroup title="Rolls de Usuarios">
  23.                     <option value="3">Usuario</option>
  24.                     <option value="2">Editor</option>
  25.                     <option value="1">Administrador</option>
  26.                     <option value="0">Super Administrador</option>
  27.                 </optgroup>
  28.             </select>
  29.             <input type="hidden" name="usuario_ID" value="<?php echo $user_to_edit->usuario_ID; ?>" class="hidden" />
  30.             <input type="submit" name="editar_usuario" value="Editar Usuario" class="submit" />
  31.         </fieldset>
  32.     </form>
  33. <?php
  34. }
  35. ?>
Ya leí la documentación y no entiendo porqué no hace la validación, de hecho, tengo un formulario mediante el cual hago los INSERTs a la base de datos y es prácticamente igual a esto. Pero este no me convierte los password a md5, ni me avisa que algún campo requerido llega vacío ni nada por el estilo...

Gracias de antemano...
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose