Foros del Web » Programando para Internet » PHP »

Generar Archivo Plano

Estas en el tema de Generar Archivo Plano en el foro de PHP en Foros del Web. Buenas amigos de este gran Foro. Tengo en una BD de MySQL una tabla llamada informacion con los siguientes capos: id_informacion (smallint(6))--> Llave Primaria nro_cuenta ...
  #1 (permalink)  
Antiguo 10/10/2007, 07:54
Avatar de capuleto  
Fecha de Ingreso: octubre-2003
Ubicación: Cartagena
Mensajes: 219
Antigüedad: 20 años, 6 meses
Puntos: 0
Generar Archivo Plano

Buenas amigos de este gran Foro.
Tengo en una BD de MySQL una tabla llamada informacion con los siguientes capos:
id_informacion (smallint(6))--> Llave Primaria
nro_cuenta (varchar(12))
nom_colegio (varchar(25))
nom_cliente (varchar(25))
cod_acudiente (varchar(16))

Me gustaria generar un archivo plano que tenga la siguiente estructura:
056400032209COLEGIO MONTESSORI CARTAGANAYA LORDUY DORIAN 0000000000010055

*Los primeros 12 caracteres son el campo nro_cuenta (posicion 1-12)
*Los caracteres del 13-37 son el campo nom_colegio (posicion 13-37)
*Los caracteres del 38-62 son el campo nom_cliente (posicion 38-62)
*Los caracteres del 63-78 son el campo cod_acudiente (posicion 63-78) y debe estar justificada por ceros a la izquierda, ya que el codigo es solo de cinco caracteres.

Como puedo generar esa estructura mediante php y MySQL o que idea me pueden dar para generarlo en esa estructura.

Quedo atento a cualquier orientación posible.
Mil Gracias como siempre.
__________________
...Definitivamente Soy Nadie entre los Sabios....*-*Capuleto*-*
  #2 (permalink)  
Antiguo 10/10/2007, 07:59
Avatar de andruqui  
Fecha de Ingreso: agosto-2007
Mensajes: 269
Antigüedad: 16 años, 8 meses
Puntos: 2
Re: Generar Archivo Plano

Yo consultaria todos los datos que me interesen guardar en el archivo, luego iterando sobre ellos y usando funciones de archivos de php, fopen, fwrite, fclose, etc voy armando el archivo plano y listo
http://www.php.net/manual/es/ref.filesystem.php

saludos
Andres
  #3 (permalink)  
Antiguo 10/10/2007, 08:04
Avatar de capuleto  
Fecha de Ingreso: octubre-2003
Ubicación: Cartagena
Mensajes: 219
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: Generar Archivo Plano

Gracias Andres por tu aporte ya me pongo en eso....cualquier duda la envio, de todas maneras me toca en los ultimos caracteres generrar ceros a la izquierda...espero su valiosas orientaciones...
__________________
...Definitivamente Soy Nadie entre los Sabios....*-*Capuleto*-*
  #4 (permalink)  
Antiguo 10/10/2007, 11:36
Avatar de capuleto  
Fecha de Ingreso: octubre-2003
Ubicación: Cartagena
Mensajes: 219
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: Generar Archivo Plano

Aun no he podido por favor si alguien me puede orientar, lo agradeceria....nos vemos..
__________________
...Definitivamente Soy Nadie entre los Sabios....*-*Capuleto*-*
  #5 (permalink)  
Antiguo 10/10/2007, 11:58
Avatar de andruqui  
Fecha de Ingreso: agosto-2007
Mensajes: 269
Antigüedad: 16 años, 8 meses
Puntos: 2
Re: Generar Archivo Plano

Que es lo que no has podido hacer?
Pudiste generar un archivo?
Los datos no quedan como vos queres ?

Para completar con 0 a la izquierda te recomiendo la funcion str_pad

SAludos
Andres
  #6 (permalink)  
Antiguo 10/10/2007, 13:23
Avatar de capuleto  
Fecha de Ingreso: octubre-2003
Ubicación: Cartagena
Mensajes: 219
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: Generar Archivo Plano

este es el scrip que estoy tratando de utilizar, al menos para que me muestre un campo despues lo voy armando como quiero...
Código PHP:
<?
$conn 
mysql_pconnect("localhost","root","");
mysql_select_db("planos"$conn);
$query "SELECT * FROM `informacion`";
$resultado mysql_query($query);
while (
$registro mysql_fetch_array($resultado)) {
$valor1 $registro['nom_colegio'];
$valorarchivo .= $valor1;
}
$f1 fopen("archivo.txt","w+")
fwrite($f1,$valorarchivo);
fclose($f1);
mysql_close($conn);
?>
y me genera este error...
Código:
Parse error: parse error, unexpected T_STRING in c:\apache\htdocs\sitios\gplanos\procesa.php on line 11
espero cualquier orientacion.
__________________
...Definitivamente Soy Nadie entre los Sabios....*-*Capuleto*-*
  #7 (permalink)  
