PHP - Problemas con If

 
Vista:

Problemas con If

Publicado por Jorge (11 intervenciones) el 11/09/2008 19:15:00
Buenas gente, como andan? tengo el siguiente problemilla, espero alguien pueda darme una mano; bueno la cosa va mas o menos así:

Tengo un formulario donde el usuario introduce un valor y este valor se consulta en la BD para ver si en efecto existe, si existe devuelve otro valor vinculado a la información introducida, si no existe entonces devuelve error y ahi muere la consulta; pongo el fragmento del código que me da problemas para ver que tal:

$sql="SELECT * FROM usuarios_sistema WHERE Usuario = '$Usuario' ";
$resultado=mysql_query($sql);
while ($data=mysql_fetch_array($resultado)) {

$UsrTemp = $data["Usuario"];

if ($UsrTemp = ""){
$_SESSION["error_informacion"] = "El Usuario no existe en la base de datos";
?><script>history.go(-1);</script><? exit;}
}

Ok entonces como podemos ver las primeras 3 líneas son la consulta (esto ya ha sido probado y en efecto funciona sin mayores incovenientes), luego asigno a una variable temporal la información del registro que me interesa; el chiste es que si la variable está en blanco (lo cual quiere decir que no devolvió nada) debería lanzar el error que se muestra en la penúltima línea y llevar a cabo la acción de la última. Incluso he colocado luego de la 5ta línea un echo "$UsrTemp"; y si meto un valor correcto me lo muestra por pantalla, si introduzco un valor incorrecto aparece en blanco, pero no entiendo porque no sigue las instrucciones según el condicional, no se si estoy utilizando mal la sintaxis, ya he probado con isset y con empty y el resultado es el mismo; en cambio si coloco if (!$UsrTemp = ""){ e introduzco un valor existente si me devuelve el error y en efecto si pongo un valor no existente sigue a la siguiente rutina (que no he posteado pues carece de importancia)

Si alguien me da una mano le agradecería inifintamente, de antemano para el que se tome la molestía de leer y responder esto muchisimas gracias.

Saludos
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:Problemas con If

Publicado por Pineapple (183 intervenciones) el 11/09/2008 20:47:12
Recuerda que cuando usas if es doble = asi:

if ($UsrTemp == "")

Prueba haber si funciona.

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:Problemas con If

Publicado por Jorge (11 intervenciones) el 11/09/2008 22:55:27
El resultado es el mismo asi le ponga == o =, nunca me dice si el resultado en efecto no devuelve nada; alguna otra sugerencia?? (gracias por responder)

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:Problemas con If

Publicado por Diego Romero (1450 intervenciones) el 11/09/2008 23:56:58
No entiendo bien la lógica de tu programa.

Por empezar para comparar valores en el if se usa doble signo igual, entonces sería:

if ($UsrTemp == ""){ ...

Aunque si me preguntan yo habría hecho:

if (empty($UsrTemp)) { ...

que es más seguro.

Ahora bien, a juzgar por el while estás esperando más de un registro desde la consulta SQL, es decir la condición:

WHERE Usuario = '$Usuario' "

puede cumplirse para más de un registro de la tabla.
Pero como parece que lo que quieres es verificar si un usuario con nombre de usuario $usuario existe o no existe ¿para qué el while?. Porque si en la tabla existe solo uno o bién ningún usuario con nombre de usuario $usuario, entonces esa consulta o devuelve un registro o ninguno.

Finalmente suponiendo que la consulta no devuelve ningún registro entonces nunca entra al while porque la asignación:

$data=mysql_fetch_array($resultado)

que está dentro de la condición del while se hace falsa, por lo tanto nunca se ejecuta lo que está dentro del ciclo. Literalmente:

while ($data=mysql_fetch_array($resultado)) { ...

significa: "Mientras se pueda asignar algo a $data, hacer..."

Bien pues, si el problema es saber si el usuario $usuario existe en la tabla mi versión de este programa sería:

<?php
$sql="SELECT * FROM usuarios_sistema WHERE Usuario = '$Usuario' ";
$resultado=mysql_query($sql);

$c = mysql_num_rows($resultado); // cuenta cuántos registros tiene el resultado
if ($c > 0) {
echo "El usuario: ".$Usuario." existe.<br />Sus datos son:";
$datos = mysql_fetch_assoc($resultado);
echo "<pre>";
var_dump($datos);
echo "</pre>";
}
else {
echo "El usuario: ".$Usuario." <b>no</b> existe.";
$_SESSION["error_informacion"] = "El Usuario no existe en la base de datos";
?><script>history.go(-1);</script><?php
exit;
} // else
?>

¿Preguntas?.
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:Problemas con If

Publicado por Jorge (11 intervenciones) el 12/09/2008 04:15:33
Vale Diego muchas gracias por la ayuda, no había tenido en cuenta lo del While (tienes razón), pasa que me hice un copy paste de otro query no me puse a detallar esas primeras líneas, me enfoqué solo en la consulta y en el resultado que traería.

Igual he visto (gracias a tu ayuda) que con el MySQL existe esta variable que permite verificar la cantidad de registros obtenidos, asi que no debería tener mayores inconvenientes en filtrar información con consulta en adelante ^^.

Mil gracias por todo, muy útil tu ayuda

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