Foros del Web » Programando para Internet » PHP » CodeIgniter »

Dudas con la validación alfabética

Estas en el tema de Dudas con la validación alfabética en el foro de CodeIgniter en Foros del Web. Hola a todos, recientemente he comenzado a usar CodeIgniter y me ha surgido un problemita. He estado aplicanco la regla "alpha" a algunos input para ...
  #1 (permalink)  
Antiguo 28/06/2011, 16:33
 
Fecha de Ingreso: abril-2011
Ubicación: La Habana, Cuba
Mensajes: 17
Antigüedad: 13 años, 6 meses
Puntos: 1
Pregunta Dudas con la validación alfabética

Hola a todos,
recientemente he comenzado a usar CodeIgniter y me ha surgido un problemita. He estado aplicanco la regla "alpha" a algunos input para su validación y me he dado cuenta que no incluye las ñ ni las vocales con tilde. He tratado de implementar una función que revise el string pero no lo logro. Pudiera alguien ayudarme? Gracias.
  #2 (permalink)  
Antiguo 29/06/2011, 05:51
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 16 años, 4 meses
Puntos: 165
Respuesta: Dudas con la validación alfabética

Hola buenas,

Porque no usas las expresiones regulares?

También puedes hacer tu método y llamarlo con callback_tumetodo dentro del rule de validación,

Un saludo!
  #3 (permalink)  
Antiguo 29/06/2011, 06:57
 
Fecha de Ingreso: abril-2011
Ubicación: La Habana, Cuba
Mensajes: 17
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Dudas con la validación alfabética

Si te refieres con expresiones regulares a las que están definidas por el CI, alpha es una de ellas. Probaré con el callback.
  #4 (permalink)  
Antiguo 29/06/2011, 06:59
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 19 años
Puntos: 890
Respuesta: Dudas con la validación alfabética

Voto por el callback, agrega a tu regex las letras que quieres que se admitan:

Código PHP:
Ver original
  1. function validate_char($str)
  2.     {
  3.         if ( ! preg_match("/^([a-zñÑáéíóú])+$/i", $str)){
  4.               $this->form_validation->set_message('validate_char', 'Char not permitted');
  5.               return FALSE;
  6.           } else{
  7.             return TRUE;           
  8.             }
  9.          
  10.     }
__________________
Drupal Argentina
  #5 (permalink)  
Antiguo 29/06/2011, 08:46
 
Fecha de Ingreso: abril-2011
Ubicación: La Habana, Cuba
Mensajes: 17
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Dudas con la validación alfabética

la función que me propone Nucklear la había utilizado extendiendo la clase Form_validation y no me funcionó, ahora la utilicé en le callback y sigue el mismo comportamiento (no me contempla las vocales acentuadas y la ñ).
Help!!!!!!!!
  #6 (permalink)  
Antiguo 29/06/2011, 10:15
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 19 años
Puntos: 890
Respuesta: Dudas con la validación alfabética

El archivo esta guardado en UTF-8?
El Charset que estas usando tambien?
Pon el codigo que estas usando.
__________________
Drupal Argentina
  #7 (permalink)  
Antiguo 29/06/2011, 10:51
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 16 años, 4 meses
Puntos: 165
Respuesta: Dudas con la validación alfabética

Exacto, entonces el problema esta seguramente en tu codificación, postea tu código.

Un saludo!
  #8 (permalink)  
Antiguo 29/06/2011, 12:57
 
Fecha de Ingreso: abril-2011
Ubicación: La Habana, Cuba
Mensajes: 17
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Dudas con la validación alfabética

Ahi les va el código

<?php
class Insertar_usuario extends Controller {

var $data = array('vista' => "seguridad/vista_insertar_usuario.php" );
function Insertar_usuario(){
parent::Controller();
$this->data['insertar_url'] = site_url( 'seguridad/insertar_usuario');
$this->data['base_url'] = $this->base_url;
$this->data['cancelar_operacion_url'] = site_url( 'seguridad/insertar_usuario/cancelar_operacion');
$this->data['listar_usuario_url'] = site_url( 'seguridad/listar_usuario');
$this->data['titulo'] = "Nuevo Usuario";

$this->load->model('tipo_usuario/mdl_tipo_usuario', 'tipo_usuario');
$this->data['tipo_usuario'] = $this->tipo_usuario->obtener();
$this->load->library('form_validation');
$this->load->helper(array('form', 'url'));
}
//---------------------------------------------------------------------------------------
function index() {
if($this->seguridad_modelo->tiene_session())
{
$this->seguridad_modelo->recuperar_desde_session();
if($this->seguridad_modelo->administrador())
{
$this->form_validation->set_rules('nombre', 'Nombre', 'required|alpha_space|callback_existe_nombre');
$this->form_validation->set_rules('tipo_usuario', 'Tipo de usuario', 'required');
$this->form_validation->set_rules('password', 'Contrase&ntilde;a', 'required|alpha_numeric|matches[conf_password]');
$this->form_validation->set_rules('conf_password', 'Confirmaci&oacute;n de la contrase&ntilde;a', 'required|alpha_numeric');

$this->form_validation->set_error_delimiters('<div class="verdana">', '</div>');
if($this->form_validation->run())
{
$this->form_validation->set_rules('nombre', 'Nombre', 'trim|xss_clean');
$this->form_validation->set_rules('tipo_usuario', 'Tipo de usuario', 'trim|xss_clean');
$this->form_validation->set_rules('password', 'Contrase&ntilde;a', 'trim|xss_clean|md5');

$this->form_validation->run();
$this->seguridad_modelo->construir(array('nmbre' => $this->input->post("nombre"), 'id_tipo' => $this->input->post('tipo_usuario'), 'password' => $this->input->post("password")));
if($this->seguridad_modelo->guardar())
{
$this->session->set_flashdata('operacion', 'La operaci&oacute;n se realiz&oacute; satisfactoriamente.');
redirect($this->data['listar_usuario_url']);
}
else
{
$this->data['mensaje'] = 'Se produjo un error al insertar los datos.';
$this->load->view("plantilla", $this->data);
}
}
else $this->load->view("plantilla", $this->data);
}
else redirect('negocio/inicio_control');
}
else redirect('seguridad/login_control');
}
//-----------------------------------------------------------------------------------------------
public function cancelar_operacion()
{
$this->session->set_flashdata('operacion', 'La operaci&oacute;n fue cancelada.');
}
//------------------------------------------------------
function existe_nombre($str)
{
$this->seguridad_modelo->set_nombre($str);
if($this->seguridad_modelo->existe_nombre())
{
$this->form_validation->set_message('existe_nombre', 'Existe un usuario registrado con el mismo nombre. Por favor cambie el nombre.');
return FALSE;
}
else return TRUE;
}
//--------------------------------------------------------
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
la vista
////////////////////////////////////////////////////////////////////////////////////////////////////
<!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=iso-8859-1" />


<script language="javascript" src="<?= $base_url.'system/reutilizable/js/jquery/jquery-1.2.3.pack.js.php' ?>" > </script>

<script language="javascript" src="<?= $base_url.'system/reutilizable/js/jquery/jquery.load_data.js'; ?>" > </script>
<script src="<?= $base_url.'system/reutilizable/js/jquery/jquery.blockui.js'; ?>"></script>


<SCRIPT language="JavaScript">
// Evento que se incia cuando se levanta la pagina..
$(document).ready( function() {


$('#nombre').focus();


//----------------------boton cancelar_operacion---------------------------
$('#cancelar_operacion').click(function()
{
$.ajax({
url:'<?= $cancelar_operacion_url; ?>',
success:function(){window.location.href = "<?= $listar_usuario_url; ?>";}});

})


}) // del ready

</SCRIPT>


</head>

<body>

<form name="frm_nuevo_usuario" id="frm_nuevo_usuario" method="post" action="<?= $insertar_url; ?>">
<table width="500" height="500" border="0" cellspacing="10" cellpadding="0">
<tr>
<td colspan="2" align="right">&nbsp;</td>
</tr>
<tr><td colspan="2" class="td_encabezado_tabla"><a class="text_encabezado_tabla"><?php echo $titulo; ?></a></td></tr>
<tr>
<td colspan="2" align="right">&nbsp;</td>
</tr>
<tr>
<td width="42%" align="right">
<b class="etiqueta"> Nombre: </b> </td>
<td width="58%" align="left"><input name="nombre" id="nombre" type="text" size="30" value="<?= set_value('nombre');?>"/></td>
</tr>
<tr>
<td width="42%" align="right">&nbsp;</td>
<td align="left"><?= form_error('nombre'); ?></td>
</tr>
<tr>
<td width="42%" align="right">
<b class="etiqueta"> Tipo de usuario: </b> </td>
<td width="58%" align="left"><select name="tipo_usuario" id="tipo_usuario">
<option value= "" ></option>
<?php
$can = count($tipo_usuario);
for($i = 0; $i < $can; $i++)
{?>
<option value="<?= $tipo_usuario[$i]['id_tipo'];?>"<?= set_select( 'tipo_usuario', $tipo_usuario[$i]['id_tipo']);?>><?php echo $tipo_usuario[$i]['tipo_usuario'];?></option>
<?php }?>
</select></td>
</tr>
<tr>
<td width="42%" align="right">&nbsp;</td>
<td align="left"><?= form_error('tipo_usuario'); ?></td>
</tr>
<tr>
<td width="42%" align="right">
<b class="etiqueta">Contrase&ntilde;a:</b></td>
<td align="left"><input name="password" id="password" type="password" size="30" value="<?= set_value('password');?>"/></td>
</tr>
<tr>
<td width="42%" align="right">&nbsp;</td>
<td align="left"><?= form_error('password'); ?></td>
</tr>
<tr>
<td width="42%" align="right">
<b class="etiqueta">Confirmaci&oacute;n de la contrase&ntilde;a:</b></td>
<td align="left"><input name="conf_password" id="conf_password" type="password" size="30" value="<?= set_value('conf_password');?>"/></td>
</tr>
<tr>
<td width="42%" align="right">&nbsp;</td>
<td align="left"><?= form_error('conf_password'); ?></td>
</tr>
<tr>
<td width="42%" align="right">&nbsp; </td>
<td align="left">&nbsp;</td>

</tr>

<tr>
<td colspan="2" align="right">&nbsp;</td>
</tr>
<tr>
<td colspan="2" align="center">
<input name="guardar" type="submit" value="Guardar" id="guardar" />
<input name="cancelar_operacion" type="button" value="Cancelar Operaci&oacute;n" id="cancelar_operacion" /> </td>
</tr>
</table>
</form>
</body>


///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////// form_validation
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class MY_Form_validation extends CI_Form_validation {

/**
* Constructor
*
*/
function MY_Form_validation()
{
parent:: CI_Form_validation();
}

// --------------------------------------------------------------------

// --------------------------------------------------------------------

/**
* Alpha-space

*/
function alpha_space($str)
{
return ( ! preg_match("/^([a-zA-ZáéíóúñÑ\s])+$/i", $str)) ? FALSE : TRUE;



}

// --------------------------------------------------------------
}
  #9 (permalink)  
Antiguo 29/06/2011, 23:27
 
Fecha de Ingreso: abril-2011
Ubicación: La Habana, Cuba
Mensajes: 17
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Dudas con la validación alfabética

Exacto el problema estaba con el charset de la vista que utilizo como plantilla.

Etiquetas: frameworks-y-php-orientado-a-objetos
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 13:48.