Foros del Web » Programando para Internet » PHP »

Maldito if

Estas en el tema de Maldito if en el foro de PHP en Foros del Web. Hola gente, tengo un if bastante denso. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original if ( ( $socio != NULL and $socio == $row [ 'CODIGO' ...
  #1 (permalink)  
Antiguo 11/10/2010, 16:59
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Maldito if

Hola gente, tengo un if bastante denso.
Código PHP:
Ver original
  1. if ( ($socio!=NULL and $socio==$row['CODIGO'])and ($apyno!=NULL and $apyno!=$row['APYNO']) and ($direc!=NULL and $direc==$row['DIREC']) and ($postal!=NULL and $postal==$row['CODPOS']) and ($local!=NULL and $local==$row['LOCAL']) and ($telef!=NULL and $telef==$row['TELEF']) and ($estado!=NULL or $estado==$row['ESTADO']) or ($fenac!=NULL and $fenac==$row['FENAC']) and ($fein!=NULL and $fein==$row['FEING']) or ($feegr!=NULL and $feegr==$row['FEEGR']) or ($catego!=NULL and $catego==$row['CATEGO']) and ($nrdoc!=NULL and $nrdoc==$row['NRDOC']) and ($legajo!=NULL and $legajo==$row['LEGAJO']) or ($email!=NULL and $email==$row['EMIAL']) or ($inter!=NULL and $inter==$row['TELELAB']) and ($cremax!=NULL and $cremax==$row['CREMAX']) and ($id!=NULL and $id==$row['ID_SOPRO']))
  2.     {
  3.         echo "se actualizo el Apellido y Nombre<br>";
  4.     }
y este
Código PHP:
Ver original
  1. if ( ($socio!=NULL and $socio==$row['CODIGO'])and ($apyno!=NULL and $apyno==$row['APYNO']) and ($direc!=NULL and $direc!=$row['DIREC']) and ($postal!=NULL and $postal==$row['CODPOS']) and ($local!=NULL and $local==$row['LOCAL']) and ($telef!=NULL and $telef==$row['TELEF']) and ($estado!=NULL or $estado==$row['ESTADO']) or ($fenac!=NULL and $fenac==$row['FENAC']) and ($fein!=NULL and $fein==$row['FEING']) or ($feegr!=NULL and $feegr==$row['FEEGR']) or ($catego!=NULL and $catego==$row['CATEGO']) and ($nrdoc!=NULL and $nrdoc==$row['NRDOC']) and ($legajo!=NULL and $legajo==$row['LEGAJO']) or ($email!=NULL and $email==$row['EMIAL']) or ($inter!=NULL and $inter==$row['TELELAB']) and ($cremax!=NULL and $cremax==$row['CREMAX']) and ($id!=NULL and $id==$row['ID_SOPRO']))
  2.     {
  3.         echo "Cambia direccion<br>";
  4.     }

Si le prestan atencion las diferencias son:


($apyno!=NULL and $apyno!=$row['APYNO']) and ($direc!=NULL and $direc==$row['DIREC'])

($apyno!=NULL and $apyno==$row['APYNO']) and ($direc!=NULL and $direc!=$row['DIREC'])

Para las dos imprimen.
resultado:

echo "se actualizo el Apellido y Nombre<br>";
echo "Cambia direccion<br>";


Alguna idea?
  #2 (permalink)  
Antiguo 11/10/2010, 17:31
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Maldito if

Y...
Que es lo que quieres que hagamos?
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #3 (permalink)  
Antiguo 11/10/2010, 17:34
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: Maldito if

Cita:
Iniciado por Sourcegeek Ver Mensaje
Y...
Que es lo que quieres que hagamos?
Que si $apyno!=$row['APYNO'] se da

imprima:
echo "se actualizo el Apellido y Nombre<br>";


Y como $direc!=$row['DIREC'] no se da.

NO imprima:
echo "Cambia direccion<br>";

y en cambio estan imprimiendo las dos cosas. tambien invirtiendo los caso.
  #4 (permalink)  
Antiguo 11/10/2010, 17:51
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Maldito if

Algo tienes mal en el planteamiento de tu script, lo mas facil seria evitar todos esos $variable == NULL inicializando cada una, suponiendo que vienen desde POST:

Código PHP:
Ver original
  1. // Con IF convencional:
  2. if(isset($_POST['variable']))
  3.     $variable = $_POST['variable'];
  4. else
  5.     $variable = 0; // Puede ser false, cadena vacia o lo que corresponda, segun el tipo
  6.  
  7. // Lo mismo, pero con asignacion ternaria:
  8. $variable = (isset($_POST['variable'])) ? $_POST['variable'] : 0;
  9.  
  10. // Despues solamente deberias comparar:
  11. if($variable == $row['campo'] && bla bla bla) {
  12. }

Por cierto, tambien deberias considerar usar && en vez de AND, ya que este ultimo, segun el manual de PHP tiene "menor peso" incluso que || (OR).

No, los IF no estan malditos, simplemente evaluan las comparaciones que escribimos dentro de los parentesis, si no lo hacemos bien... seguro que no funciona correctamente!
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 11/10/2010, 17:51
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Maldito if

Como punto a marcar... No necesitas checar si una variable es diferente a NULL y checar si esa variable tiene X valor..
Es obvio que si la variable tiene X valor, no es nula...
Me explico;

Código PHP:
//Erroneo checar dos veces
if ($socio!=NULL and $socio==$row['CODIGO']) {}

//Correcto
if ($socio==$row['CODIGO']) {} 
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #6 (permalink)  
Antiguo 11/10/2010, 18:16
Avatar de SirDuque  
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: Maldito if

Cita:
Iniciado por Sourcegeek Ver Mensaje
Como punto a marcar... No necesitas checar si una variable es diferente a NULL y checar si esa variable tiene X valor..
Es obvio que si la variable tiene X valor, no es nula...
Me explico;

Código PHP:
//Erroneo checar dos veces
if ($socio!=NULL and $socio==$row['CODIGO']) {}

//Correcto
if ($socio==$row['CODIGO']) {} 
Gracias Capote! lo edite como dijiste y lo soluciono


SOLUCIONADO
  #7 (permalink)  
Antiguo 11/10/2010, 18:20
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Maldito if

De nada :D

//Cof cof.. Un poquitin de karma... Cof.. Cof..... Jaja :P
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies

Etiquetas: maldito
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 08:19.