Foros del Web » Programando para Internet » PHP »

Problema con elseif usando or

Estas en el tema de Problema con elseif usando or en el foro de PHP en Foros del Web. Que tal como estan. Pues sigo en el esfuerzo de aprender a programar php con mysql por mi cuenta y definitivamente este foro me ha ...
  #1 (permalink)  
Antiguo 16/06/2011, 11:31
 
Fecha de Ingreso: mayo-2011
Ubicación: Mexico
Mensajes: 16
Antigüedad: 13 años
Puntos: 1
Problema con elseif usando or

Que tal como estan.

Pues sigo en el esfuerzo de aprender a programar php con mysql por mi cuenta y definitivamente este foro me ha ayudado mucho al respecto.

Sin embargo tengo una duda referente a un tutorial q estoy siguiendo y no encuentro la solucion; el caso tiene que ver con el comando elseif ya que segun el tutorial, en el ejemplo lo utilizan de esta manera

Código HTML:
elseif ($field == "nombre" or $field == "apellido1" or $field == "apellido2")
Sin embargo a mi no me funciona y no encuentro informacion al respecto.
Es correcto hacer un OR dentro de un elseif (he visto que hacen and's con &&) o de plano es un error hacer lo anterior???

Si realmente se puede hacer lo anterior, cual seria el formato correcto???

De antemano gracias por su apoyo.
Saludos!!!!!!
  #2 (permalink)  
Antiguo 16/06/2011, 11:35
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Problema con elseif usando or

Probá así a ver que pasa

elseif (($field == "nombre" )||($field == "apellido1") ||($field == "apellido2"))
__________________
la la la
  #3 (permalink)  
Antiguo 16/06/2011, 11:42
 
Fecha de Ingreso: mayo-2011
Ubicación: Mexico
Mensajes: 16
Antigüedad: 13 años
Puntos: 1
Respuesta: Problema con elseif usando or

Cita:
Iniciado por truman_truman Ver Mensaje
Probá así a ver que pasa

elseif (($field == "nombre" )||($field == "apellido1") ||($field == "apellido2"))
Ya lo probe Truman y no funciona.

Por cierto, me olvide mencionar que me toma como verdadera solamente la tercera opcion, la de "apellido2"; al forzar que sea verdadera la primera o la segunda condicion, no las toma como verdadera, solamente esta valorando la tercena condicionante.
  #4 (permalink)  
Antiguo 16/06/2011, 11:45
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Problema con elseif usando or

podrías poner la parte que antecede a este codigo
__________________
la la la
  #5 (permalink)  
Antiguo 16/06/2011, 11:46
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Problema con elseif usando or

No es un error usar "or" o bien "||" (es lo mismo) dentro de un elseif, que por cierto, elseif no es un comando.

Puedes usar cualquier operador lógico dentro de un if o elseif, pero dependerá mucho de lo que quieres hacer, cosa que no aclaras en este caso, pues no dices qué quieres que haga y qué cosa hace o no hace tu código.
  #6 (permalink)  
Antiguo 16/06/2011, 11:54
 
Fecha de Ingreso: mayo-2011
Ubicación: Mexico
Mensajes: 16
Antigüedad: 13 años
Puntos: 1
Respuesta: Problema con elseif usando or

El ejemplo es de un formulario donde se teclea nombre, direccion, codigo postal, user y password, y en esta parte del programa valida que se tecleen comandos validos en el nombre completo (letras, el signo de ' o el de - )

Código PHP:
$arreglo_etiqueta = array ("nombre" => "Nombre""apellido1" => "Primer Apellido""apellido2" => "Segundo Apellido""direccion" => "Direccion""estado" => "Esdato""nick" => "Usuario""codpostal" => "Codigo Postal""password" => "Password");


foreach (
$_POST as $field => $value)
  {
 
#En este if verificamos q no esten en blanco los campos clave, apellido 2 no es campo clave
      
if ($field != "apellido2"
          {
              if (
$value == NULL)
              {
                  
$arreglo_blanco[$field] = "blanco";
              }
          }
      elseif ((
$field == "nombre") or ($field == "apellido1") or ($field == "apellido2"))
        {
          if (!
ereg ("^[A-Z a-z ' -]{1,50}$"$_POST[$field] ) )
          {
            
$mal_formato[$field] = "malo";
          }
        } 
  #7 (permalink)  
Antiguo 16/06/2011, 11:58
 
Fecha de Ingreso: mayo-2011
Ubicación: Mexico
Mensajes: 16
Antigüedad: 13 años
Puntos: 1
Respuesta: Problema con elseif usando or

Cita:
Iniciado por ocp001a Ver Mensaje
dependerá mucho de lo que quieres hacer, cosa que no aclaras en este caso, pues no dices qué quieres que haga y qué cosa hace o no hace tu código.

Gracias por el apoyo ocp001a, como bien comentas en el post original no puse que quiero q haga y que realmente hace, en mi siguiente post lo aclaro.

Cita:
Por cierto, me olvide mencionar que me toma como verdadera solamente la tercera opcion, la de "apellido2"; al forzar que sea verdadera la primera o la segunda condicion, no las toma como verdadera, solamente esta valorando la tercena condicionante.
  #8 (permalink)  
Antiguo 16/06/2011, 12:06
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Problema con elseif usando or

Tienes muy pegada la palabra comando...

Si entiendo bien, lo que quieres es que cuando sea el campo sea nombre, apellido1 o apellido2 valide que tengan un formato correcto, en tal caso creo yo que quedaría así:

Código PHP:
Ver original
  1. if (($field == "nombre") or ($field == "apellido1") or ($field == "apellido2"))
  2.         { ///si campo es nom, ap1 o ap2
  3.           if (!ereg ("^[A-Z a-z ' -]{1,50}$", $_POST[$field] ) ) verificamos
  4.           {
  5.             $mal_formato[$field] = "malo";
  6.           }
  7.        }
  8.        else{  // si no es ninguno de esos campos
  9.               if ($value == NULL) //si el campo es nulo
  10.               {
  11.                   $arreglo_blanco[$field] = "blanco";
  12.               }
  13.           }

Que por cierto, cuando recibes información vía $_POST[] si dejaron el campo en blanco, no sería nulo, es decir

if ($value == NULL) no funcionaría, debería ser:

if ($value == "")
  #9 (permalink)  
Antiguo 16/06/2011, 12:24
 
Fecha de Ingreso: mayo-2011
Ubicación: Mexico
Mensajes: 16
Antigüedad: 13 años
Puntos: 1
Respuesta: Problema con elseif usando or

jajajajajaja, hay q teclear comandos jajajajajaja

Es correcta tu apreciacion sobre que necesito que tengan formatos validos en el nombre y sus apellidos; y para apellido 2, como no es un campo clave, puede quedar vacio. Esto ya lo habia probado y habia funcionado correctamente, sin embargo al querer verificar lo del formato fue cuando me tope en pared.

Cita:
Que por cierto, cuando recibes información vía $_POST[] si dejaron el campo en blanco, no sería nulo, es decir

if ($value == NULL) no funcionaría, debería ser:

if ($value == "")
Cuando anduve probando lo de los campos vacios, no me funcionaba dejar $value == "", por lo que lo puse como NULL y me funciono, ahorita pruebo de nuevo con """" a ver si me funciona.

Creo que voy a comenzar a despedazar el programita; me causa un poco de intriga que modifique el elseif de la siguiente manera (insertando un echo al inicio del elseif):

Código PHP:
elseif (($field == "nombre") or ($field == "apellido1") or ($field == "apellido2"))
        {
           echo 
"$field <br>";
          if (!
ereg ("^[A-Z a-z ' -]{1,50}$"$_POST[$field] ) )
          {
            
$mal_formato[$field] = "malo";
          }
        } 
y me despliega solamente apellido2, yo hubiera pensado que deberia desplegarme los 3 campos, no? pq dicho elseif esta todavia dentro de un foreach, el principal.
Pero bueno, sigamos investigando.
  #10 (permalink)  
Antiguo 16/06/2011, 12:43
 
Fecha de Ingreso: mayo-2011
Ubicación: Mexico
Mensajes: 16
Antigüedad: 13 años
Puntos: 1
Sonrisa Solucionado!!!!!!!!!!!

Finalmente vi la luz!!!!!!!! jajajajajajajaja

Me puse a analizar el proceso completo y me di cuenta q el if y el elseif no estaban ejecutandose como yo queria, q me faltaba algo, finalmente vi una linea q me faltaba antes del primer if. La secuencia quedo de la siguiente manera.

Código PHP:
$arreglo_etiqueta = array ("nombre" => "Nombre""apellido1" => "Primer Apellido""apellido2" => "Segundo Apellido""direccion" => "Direccion""estado" => "Esdato""nick" => "Usuario""codpostal" => "Codigo Postal""password" => "Password");


foreach (
$_POST as $field => $value)
  {
      if (
$value == "")
      {
          if (
$field != "apellido2"
              {
                  if (
$value == NULL)
                  {
                      
$arreglo_blanco[$field] = "blanco";
                  }
              }
       }
      elseif ((
$field == "nombre") or ($field == "apellido1") or ($field == "apellido2"))
        {
          if (!
ereg ("^[A-Z a-z ' -]{1,50}$"$_POST[$field] ) )
          {
            
$mal_formato[$field] = "malo";
          }
        } 
Necesitaba mandar solamente los campos con valores vacios al primer if. Ya lo probe y funciona parece q muy bien.

Muchas gracias truman_truman y ocp001a !!!!!!!!!!!

Etiquetas: elseif
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 15:47.