PHP - subir un archivo

   
Vista:

subir un archivo

Publicado por Marcelo (11 intervenciones) el 10/11/2009 00:38:55
Hola a todos nuevamente me tienen aqui preguntando en el Foro, mi pregunta es la siguiente. Tengo una tabla llamada agenda hecha en mysql la cual tiene 3 campos Nombre,Direccion y Telefono.
Mi pregunta es como puedo hacer para que en mi pagina tenga un boton que diga examinar y me permita buscar o dar la direccion de donde esta ubicado el archivo de tipo texto que tendra los datos de la agenda.
Nose si me dejo entender quiero un codigo fuente que me permita subir un archivo de tipo texto y se guarde en la tabla agenda, la pagina debe de tener una casilla y un boton que diga examinar el cual al hacer clic sobre el me permita dar la ruta del archivo a cargar.
Gracias por su futura ayuda
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:subir un archivo

Publicado por Ignacio Casinelli Esviza (1 intervención) el 10/11/2009 12:27:29
Marcelo:

No es mi intención darte el detalle total de cómo hacerlo, puesto que no tengo tiempo ahora, pero al menos orientarte:

1. Preparar el HTML

En el HTML, la etiqueta que te permite poner el botón examinar es:
<input type="file" name="archivo" />

La etiqueta <form> debe incluir la cláusula "enctype":
enctype="multipart/form-data"

2. Atajar el archivo

El PHP que recibe el POST con los datos el formulario debe procesar el archivo.
PHP genera un array $_FILES con información sobre los archivos que han sido posteados.

Para ahorrarte dolores de cabeza, te digo que NUNCA vas a saber la ruta original del archivo en la PC del cliente. PHP sólo crea un archivo temporal y te copia allí el contenido del archivo que recibió. Luego te da en el array $_FILES información acerca de ese archivo que recibió (nombre -sin ruta-, ruta al archivo temporal creado, tamaño, etc).

Vos sos responsable de qué hacer con el archivo que te han enviado. Por ejemplo: copiarlo en algún lugar del server o abrirlo, trabajarlo y nada más, etc.

$arrayLineas = get_file_contents( $_FILES["archivo"]["tmp_name"] );

Con esa sóla instrucción ya tenés en $arrayLineas todo el texto del archivo recibido, donde cada línea es un elemento del array.

3. Procesar el archivo

Dependiendo de cómo está la información en el TXT, el trabajo para introducir esos datos en la tabla será más o menos fácil. Si la información está en XML podés usar las funciones de XML de PHP para convertirlo en un array de objetos que con un foreach() los insertes en la tabla. Si es un archivo plano, tendrás que poner más esfuerzo en interpretarlo.

Suponiendo que el archivo TXT viene separado por punto y coma y los campos de texto encerrados entre comillas... entonces podrías hacer:

foreach ( $arraLineas as $registro ){
$s = "INSERT INTO tabla (nombre,direccion,telefono) VALUES ({$registro});";
mysql_query( $s );
}
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:subir un archivo

Publicado por Marcelo (11 intervenciones) el 12/11/2009 13:40:31
Ignacio

Con tu explicacion hice esto pero no me funciona me sale error te paso el codigo fuente para q lo revises por favor, la diferencia que puse es de que la separacion de los campos estara dada por el simbolo | y no por puntos y comas (;) te muestro el codigo que hice

<?
$arrayLineas = get_file_contents( $_FILES["archivo"]["tmp_name"] );
foreach ( $arraLineas as $registro )
{
$s = "INSERT INTO AGENDA(nombre,direccion,telefono) VALUES ({$registro})|";
mysql_query( $s );
}
?>
<form action="<?=$PHP_SELF?>" method="post" enctype="multipart/form-data" name="form1">
<input type="file" name="archivo" />
</form>

Soy novato en lo de PHP asi que disculpa si hice mal el codigo fuente, ademas queria decirte que el archivo a subir es de tipo texto por ejemplo.

marcelo|av. las Americas|70235265
magaly|15 de Abril|72990201
elizabeth|junin|72985675

por ejemplo esos datos se guardaran en un archivo llamado agenda.txt como ves solo tienen los datos.
Espero recibir alguna ayuda, gracias a futuro
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