PHP - problema con if

   
Vista:

problema con if

Publicado por Camilo Andrés (5 intervenciones) el 18/01/2011 23:14:50
buenas tardes

he intentado por todos los medios comparar 2 string en una sentencia if pero no cumple, el codigo es el siguiente:
$sql="select ESAUS from CRPDTA.F55ENTSA where ESTAX=('".$_POST["empleado"]."') order by ESN001 desc FETCH FIRST 1 ROWS ONLY";
$cons=odbc_exec($cid,$sql);
$s=odbc_result($cons,1);

echo $s;

if($s=="ENTRA"){
}
else if ($s=="SALE") {
}
else{
}

cuando llega a echo $s;
veo el contenido de la variable y dice ENTRA
pero no entra al if sino que pasa directamente al else y siempre es así

si alguien tiene alguna solucion se lo agradeceria mucho,

puse gettype($s);
y muestra en pantalla string, entonces ya no se que hacer
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:problema con if

Publicado por Luis (54 intervenciones) el 19/01/2011 02:00:01
Lo que haces aparentemente esta bien. Yo generalmente lo hago es colocando el ENTRA o SALE en dos variables distintas y luego las compararía con $s, esto lo hago así puesto que me aseguro que el interprete va a saber que la dos variables son del mismo tipo y las podrá comparar. Si lo que quieres es comparar dos string y que además puedas saber si estan escritos exactamente igual, es decir, comparando mayusculas y minusculas puedes usar === en vez de ==. En este post que hice en estos día explico que hace ===. http://www.lawebdelprogramador.com/news/mostrar_new.php?id=71&texto=PHP&n1=575226&n2=1&n3=0&n4=0&n5=0&n6=0&n7=0&n8=0&n9=0&n0=0
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con if

Publicado por Camilo Andrés (5 intervenciones) el 19/01/2011 02:06:00
hola luis
gracias por responder, he hecho el intento con el operador que me dices y sucede lo mismo, no se que sucede.

también he intentado lo que dices

$entra="ENTRA";
$sale="SALE";

if($s==$entra){
}
else if ($s==$sale) {
}
else{
}

aun no estoy seguro de haber hecho la prueba con $s===$sale pero no puedo hacerla sino hasta mañana, te comento cualquier cosa pero si tienes otra solucion te agradecería de verdad.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con if

Publicado por Luis (54 intervenciones) el 19/01/2011 15:20:24
Lo acabo de probar así y funciona perfectamente bien.

<?php
$entra="ENTRA";
$sale="SALE";
$s="SALE";
if($s==$entra){
echo "entra";
}
else if ($s==$sale) {
echo "Sale";
}
else{
echo "no entra en ninguno de los anteriores";
}
?>

El caso es que si una variable esta en mayúcula la otra también debe estarlo. Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con if

Publicado por Diego (3 intervenciones) el 19/01/2011 15:11:50
Hola Camilo,

Según tu descripción del problema, me suena que la raíz del problema podría ocasionarse alguno de estos dos puntos:

1. Asegurate que los valores que comparas son iguales teniendo en cuenta las mayúsculas y minísculas (ten presente que php es case sensitive). Es decir, Entrar no es lo mismo que ENTRAR....

2. Tu variable $s es resultado de una consulta en base de datos, por lo tanto es muy posible que venga con algún caracter especial, por ejemplo retorno de línea y esas cosas que no son fácilmente visualizables en pantalla.
Con la sentencia "trim" quitas los caracteres mencionados por un string.

En el siguiente link tienes ejemplos de como hacer comparaciones mediante la sentencia "trim":
http://tutorialdecodeigniter.com/evitar-problemas-al-comparar-valores-strings-en-php/

Dejame saber si te ha servidor esta info y has logrado solucionar tu problema.

Un saludo!

<a href="http://www.solo10.com/">Registro de dominios y Web Hosting<a/>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con if

Publicado por Camilo Andrés (5 intervenciones) el 19/01/2011 15:34:46
hola luis gracias por responder, la prueba que haces también la hice y me funciona al ser la variable ya declarada con una constante,

después de dar con muchos intentos me di cuenta por medio de la función strlen($s); obtengo el numero de caracteres de la variable y el resultado son 10 no se de donde los saca pero son 10, luego use la función $p=substr($s, 0, 5); que se encarga de sacar una parte del string y en mi caso use de 0 a 4 que son los 5 caracteres de ENTRA y al hacer la prueba de la siguiente manera $p=substr($s, 0, 10); y mostrar en pantalla muestra ENTRAENTRA por esa razón no cumplía la sentencia.

Diego gracias por tu ayuda me sirvió mucho y efectivamente ese era el problema, aparte de la solución que descubrí la tuya es mucho mas fácil.

lo que aun me causa duda es que usando sentencias similares para consultar y almacenar datos y hacer la comparación con otro tipo de variables las hace sin ningún inconveniente.

de nuevo gracias a los 2 ya estaba mareado por no solucionar la sentencia dentro de un if,, cada día se aprende mucho
jejejjejeje
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:problema con if

Publicado por Diego (3 intervenciones) el 19/01/2011 16:02:45
Camilo, me alegra mucho que hayas logrado solucionar el problema :-)

Si, como tu bien dices la comparación mediante el operador == está pensada para comparación entre números y otro tipo de datos.

Para la comparación entre valores strings, la sentencia más apropiada es "strcmp". Más info y ejemplos en la web oficial de php:
http://ar.php.net/strcmp

Saludos.-

Diego.

+ Solo10.com, Registro de dominios y Web Hosting Php
+ TutorialDeCodeigniter.com, blog (en idioma español !) sobre el popular framework php para desarrollo de software
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar