Foros del Web » Programando para Internet » PHP »

Problema al comparar dos variables dentro de un bucle

Estas en el tema de Problema al comparar dos variables dentro de un bucle en el foro de PHP en Foros del Web. Muy buenas estoy intentando comparar dos variables dentro de un bucle y no lo consigo, ya publique antes este mensaje pero nadie me respondió y ...
  #1 (permalink)  
Antiguo 24/04/2011, 14:27
Avatar de sulacok2  
Fecha de Ingreso: junio-2010
Mensajes: 5
Antigüedad: 13 años, 10 meses
Puntos: 0
Pregunta Problema al comparar dos variables dentro de un bucle

Muy buenas estoy intentando comparar dos variables dentro de un bucle y no lo consigo, ya publique antes este mensaje pero nadie me respondió y les pido ayuda porque ya no se donde mas mirar y no os exagero si les digo que con este tema llevo unos meses arrastrándolo, si son tan amables de echarme una mano de verdad que os lo agradecería, en fin, en “for” o “while” no me importa en los dos casos me sucede lo mismo, me explico.
En los dos casos “los dos por separado” antes se recibe una variable de otra pagina “$clave” esta variable se la pasamos a la función pasando el valor a una variable “$contr=strlen($clave)” y luego se analiza con “if($contr >5)”, se mira si es mayor de 5 caracteres, si lo es se abre un archivo de texto con “fopen()” y se entra en el bucle para leerlo con “fgets()”, cada vez que se lee una línea esta se compara con otro “if($linea==$clave)” para ver si es igual que la variable enviada por la otra pagina, esa que antes se analizo para ver cuantos caracteres tenia, pero el bucle sigue hasta el final y no entra aun las dos coincidan, vale ya lo explique ahora les dejo el código para que lo vean y haber si pueden ayudarme.

“$clave” es la variable que se envía desde otra página y el código empieza así:
<form action="ContPassw.php" method="POST">
<?php
$contr = strlen($clave);
if($contr > 5)
{
$ar=fopen("Registros/$nombre.txt","r") or
die("<h1>No se pudo abrir el archivo o no existe.</h1>");
while (!feof($ar))
{
$linea=fgets($ar);
if($linea == $clave)
{
fclose($ar);
include("3PAGPRINinclude.php");
exit;
}
}
fclose($ar);
echo "<h1>No coinciden los datos que nos proporcionas, intentalo de nuevo<br></h1>";
include("../CuriososIncluido.php");
//exit;
}
else
{
echo "<h1>La clave tiene que contener 5 o mas caracteres alfanumericos, vuelve a intentarlo:</h1>";
include("../CuriososIncluido.php");
//exit;
}
?>
</form>

Vale lo que no se es si al utilizar la función “strlen()” esta modifica en algo al contenido o formato de la variable y en el bucle al final quite la otra función “n12br()” que le añade un salto de carro claro esto es por si quiero imprimirlo en la pagina, pero eso no quiero y tengo el mismo resultado.

Lo que me parece curioso es que fuera del bucle si me funciona la condición del “if” claro esto comparando la variable enviada con otra que defino con el mismo valor en la pagina de destino, también he intentado recuperar los resultados de la lectura en una variable un “array” pero no se como recuperar esa variable, es decir yo voy grabando los datos recuperados, los muestro y todo pero dentro del bucle, fuera de el es como si el “array” se borrara y no contiene nada, en fin haber si me podéis echar una mano porque llevo una temporada buscando cosas y no soy capaz de resolver el problema.
  #2 (permalink)  
Antiguo 24/04/2011, 15:52
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 9 meses
Puntos: 105
Respuesta: Problema al comparar dos variables dentro de un bucle

Holas que linea, no se entiende mucho en que linea te falla o no funciona lo que deseas:
Código PHP:
Ver original
  1. <form action="ContPassw.php" method="POST">
  2. <?php
  3. $contr = strlen($clave);
  4. if($contr > 5)
  5. {
  6.     $ar=fopen("Registros/$nombre.txt","r") or die("<h1>No se pudo abrir el archivo o no existe.</h1>");
  7.     while (!feof($ar))
  8.     {
  9.         $linea=fgets($ar);
  10.         if($linea == $clave)
  11.         {
  12.             fclose($ar);
  13.             include("3PAGPRINinclude.php");
  14.             exit;
  15.         }
  16.     }
  17.     fclose($ar);
  18.     echo "<h1>No coinciden los datos que nos proporcionas, intentalo de nuevo<br></h1>";
  19.     include("../CuriososIncluido.php");
  20.     //exit;
  21. }
  22. else
  23. {
  24.     echo "<h1>La clave tiene que contener 5 o mas caracteres alfanumericos, vuelve a intentarlo:</h1>";
  25.     include("../CuriososIncluido.php");
  26.     //exit;
  27. }
  28. ?>
  29. </form>

Formateala siempre con el tag de PHP.
Saludos
Gildus
__________________
.: Gildus :.
  #3 (permalink)  
Antiguo 25/04/2011, 05:16
 
Fecha de Ingreso: octubre-2004
Ubicación: Barcelona
Mensajes: 195
Antigüedad: 19 años, 6 meses
Puntos: 7
Respuesta: Problema al comparar dos variables dentro de un bucle

¿Has probado con lo siguiente?
Código PHP:
Ver original
  1. $linea = trim(fgets($ar));
  #4 (permalink)  
Antiguo 25/04/2011, 05:58
Avatar de sulacok2  
Fecha de Ingreso: junio-2010
Mensajes: 5
Antigüedad: 13 años, 10 meses
Puntos: 0
Pregunta Respuesta: Problema al comparar dos variables dentro de un bucle

