Foros del Web » Programando para Internet » PHP »

Problema con condicion

Estas en el tema de Problema con condicion en el foro de PHP en Foros del Web. Hola de nuevo pero quisiera saber en que estoy mal lo que hago es validar una variable que no este vacio el campo y que ...
  #1 (permalink)  
Antiguo 11/01/2013, 14:11
 
Fecha de Ingreso: septiembre-2012
Mensajes: 112
Antigüedad: 11 años, 7 meses
Puntos: 1
Problema con condicion

Hola de nuevo pero quisiera saber en que estoy mal lo que hago es validar una variable que no este vacio el campo y que sea solo letra ya que aunque la variable sea numero o string o este en blanco me marca bien, tengo esta condición

Código:
function val_nombre($var_nombre){
$ok=eregi("^[a-z ñ]*$",$var_nombre);
if (!(empty($var_nombre)) && $ok)
return true;
else
return false;
}


Código PHP:
$n=($_POST['nombre'];

if(empty(
$n) && val_nombre($n)== false){
                     echo 
'error';
                     }else{ echo 
'bien';} 
  #2 (permalink)  
Antiguo 11/01/2013, 14:20
Avatar de egepe  
Fecha de Ingreso: diciembre-2009
Mensajes: 310
Antigüedad: 14 años, 4 meses
Puntos: 7
Respuesta: Problema con condicion

Tendría que revisarlo y ahora no puedo, pero creo que te falta el rango de las Mayusculas que no estas colocando
  #3 (permalink)  
Antiguo 11/01/2013, 14:23
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con condicion

Sugiero que no usar expresiones regulares para todo, no hace falta.

Esto básicamente se puede conseguir usando trim() y is_numeric() sin más.
Código PHP:
function val_nombre($valor) {
  return 
trim($valor) && ! is_numeric($valor);

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 11/01/2013, 14:30
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Problema con condicion

Cita:
Iniciado por pateketrueke Ver Mensaje
Sugiero que no usar expresiones regulares para todo, no hace falta.

Esto básicamente se puede conseguir usando trim() y is_numeric() sin más.
Código PHP:
function val_nombre($valor) {
  return 
trim($valor) && ! is_numeric($valor);

¿podrías explicar que hace && ! is_numeric($valor) ? nunca vi algo así en un return.
Entiendo que podría retornar trim($valor) pero lo otro ?
  #5 (permalink)  
Antiguo 11/01/2013, 14:42
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con condicion

Si no entiendes eso entonces deberías leer mas sobre operadores, eso es programación general.

Lo que devuelve el return es el resultado de comparar dos resultados de manera booleana, así que el resultado es un boolean.

Si lees el manual, trim() elimina los espacios al rededor de un valor, así que si la cadena no tiene nada simplemente devuelve nada, por ende se evalúa a FALSE y ya no evalúa la siguiente expresión.

En caso de que trim() devuelva algo, entonces si hay un valor y procedemos a evaluar su contenido, is_numeric() devuelve TRUE si el valor se puede interpretar como numérico.

Así pues, al existir un valor Y NO ser numérico (de ahí el Y NO = && !) devuelve TRUE la función, ¿se entiende?

También pude asignar todo a una variable y devolver la variable, pero al final da igual, así que no te sorprendas mucho.

Lo mejor que puedes hacer es seguir leyendo documentación, practicando y reflexionando todo lo que veas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 11/01/2013, 15:36
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Problema con condicion

Claro entiendo, porque por la negación ( Y NO && ! ) Negacion y negacion termina siendo que si, o sea true.

Etiquetas: variables
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:41.