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<?php
class Users_edit extends Controller{
function __construct()
{
parent::Controller();
}
function index()
{
// Cargamos el modelo que sirve la vista
// que muestra el usuario a editar
$this->load->model('/cpanel/Users_query');
$user_edit['user_edit'] = $this->Users_query->users_query_simple();
$this->load->view('/cpanel/users_edit', $user_edit);
}
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ó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ña', 'trim|matches[usuario_password_confirm]|md5|xss_clean');
$this->form_validation->set_rules('usuario_password_confirm', 'Confirmar Contraseña', 'trim|md5|xss_clean');
$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'));
}
}
?>
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<?php
class Users_query extends Model{
function Users_query()
{
parent::Model();
}
// Seleccionar un solo usuario para editar o borrar
function users_query_simple()
{
// Seleccionar un solo usuario
$id = $this->uri->segment(4);
$this->db->select('*');
$this->db->where('usuario_ID', $id);
return $this->db->get('gd_usuarios');
}
function users_query_edit()
{
$id = $this->input->post('usuario_ID');
$post_password = $this->input->post('usuario_password');
$user_data_update = array( 'usuario_nombre' => $this->input->post('usuario_nombre'),
'usuario_email' => $this->input->post('usuario_email'),
'usuario_login' => $this->input->post('usuario_login'),
'usuario_password' => $this->input->post('usuario_password'),
'usuario_roll' => $this->input->post('usuario_roll'));
// si el campo password viene vacio
// entonces no hago nada con el...
if($this->input->post('usuario_password') == '')
{
unset($user_data_update['usuario_password']); }
$this->db->where('usuario_ID', $id);
return $this->db->update('gd_usuarios', $user_data_update);
}
}
?>
Y el formulario o vista:
Código PHP:
Ver original<?php
if($user_edit->num_rows() > 0)
{
$user_to_edit = $user_edit->row();
?>
<?php echo validation_errors(); ?>
<?php echo form_open('/cpanel/users_edit/user_do_edit/'.$this->input->post('usuario_ID')); ?>
<fieldset name="Insert User">
<legend>Editar los datos del usuario: <strong><?php echo $user_to_edit->usuario_nombre; ?></strong></legend>
<label for="usuario_nombre">Nombre de Usuario</label>
<input type="text" name="usuario_nombre" value="<?php echo $user_to_edit->usuario_nombre; ?>" class="input" />
<label for="usuario_email">Correo Electrónico</label>
<input type="email" name="usuario_email" value="<?php echo $user_to_edit->usuario_email; echo set_value('usuario_email') ?>" class="input" />
<label for="usuario_login">Nombre de Login (Nombre que se usará para acceder al Panel de Control)</label>
<input type="text" name="usuario_login" value="<?php echo $user_to_edit->usuario_login; ?>" class="input" />
<label for="usuario_password">Nueva Contraseña</label>
<input type="password" name="usuario_password" value="<?php // echo set_value('usuario_password'); ?>" class="input" />
<label for="usuario_password_confirm">Confirmar Nueva Contraseña</label>
<input type="password" name="usuario_password_confirm" value="<?php // echo set_value('usuario_password'); ?>" class="input" />
<label for="usuario_roll">Roll del Usuario</label>
<select name="usuario_roll">
<optgroup title="Rolls de Usuarios">
<option value="3">Usuario</option>
<option value="2">Editor</option>
<option value="1">Administrador</option>
<option value="0">Super Administrador</option>
</optgroup>
</select>
<input type="hidden" name="usuario_ID" value="<?php echo $user_to_edit->usuario_ID; ?>" class="hidden" />
<input type="submit" name="editar_usuario" value="Editar Usuario" class="submit" />
</fieldset>
</form>
<?php
}
?>
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...