Foros del Web » Programando para Internet » PHP »

Subir archivo para rellenar una DDBB

Estas en el tema de Subir archivo para rellenar una DDBB en el foro de PHP en Foros del Web. Hola a [email protected] A ver si alguien me puede ayudar. Estoy muy apurada. Debería entregar el proyecto pasado mañana y me he quedado bloqueada. Os ...
  #1 (permalink)  
Antiguo 18/03/2002, 10:33
 
Fecha de Ingreso: febrero-2002
Mensajes: 64
Antigüedad: 15 años, 10 meses
Puntos: 0
Subir archivo para rellenar una DDBB

Hola a [email protected]

A ver si alguien me puede ayudar. Estoy muy apurada. Debería entregar el proyecto pasado mañana y me he quedado bloqueada.

Os cuento:

Necesito crear una aplicación que leyendo un archivo .txt que esté en el disco del cliente, rellene una base de datos, que está en el servidor.

Supongo que lo primero que debo hacer es subir dicho archivo al servidor, una vez allí abrirlo, leerlo y procesar los datos.

Bien, pues estoy perdidísima.He buscado en los mensajes del foro, he leído un libro de php y he consultado manuales en la red, en especial el de php.net (al que remiten en casi todos los mensajes). Y sigo sin saber cómo hacerlo. He ido probando cosas, pero en el mejor de los casos me sale el error: permission denied.

Entiendo que uno de mis fallos viene por los permisos de usuario, pero como que no sé UNIX, no sé como arreglármelas.

Después está el tema de leer el archivo: el archivo viene a ser algo parecido a esto:
<NDC>123456</NDC>
<CATALA>aigua</CATALA>
<DEFIN>H2O</DEFIN>
<ALTRES></ALTRES>
**

El doble asterisco significa fin de ficha.
Pero no puedo estar segura que entre campo y campo haya un salto de linea (con lo que la función fgets( ) no me vale), ni que estén siempre todos los campos.

No sé qué función seria la mejor:

fread(int desc, int long) --- esta supongo que lee el número de bytes indicados en
segundo argumento, desde la posición en la que se
halla el puntero.

fgetc (int desc) ---- con esta debería montarme unos bucles y un montón de
variables, que no se si vale la pena.

fpassthru (int desc) ---- que no sé exactamente lo que hace. Sé que lee desde la
posición actual del puntero hasta el final del archivo y
envía los resultado a la salida del programa. Es esto lo
que no entiendo: ¿qué es la salida del programa?

SUIGUE ----->
  #2 (permalink)  
Antiguo 18/03/2002, 11:05
 
Fecha de Ingreso: febrero-2002
Mensajes: 64
Antigüedad: 15 años, 10 meses
Puntos: 0
Re: Subir archivo para rellenar una DDBB

.... continuo:

Mi duda es si hay alguna función que me pueda ser más útil. No sé, algo como buscar dentro del texto una cadena concreta, o crear un string con parte del texto (hasta el fin de ficha) y luego con él poder buscar una cadena coincidente.... o ya no se me ocurre nada más. Pero seguro que hay algo, aunque yo no logro dar con ello.

Si alguien tiene un poco de tiempo y un gran corazón :) por favor, que me ayude!!! Es muy urgente para mi.

Podéis contestarme en el foro, mandar-me un e-mail a
[email protected]
Y en el MSN MESSENGER me podéis encontar con la dirección: [email protected]

Gracias y salu2

Mònica J M
  #3 (permalink)  
Antiguo 18/03/2002, 14:44
 
Fecha de Ingreso: diciembre-2001
Mensajes: 451
Antigüedad: 16 años
Puntos: 0
Re: Subir archivo para rellenar una DDBB

DOS PREGUNTAS:

1.-QUE BASE DE DATOS TIENES QUE LLENAR ARRIBA?

2.-EL FORMATO QUE TIENES LOS ARCHIVOS SIEMPRE TIENE QUE SER ASI, OSEA
<CAMPO>CONTENIDO</CAMPO>

si es asi tienes que parsear el archivo de texto, usar una pila o algo como para ir sacando los contenidos de cada tag...
  #4 (permalink)  
Antiguo 18/03/2002, 17:40
 
Fecha de Ingreso: febrero-2002
Mensajes: 64
Antigüedad: 15 años, 10 meses
Puntos: 0
Re: Subir archivo para rellenar una DDBB

La base de datos está en MySQL

Y el formato de los archivos, si se presentaran siempre como dices, es decir:
<CAMPO>CONTENIDO</CAMPO> pero no siembre voy a recibir los mismos campos y puede que me vengan campos vacíos.
En cuanto a lo que me dices de
Cita:
tienes que parsear el archivo de texto, usar una pila o algo como para ir sacando los contenidos de cada tag...
No entiendo muy bien que quieres decir ni como hacerlo.

Gracias

Mònica
  #5 (permalink)  
Antiguo 18/03/2002, 18:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Re: Subir archivo para rellenar una DDBB

Una pila .. es (o puede ser) un Array ..

La solucion a tu problema esta en:

1.- obtener tu fichero del HD del visitante y almacenarlo temporalmente en el servidor:

2.- Leer el archivo y obtener por lo menos "variables" con el contenido de una linea .. q en tu caso equivale a un campo de tu base de datos.

$archivo = "tutxt.txt";
$fp = fopen($archivo, "r");
$file_contents = fread($fp, filesize($archivo));
fclose($fp);
$linea = explode("\n", $file_contents);
$total_campos= count ($linea)-1;

con esto .. tiene un array $linea con todos los campos de tu .txt .. en el formato:
$linea[1] .. $linea[2] .. y resultados <campo1>valor</campo1> y en $total_campos el total de campos q contiene tu .txt

Ahora solo te queda ir leyendo el array Linea con un simple bucle (for, while .. recuerda que tienes ya el total de campos):

a cada paso del bucle tendras q ir reconociendo los nombres de los campos, para lo cual puedes buscar en la cadena $linea[x] .. el nombre del campo (sera algo despues de < .. y antes del primer > .. esto lo puedes hacer con alguna de las funciones de tratamiento de srigns .. De la misma forma .. el valor del campo sera .. algo despues del primer > y antes del segundo < ...

Luego .. solo ejecutar la orden SQL para insertar el registro en la base de datos..

y repetir el bucle ..


Un saludo,

pd: esa estructura de datos que tienes en ese "txt" es similar (por no decir q es) tipo XML ... mira tambien algo al respecto .. (sobre todo librerias de manejo de ese tipo de datos).
  #6 (permalink)  
Antiguo 19/03/2002, 20:39
 
Fecha de Ingreso: febrero-2002
Mensajes: 64
Antigüedad: 15 años, 10 meses
Puntos: 0
Re: Subir archivo para rellenar una DDBB

Con lo que me dices tengo un par de problemas.

1.- No puedo abrir el archivo, me da error por tema de permisos, en el error pone algo así como "permission denied". Y no sé prácticamente nada de los permisos en UNIX.

2.- En cuanto a leer el archivo, ya había pensado en recoger una linea con fgets() pero no puedo estar segura que cada campo esté en una linea nueva, quiero decir, que dentro del contenido de un campo puede haber un salto de linea, pero bueno, eso lo podría solucionar con un condicional (ya no viene de aquí).

Realmente mi problema está con los permisos. Y además tengo una duda: puedo abrir el archivo directamente? No debería subirlo previamente al servidor?

Y sobre lo que me decías de XML sí, mi archivo es similar pero no es propiamente XML, sólo usamos los tags por convenio, pero es un simple .txt

Muchas gracias por tu ayuda, a ver si puedes también responderme este par de preguntillas,

Gracias de nuevo

Saludos
Mònica J. M.
  #7 (permalink)  
Antiguo 19/03/2002, 22:53
Avatar de AngelRoyo  
Fecha de Ingreso: marzo-2002
Ubicación: Santiago de Chile
Mensajes: 207
Antigüedad: 15 años, 8 meses
Puntos: 5
Re: Subir archivo para rellenar una DDBB

Utilizar funcion chmod.
Siempre lo subiras al server y lo leeras de ahi.
Puedes moverlo a una carpeta de destino con:
move_uploaded_file($path_origen,$path_destino);
Creo que vas bien.

Si usas PHPed graba con formato unix el texto, para que no te vaya a traer algun problema eso creo.
La funcion trim(string) elimina espacios ademas de "\r" "\n" lineas retornos de carro, por si te sirve.

Espero te ayuden esas funciones.
Saludos.
Por si me ayudas en mi pregunta de $HTTP_POST_FILES[0][0].
Gracias
  #8 (permalink)  
Antiguo 20/03/2002, 06:59
 
Fecha de Ingreso: febrero-2002
Mensajes: 64
Antigüedad: 15 años, 10 meses
Puntos: 0
Re: Subir archivo para rellenar una DDBB

Gracias Angel,

Pero sigo teniendo problemas. No me funciona tampoco el chmod, me sigue dando error de permisos, quizá es que no le paso bien los parámetros.

Por otra lado, no uso PHPEdit, uso PHP Coder, si me dices que es mejor el Edit, cambio rápidamente ;)

Y por último sigo sin saber muy bien, como subir el archivo. Dices que puedo moverlo a otra carpeta, pero me podrías indicar exactamente cómo lo subo y qué parametros le tengo que pasar?

Me estoy mirando tu mensaje, pero por ahora estoy un poco espesa, a ver si me aclaro y te puedo echar un cable.

Gracias.

Salu2
Mònica
  #9 (permalink)  
Antiguo 22/03/2002, 07:37
 
Fecha de Ingreso: febrero-2002
Mensajes: 64
Antigüedad: 15 años, 10 meses
Puntos: 0
Re: Subir archivo para rellenar una DDBB

Hola de nuevo.

Realmente nadie puede ayudarme?

O es que no se entiende bien mi pregunta, si hace falta la vuelvo a redactar...

Por favor, os necesitoo!!!!

Gracias.
Mònica J. M.
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 01:47.