Foros del Web » Programando para Internet » PHP »

Importante:algo raro con variables ¿conflicto?

Estas en el tema de Importante:algo raro con variables ¿conflicto? en el foro de PHP en Foros del Web. HOla a [email protected] Vereis, necesito comparar una variable entre las lineas de un archivo (24.txt) en cada linea de este hay un numero y quiero ...
  #1 (permalink)  
Antiguo 10/10/2005, 20:18
 
Fecha de Ingreso: octubre-2005
Mensajes: 5
Antigüedad: 12 años, 2 meses
Puntos: 0
Importante:algo raro con variables ¿conflicto?

HOla a [email protected] Vereis, necesito comparar una variable entre las lineas de un archivo (24.txt) en cada linea de este hay un numero y quiero comparar esos numeros con la variable que recibo de otro documento mediante GET. Os muestro el codigo:

Código PHP:
<? 
$nombre_archivo 
$_GET["ide"];//nombre del archivo donde comparar
$numero $_GET["id"];//numero a comparar entre las lineas del archivo
$repetido 0;
$ruta "ficheros/".$nombre_archivo.".txt";
$archivo file($ruta); //creo array con las lineas del archivo
$lineas count($archivo); //cuento las lineas
for($i=0$i $lineas$i++){
//hasta aqui si llega el valor de la variable $numero
if ($archivo[$i] == $numero)//Pero Aqui no llega el valor de la variable $numero
//por lo tanto $error nunca pasa a valer 1 aunque exista una linea que sea igual a $numero. 
//Pero si pongo por ejemplo el valor directamente por ejemplo 5 sí que compara correctamente
// es decir (if ($archivo[$i] == 5))
{

$error 1;

}


}

if (
$error ==1)
{
//no añado otra linea en el archivo $nombre_archivo
echo "error el numero ya existe"
}
else if(
$error ==0)
{
echo 
"el numero no existe";
//añadiria $numero al archivo $nombre_archivo
}
?>
Por favor es urgentisimo, y no se como comparar la variable recibida con el contenido del archivo, no le llega el valor. muchas gracias.

Última edición por david211; 10/10/2005 a las 20:54
  #2 (permalink)  
Antiguo 10/10/2005, 21:05
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 12 años, 10 meses
Puntos: 11
Quiero saber algo... Primero usa esto.. solo por probar...

al inicio del documento...
<?
$numero = $_GET["id"];
die($numero);
?>

Avisame que cosa sale...

Saludos.
  #3 (permalink)  
Antiguo 11/10/2005, 08:16
 
Fecha de Ingreso: octubre-2005
Mensajes: 5
Antigüedad: 12 años, 2 meses
Puntos: 0
algo raro con variables

Muchas gracias por contestar. Lo he probado e imprime el valor que le paso desde el otro documento es decir:

mipagina?id=912

imprime 912 y deja de ejecutar el resto del script. Se puede leer durante todo el script pero cuando llega al if comparativo no lee el valor de la variable.
Saludos.

Última edición por david211; 11/10/2005 a las 08:52
  #4 (permalink)  
Antiguo 11/10/2005, 09:45
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 12 años, 10 meses
Puntos: 11
mmm.. no creo que sea la variable $numero el problema .. intenta imprimir la archivo variable para ver si sale... usa echo $archivo[$i]; vamos aver tu problema paso a paso
  #5 (permalink)  
Antiguo 11/10/2005, 10:11
 
Fecha de Ingreso: octubre-2005
Mensajes: 5
Antigüedad: 12 años, 2 meses
Puntos: 0
problema

Hola de nuevo, muchas gracias por ayudarme, a ver si lo sacamos, he resumido el codigo para verlo todo paso a paso y milagrosamente ahora si que llega la variable pero vas a flipar lo que pasa ahora. Paso aqui el codigo nuevo:

Código PHP:
<? 
$numero 
$_GET["id"];//800 por ejemplo
$nombre_fichero "24.txt";
$mi_archivo = @fopen ($nombre_fichero"r") or die ("No se puede abrir"); 
$archivo file("24.txt"); //array con las lineas del archivo
$lineas count($archivo); //cuenta los elementos del array
echo "numero de lineas: ".$lineas."<br>";
  for(
$i=0$i<$lineas$i++){
           if (
$archivo[$i]!=$numero){
        echo 
"¡DIFERENTES en la linea: ".$i." contenido linea: ".$archivo[$i]." numero que le paso: ".$numero."<br>";
    }
    else {echo 
"¡IGUALES en la linea: ".$i." contenido linea: ".$archivo[$i]." numero que le paso: ".$numero."<br>";}
  }
  
fclose($mi_archivo);
  
?>
Y esto es lo que imprime en el navegador, le paso mipagina?id=800:

numero de lineas: 5
¡DIFERENTES en la linea: 0 contenido linea: 913 numero que le paso: 800
¡DIFERENTES en la linea: 1 contenido linea: 800 numero que le paso: 800
¡DIFERENTES en la linea: 2 contenido linea: 912 numero que le paso: 800
¡DIFERENTES en la linea: 3 contenido linea: 911 numero que le paso: 800
¡DIFERENTES en la linea: 4 contenido linea: 910 numero que le paso: 800

si la linea dos es iagual al numero que le paso, ¿como dice que no?.
  #6 (permalink)  
Antiguo 11/10/2005, 10:25
 
Fecha de Ingreso: octubre-2005
Mensajes: 5
Antigüedad: 12 años, 2 meses
Puntos: 0
muy raro

Si le pongo el numero a comparar directamente a mano, si hace la comparacion correctamente es decir:

Código PHP:
<? 
$numero 
$_GET["id"];
$nombre_fichero "24.txt";
$mi_archivo = @fopen ($nombre_fichero"r") or die ("No se puede abrir"); 
$archivo file("24.txt"); //array con las lineas del archivo
$lineas count($archivo); //cuenta los elementos del array
echo "numero de lineas: ".$lineas."<br>";
  for(
$i=0$i<$lineas$i++){
//le pongo el 911 a mano
           
if ($archivo[$i]!=911){
        echo 
"¡DIFERENTES en la linea: ".$i." contenido linea: ".$archivo[$i]." numero que le paso: ".$numero."<br>";
    }
    else {echo 
"¡IGUALES en la linea: ".$i." contenido linea: ".$archivo[$i]." numero que le paso: ".$numero."<br>";}
  }
  
fclose($mi_archivo);
  
?>
La impresion en pantalla:
numero de lineas: 5
¡DIFERENTES en la linea: 0 contenido linea: 913 numero que le paso:
¡DIFERENTES en la linea: 1 contenido linea: 800 numero que le paso:
¡DIFERENTES en la linea: 2 contenido linea: 912 numero que le paso:
¡IGUALES en la linea: 3 contenido linea: 911 numero que le paso:
¡DIFERENTES en la linea: 4 contenido linea: 910 numero que le paso:

Esto es muy raro.
  #7 (permalink)  
Antiguo 11/10/2005, 10:43
 
Fecha de Ingreso: octubre-2005
Mensajes: 5
Antigüedad: 12 años, 2 meses
Puntos: 0
Aleluyaaaaaaaa¡¡¡¡¡

Lo he sacado, ya lo tengo, era una tonteria y he estado horas y horas para saber que es. El problema es que la variable que pasaba se reconoce como tipo texto, por eso no era igual al contenido nunca. He hecho una conversion de tipo de variable asi: settype($numero,'integer'); Y AHORA SI QUE DETECTA SI SON IGUALES. Gracias richardinj por contestarme. Espero que os sirva por si alguna vez...nunca se sabe.
Saludos.

Última edición por david211; 11/10/2005 a las 12:00
  #8 (permalink)  
Antiguo 11/10/2005, 20:18
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 12 años, 10 meses
Puntos: 11
jejeje... bueno esta muy bien que lo hayas descubierto.. eso te servirá de mucho.. y serás mas autodidacta...

Saludos....
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 11:24.