Hola muy buenas gildus gracias por tu interés, mira las líneas que no me funcionan son estas:
1. $linea=fgets($ar); //Bueno esta funciona pero es la variable que luego se compara.
2. if($linea == $clave)
Como puedes ver esto empieza dentro del bucle, pues bien o tengo algo mal configurado en php o no funciona por la razón que sea, bien, se supone que la primera linea que te muestro es una variable que recibe el valor de la linea que lee del archivo y seguido el “if” se supone que compara este valor leído, con el valor de la variable “$clave” recibida anteriormente, si coinciden entra sino… pues eso, lo que me sucede es que aunque coinciden porque lo se, no entra ni en defensa propia en el “if” y el bucle sigue hasta el final sin el resultado deseado, tanto en “while” como en “for” y como decía o algo mal configurado en php o el valor que ingresa en la variable “$linea” “$linea=fgets($ar);” no tiene el mismo formato que la variable “$clave” y por esa razón no se si es posible comparar las dos, y he buscado y buscado algo para darle formato a estas variables pero lo único que encuentro sobre eso es ponerlo en negrita o cosas por el estilo, reconozco que seguro que no hago las preguntas correctas pero… en fin, a lo que estoy, también te pondré un ejemplo de cómo lo hago con “for” para que me digas o me digan lo que hago mal, pero desde luego yo estoy quedándome sin ideas y a experimentar hasta tonterías podría decirte, je, je, je, bueno me río por no llorar.
Bueno muchas gracias de ante mano y hay va el otro ejemplo con “for” y así te muestro como quería crear el “array” que luego no soy capaz de recuperarlo fuera del bucle, bueno el “array” esta pero sin rastro de la información que se supone que tiene que estar:
<?php
$contr = strlen($clave);
$linea = array();
If($clave > 5)
{
$ar=fopen("Registros/$nombre.txt","r") or
die("<h1>No se pudo abrir el archivo o no existe.</h1>");
for($i=0;$i<=200;$i=$i+1)
{
$linea[$i] = fgets($ar);
if($linea[$i] == $clave)
{
fclose($ar);
include("3PAGPRINincluido.php");
exit;
}
}
fclose($ar);
echo "<h1>No coinciden los datos que nos proporcionas, intentalo de nuevo<br></h1>";
include("../CuriososIncluido.php");
}else{
echo = “La clave tiene que contener 5 o mas caracteres, intentalo de nuevo”;
include("../CuriososIncluido.php");}
?>
  #5 (permalink)  
Antiguo 25/04/2011, 06:01
Avatar de sulacok2  
Fecha de Ingreso: junio-2010
Mensajes: 5
Antigüedad: 13 años, 10 meses
Puntos: 0
Pregunta Respuesta: Problema al comparar dos variables dentro de un bucle

Cita:
Iniciado por pintix Ver Mensaje
¿Has probado con lo siguiente?
Código PHP:
Ver original
  1. $linea = trim(fgets($ar));
No, no lo he probado, pero en cuanto tenga un poquito mas de tiempo lo pruebo.
Muchas gracias, con lo que sea te comento.
  #6 (permalink)  
Antiguo 25/04/2011, 08:00
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 9 meses
Puntos: 105
Respuesta: Problema al comparar dos variables dentro de un bucle

El archivo que usas o tratas de abrir tiene alguna delimitacion?, podrias tambien en ponerle el parametro en la funcion fgets($ar,999).

En caso de que supieras con que se delimita podria usar este codigo:

http://www.php.net/manual/en/function.fgets.php#47536

Nos avisas.

Saludos
Gildus
__________________
.: Gildus :.
  #7 (permalink)  
Antiguo 25/04/2011, 08:46
Avatar de sulacok2  
Fecha de Ingreso: junio-2010
Mensajes: 5
Antigüedad: 13 años, 10 meses
Puntos: 0
De acuerdo Respuesta: Problema al comparar dos variables dentro de un bucle

UN MILLÓN DE GRACIAS, pintix me has hecho sentir un alivio increíble, je, je, je, y en el buen sentido de la palabra por supuesto, y de paso a darme cuenta de que no hacia las preguntas correctas y como soy curioso, de hay el nombre que les pongo a algunas paginas, descubrí “que mas vale tarde que nunca” esta pagina que se o supongo que ya la conoceréis, pero que la dejo aquí por y para quien no la conozca, claro en este caso la dejo haciendo referencia al problema que tenia, para que no solo sea cortar y pegar que eso esta muy bien, pero mejor es saber que se esta haciendo correctamente.

[URL="http://php.net/manual/es/function.trim.php"][/URL]

De nuevo un millón de gracias pintix y también a gildus por vuestro interés, espero en un futuro no muy lejano poder ser yo el que ayude, por otra parte ya estuve viendo el código que me dejaste gildus no lo entiendo del todo muy bien, pero no te preocupes que ya me estrujare las neuronas con tu aporte y el manual recién descubierto, je, je, je, de paso dejo el código que funciona OK! por si a alguien le sirve de algo.

<?php
$contr = strlen($clave);
if($contr > 5)
{
$ar=fopen("Registros/$nombre.txt","r") or
die("<h1>No se pudo abrir el archivo o no existe.</h1>");
while (!feof($ar))
{
$linea=trim(fgets($ar));
if($clave == $linea)
{
fclose($ar);
include("3PAGPRINincluido.php");
exit;
}
}
fclose($ar);
echo "<h1>No coinciden los datos que nos proporcionas, intentalo de nuevo<br></h1>";
include("../CuriososIncluido.php");
//exit;
}
else
{
echo "<h1>La clave tiene que contener 5 o mas caracteres, vuelve a intentarlo:</h1>";
include("../CuriososIncluido.php");
//exit;
}
?>

Última edición por sulacok2; 25/04/2011 a las 08:54

Etiquetas: bucle, 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 04:04.