Antiguo 10/10/2007, 15:01
Avatar de andruqui  
Fecha de Ingreso: agosto-2007
Mensajes: 269
Antigüedad: 16 años, 8 meses
Puntos: 2
Re: Generar Archivo Plano

TE falta un ";" luego de $f1 = fopen("archivo.txt","w+")

Luego funciona bien.
Saludos
Andres
  #8 (permalink)  
Antiguo 11/10/2007, 08:38
Avatar de capuleto  
Fecha de Ingreso: octubre-2003
Ubicación: Cartagena
Mensajes: 219
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: Generar Archivo Plano

Buen dia Andres...no me habia fijado lo del ";" pero bueno ya sale y le agregue un "\n"; para que me bajara la linea....pero tengo un problema...tengo los datos almacenados en la bd. en la campo cod_cliente tengo un dato de 5 caracteres, este debe salir en el archivo plano con ceros a la izquierda como se los puedo agregar automaticamente, este campo es de longuitud de 16.
Espero su valiosa orientacion....
Gracia Andres.
__________________
...Definitivamente Soy Nadie entre los Sabios....*-*Capuleto*-*
  #9 (permalink)  
Antiguo 11/10/2007, 09:06
Avatar de capuleto  
Fecha de Ingreso: octubre-2003
Ubicación: Cartagena
Mensajes: 219
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: Generar Archivo Plano

Solucionado...
Ya solucione lo de los ceros a la izquierda, ya sale en la estructura que yo quiero...
pero aqui si me ponche..al ejecutar el archivo el el navehafor no me muestra nada simplemente yo voy a la carpeta donde estoy trabajando y alli encuentro el archivo generado....¿como hago para que me salga la opcion que desea hacer guardar-abrir-cancelar?..en caso tal de que el usuariolo pueda guardar en su disco del pc????.
Espero orientaciones...
__________________
...Definitivamente Soy Nadie entre los Sabios....*-*Capuleto*-*
  #10 (permalink)  
Antiguo 11/10/2007, 09:07
Avatar de capuleto  
Fecha de Ingreso: octubre-2003
Ubicación: Cartagena
Mensajes: 219
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: Generar Archivo Plano

Se me olvido dejarles el codigo.....
Código PHP:
<?
$conn 
mysql_pconnect("localhost","root","");
mysql_select_db("planos"$conn);
$query "SELECT * FROM `informacion`";
$resultado mysql_query($query);
while (
$registro mysql_fetch_array($resultado)) {
$cod str_pad($registro['cod_acudiente'], 16"0"STR_PAD_LEFT);
$valor1 $registro['nro_cuenta'].$registro['nom_colegio'].$registro['nom_cliente'].$cod."\n";
$valorarchivo .= $valor1;
}
$f1 fopen("SEARF001","w+");
fwrite($f1,$valorarchivo);
fclose($f1);
mysql_close($conn);
?>
Como hago para que me de la opcion de guardar en el disco...esa ventanita que sale cuando uno quiere descargar un archivo??
__________________
...Definitivamente Soy Nadie entre los Sabios....*-*Capuleto*-*
  #11 (permalink)  
Antiguo 11/10/2007, 09:17
Avatar de andruqui  
Fecha de Ingreso: agosto-2007
Mensajes: 269
Antigüedad: 16 años, 8 meses
Puntos: 2
Re: Generar Archivo Plano

Algo asi te tendria que funcionar para "forzar" la descarga del archivo, tienes que cambiar el nombre de archivo y el tipo en los headers.

Código PHP:
<?

$nombre_arch 
"ejemplo.rar";

header ('Content-Disposition: attachment; filename="'.$nombre_arch.'"');
header ("Content-Type: application/rar");
readfile($nombre_arch);
header ("Content-Length: ".strlen($res->archivo));
exit;

?>
Para completar con 0 a la izquierda te recomiendo usar la funcion de php str_pad
http://www.php.net/str_pad

Saludos
Andres
  #12 (permalink)  
Antiguo 11/10/2007, 09:20
 
Fecha de Ingreso: julio-2006
Mensajes: 96
Antigüedad: 17 años, 9 meses
Puntos: 2
Re: Generar Archivo Plano

