Foros del Web » Programando para Internet » PHP »

CodeIgniter No se validan los datos del formulario en acción de UPDATE

Estas en el tema de No se validan los datos del formulario en acción de UPDATE en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 08/11/2010, 10:49
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 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
  #2 (permalink)  
Antiguo 09/11/2010, 05:33
 
Fecha de Ingreso: diciembre-2007
Mensajes: 77
Antigüedad: 16 años, 3 meses
Puntos: 3
Respuesta: No se validan los datos del formulario en acción de UPDATE

Revisa la elaboracion de formularios, lo primero.

Código PHP:
<?php
class Users_edit extends Controller{

    function 
user_do_edit()
    {
        
// Reglas de validación
        
$this->form_validation->set_rules('usuario_nombre''Nombre de Usuario''trim|required|htmlspecialchars|xss_clean');
        
$this->form_validation->set_rules('usuario_email''Correo Electr&oacute;nico''trim|required|htmlspecialchars|valid_email|xss_clean');
        
$this->form_validation->set_rules('usuario_login''Nombre de Login''trim|required|htmlspecialchars|xss_clean');
        
$this->form_validation->set_rules('usuario_password''Contrase&ntilde;a''trim|matches[usuario_password_confirm]|md5|xss_clean');
        
$this->form_validation->set_rules('usuario_password_confirm''Confirmar Contrase&ntilde;a''trim|md5|xss_clean');

        if (
$this->form_validation->run() == TRUE 
            
$this->load->model('/cpanel/Users_query');
            
$user_do_edit['do_edit'] = $this->Users_query->users_query_edit();
            
redirect('/cpanel/users_edit/index/'.$this->input->post('usuario_ID'));
        {
        
        
$this->index();
       
    }
 
}
?>
  #3 (permalink)  
Antiguo 09/11/2010, 10:06
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Respuesta: No se validan los datos del formulario en acción de UPDATE

Ahora funciona, pero no me muestra los mensajes de error... No acabo de entender qué puede estar pasando...

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

Última edición por rogertm; 09/11/2010 a las 10:07 Razón: Olvidé decir gracias...
  #4 (permalink)  
Antiguo 09/11/2010, 11:00
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Respuesta: No se validan los datos del formulario en acción de UPDATE

Solucionado, es que tenía la llamada a la función validation_errors() dentro del if que muestra el formulario, por eso no mostraba los mensajes de error, ahora ha quedado así:
Código PHP:
Ver original
  1. <?php
  2. if($this->input->post('usuario_ID')):
  3. ?>
  4.     <div class="error">
  5.     Han ocurrido los siguientes errores. <?php echo anchor(current_url().'/'.$this->input->post('usuario_ID'), 'Intentelo nuevamente'); ?>
  6.     </div>
  7. <?php echo validation_errors();
  8. endif;
  9. ?>
  10. <?php
  11. if($user_edit->num_rows() > 0)
  12. {
  13.     $user_to_edit = $user_edit->row();
  14. ?>
  15.     <?php echo form_open('/cpanel/users_edit/user_do_edit/'.$this->input->post('usuario_ID')); ?>
Lo único que no me gusta es que no me muestra el formulario para seguir editando ahí mismo, pero eso lo dejo para cuando esté ultimando detalles

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

Etiquetas: codeigniter, mvc, yanosequehacer
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:03.