Foros del Web » Programando para Internet » PHP »

Problemas para leer archivo

Estas en el tema de Problemas para leer archivo en el foro de PHP en Foros del Web. Estoy leyendo un archivo con PHP, el cual esta separado por comas (,) no tengo ningun problema cuando separo el archivo (linea por linea) y ...
  #1 (permalink)  
Antiguo 02/06/2004, 09:09
 
Fecha de Ingreso: diciembre-2003
Mensajes: 42
Antigüedad: 20 años, 4 meses
Puntos: 0
Problemas para leer archivo

Estoy leyendo un archivo con PHP, el cual esta separado por comas (,)
no tengo ningun problema cuando separo el archivo (linea por linea) y lo meto
un arreglo, EL GRAN PROBLEMA es que todas los datos me los toma como string y tengo algunos que son numericos pero = asume que son string ¿que puedo hacer?

alguien sabe si habra que modificar el archivo que estoy recibiendo antes de leerlo con la aplicacion, o si hay alguna forma con php de decirle que esas varibale son numericas..

ya intente formatear la variable pero me entrega un 0

AYUDA PLEASE
  #2 (permalink)  
Antiguo 02/06/2004, 10:43
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 5 meses
Puntos: 11
¿en que momento se produce el problema de que la variable sea string y no numerica?
  #3 (permalink)  
Antiguo 02/06/2004, 10:47
Avatar de The_Dark_Roy  
Fecha de Ingreso: enero-2004
Mensajes: 218
Antigüedad: 20 años, 3 meses
Puntos: 0
ose apara que quieres que sea numerica?
__________________
ojala te hayas quitado la venda

http://www.surire.cl
http://www.uta.cl
  #4 (permalink)  
Antiguo 02/06/2004, 10:53
 
Fecha de Ingreso: diciembre-2003
Mensajes: 42
Antigüedad: 20 años, 4 meses
Puntos: 0
Busqueda

Una vez que ya tengo asignada una variable al arreglo,

te envio el codigo

$fd = fopen("/tmp/archivo_".$fecha, "r");
$contador=1;
while ($fila = fgets($fd, 9999)){
if ($contador!=1){
$datos=explode(",",$fila);
$datos[26]=rtrim($datos[26]);
$numero_compra = $datos[0];
$id_orden1=$datos[26];

// print $id_orden1;

$query="SELECT id_despacho FROM despachos WHERE id_orden='$id_orden1'";

$result=mysql_query($query);
$observaciones="";
$error=0;

if (!is_numeric($numero_compra)){
$observaciones="* Orden NO NUMERICA (Linea: $contador)<br>";
$error=1;
} .........

Lo mas divertido que si imprimo la variable por browser me muestra el numero, pero no me lo esta tomando como tal el PHP
  #5 (permalink)  
Antiguo 02/06/2004, 10:55
 
Fecha de Ingreso: diciembre-2003
Mensajes: 42
Antigüedad: 20 años, 4 meses
Puntos: 0
Necesito que sea numerica, por que o si no en algunos query la consulta no funciona como debiese...
  #6 (permalink)  
Antiguo 02/06/2004, 11:02
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 5 meses
Puntos: 11
$query="SELECT id_despacho FROM despachos WHERE id_orden='$id_orden1'";

si el campo id_orden es numerico entonces la consulta sql debe ser asi:

$query="SELECT id_despacho FROM despachos WHERE id_orden=$id_orden1";

sin comillas simples, hay está el error no en el tipo de la variable.
  #7 (permalink)  
Antiguo 02/06/2004, 11:15
 
Fecha de Ingreso: diciembre-2003
Mensajes: 42
Antigüedad: 20 años, 4 meses
Puntos: 0
Ya lo probe de ambas formas
y sigue sin funcionar.....

Ademas gettype de PHP me dice
que es una varibale de tipo string
  #8 (permalink)  
Antiguo 02/06/2004, 11:22
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 5 meses
Puntos: 11
como te digo, el tipo no importa. Pues lo que estas haciendo es solo confeccionar una cadena. A sql le interesa que cuando sea numerico llegue asi: campo=valor y que cuando sea cadena llegue asi: campo='valor'; el error debe estar en otro lado, verifica que $id_orden1 tenga un valor correcto antes de crear la consulta.
Con settype(variable, tipo) puedes darle un tipo a la variable.
  #9 (permalink)  
Antiguo 02/06/2004, 11:36
 
Fecha de Ingreso: diciembre-2003
Mensajes: 42
Antigüedad: 20 años, 4 meses
Puntos: 0
Pero si le doy el tipo 'integer' me la convierte a 0 o 1 ...

Como dige antes lo mas raro es cuando la imprimo por browser me tira por ejemplo 1234 (0 sea el numero que corresponde) pero al momento de generar la consulta PHP o MYSQL no me la esta tomando como numero, el is_numeric() de PHP tb me dice que no es NUMERICA.

NO ENTIENDO QUE PASA
  #10 (permalink)  
Antiguo 02/06/2004, 11:39
 
Fecha de Ingreso: diciembre-2003
Mensajes: 42
Antigüedad: 20 años, 4 meses
Puntos: 0
ADEMAS si en el mysql hago la consulta id_orden=$orden_1 sin comillas (' '), el mysql me tira error ya que no me lo reconoce como numero
  #11 (permalink)  
Antiguo 02/06/2004, 13:36
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

¿Que haces con el explode()? is_numeric() da false si tienes algun espacio detras de los numeros. Aplicale un trim().

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #12 (permalink)  
Antiguo 03/06/2004, 07:42
 
Fecha de Ingreso: diciembre-2003
Mensajes: 42
Antigüedad: 20 años, 4 meses
Puntos: 0
Al Final era un problema con el formato del archivo TXT
COPIE Y PEGE su contenido en un archivo nuevo y 0 problemas,
Un dato interesante quizas es que este archivo de texto lo genera
una aplicacion en ASP y a lo mejor la codificacion es distinta a los txt
comunes y corrientes.

Gracias a todos por su ayuda.....
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 05:45.