Cita:
Iniciado por capuleto Ver Mensaje
Se me olvido dejarles el codigo.....
Código PHP:
<?
$conn 
mysql_pconnect("localhost","root","");
mysql_select_db("planos"$conn);
$query "SELECT * FROM `informacion`";
$resultado mysql_query($query);
while (
$registro mysql_fetch_array($resultado)) {
$cod str_pad($registro['cod_acudiente'], 16"0"STR_PAD_LEFT);
$valor1 $registro['nro_cuenta'].$registro['nom_colegio'].$registro['nom_cliente'].$cod."\n";
$valorarchivo .= $valor1;
}
$f1 fopen("SEARF001","w+");
fwrite($f1,$valorarchivo);
fclose($f1);
mysql_close($conn);
?>
Como hago para que me de la opcion de guardar en el disco...esa ventanita que sale cuando uno quiere descargar un archivo??
lo mandas con las cabeceras header , forzas la descarga , asi mira...

Código PHP:
 <?
$conn 
mysql_pconnect("localhost","root","");
mysql_select_db("planos"$conn);
$query "SELECT * FROM `informacion`";
$resultado mysql_query($query);
while (
$registro mysql_fetch_array($resultado)) {
$cod str_pad($registro['cod_acudiente'], 16"0"STR_PAD_LEFT);
$valor1 $registro['nro_cuenta'].$registro['nom_colegio'].$registro['nom_cliente'].$cod."\n";
$valorarchivo .= $valor1;
}
$f1 fopen("SEARF001","w+");
fwrite($f1,$valorarchivo);
mysql_close($conn);
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"SEARF001\"\n");
 
fpassthru($f1);
fclose($f1);
?>
Saludos
  #13 (permalink)  
Antiguo 11/10/2007, 09:22
Avatar de andruqui  
Fecha de Ingreso: agosto-2007
Mensajes: 269
Antigüedad: 16 años, 8 meses
Puntos: 2
Re: Generar Archivo Plano

Una cosa que me quedo mal del copio y pego :)
Donde dice :
Código PHP:
header ("Content-Length: ".strlen($res->archivo)); 
No va el $res-> , ahi tienes que indicar el tam del file.

saludos
Andres
  #14 (permalink)  
Antiguo 11/10/2007, 09:46
Avatar de capuleto  
Fecha de Ingreso: octubre-2003
Ubicación: Cartagena
Mensajes: 219
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: Generar Archivo Plano

Andres no me quedo claro esa parte de codigo la debo poner antes de cerrar el archivo?...y la solucion de Jonatanlc sale pero al abrir el archivo sale con caracteres extraños..
__________________
...Definitivamente Soy Nadie entre los Sabios....*-*Capuleto*-*
  #15 (permalink)  
Antiguo 11/10/2007, 09:49
Avatar de capuleto  
Fecha de Ingreso: octubre-2003
Ubicación: Cartagena
Mensajes: 219
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: Generar Archivo Plano

Andres me sale este error despues de mostrarme los datos:
Código:
<br />
<b>Warning</b>:  Cannot add header information - headers already sent by (output started at c:\apache\htdocs\sitios\gplanos\genera_plano.php:18) in <b>c:\apache\htdocs\sitios\gplanos\genera_plano.php</b> on line <b>19</b><br />
__________________
...Definitivamente Soy Nadie entre los Sabios....*-*Capuleto*-*
  #16 (permalink)  
Antiguo 11/10/2007, 10:03
Avatar de andruqui  
Fecha de Ingreso: agosto-2007
Mensajes: 269
Antigüedad: 16 años, 8 meses
Puntos: 2
Re: Generar Archivo Plano

Eso es porque tenes salida html a pantalla antes de usar "header".
No podes tenes ninguna salida antes.

Saludos
Andres
  #17 (permalink)  
Antiguo 11/10/2007, 10:22
Avatar de capuleto  
Fecha de Ingreso: octubre-2003
Ubicación: Cartagena
Mensajes: 219
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: Generar Archivo Plano

este es el codigo que estoy usando actualmente..
Código PHP:
<? 
$conn 
mysql_pconnect("localhost","root",""); 
mysql_select_db("planos"$conn); 
$query "SELECT * FROM `informacion`"
$resultado mysql_query($query); 
while (
$registro mysql_fetch_array($resultado)) { 
$cod str_pad($registro['cod_acudiente'], 16"0"STR_PAD_LEFT); 
$valor1 $registro['nro_cuenta'].$registro['nom_colegio'].$registro['nom_cliente'].$cod."\n"
$valorarchivo .= $valor1

$f1 fopen("SEARF001","w+"); 
fwrite($f1,$valorarchivo); 
mysql_close($conn); 
fclose($f1); 
$nombre_arch "SEARF001";
header ('Content-Disposition: attachment; filename="'.$nombre_arch.'"');
header ("Content-Type: application/");
readfile($nombre_arch);
header ("Content-Length: ".strlen($res->archivo));
exit;
?>
Me podrias ubicar la respuesta anterior..
__________________
...Definitivamente Soy Nadie entre los Sabios....*-*Capuleto*-*
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:11.