Foros del Web » Programando para Internet » PHP »

Archivos Tratados por medio de PHP

Estas en el tema de Archivos Tratados por medio de PHP en el foro de PHP en Foros del Web. Estoy tratando de crear un archivo en PHP de manera que las variables que escribo en el se escriban en columnas, es decir posicionar el ...
  #1 (permalink)  
Antiguo 08/11/2006, 12:19
 
Fecha de Ingreso: noviembre-2006
Ubicación: República Dominicana
Mensajes: 17
Antigüedad: 17 años, 5 meses
Puntos: 1
Archivos Tratados por medio de PHP

Estoy tratando de crear un archivo en PHP de manera que las variables que escribo en el se escriban en columnas, es decir posicionar el cursor donde quiero que se me escriban las variables y que va.. nada de nada.. fijense en la manera que lo intento:

Estructura del archivo:

Código PHP:
$nombre="02AFARR";
 
$encafech="02112006";
 
$consecutivo="0002";
 
$coco=$nombre.$encafech.$consecutivo.".txt"
Recojo de un query estos valores
Código PHP:
$tiporegistro $row["TipoRegistro"];
$rnc=$row["ClaveAgente"];
$nss=$row["NSS"];
$nombre=$row["PrimerNombre"];
$senombre=$row["SegundoNombre"];
$apellido=$row["PrimerApellido"];
$seapellido=$row["SegundoApellido"];
$cedula=$row["Cedula"];
$fechaultimopago=$row["FechaUltimoPago"]; 
luego :
Código PHP:
$archivo=fopen($coco "a+");
if (
$archivo) {
fputs ($archivo$tiporegistro);
fseek($archivo1);
fputs ($archivo$rnc);
fseek($archivo12);
fputs ($archivo$nss);
fseek($archivo21);
fputs ($archivo$nombre);
fseek($archivo61);
fputs ($archivo$senombre);
fseek($archivo101);
fputs ($archivo$apellido);
fseek($archivo141);
fputs ($archivo$seapellido);
fseek($archivo181);
fputs ($archivo$cedula);
fseek($archivo387);
fputs ($archivo$fechaultimopago."\r\n");
// despues de escribirse en el archivo los registros se retorna el carro y salta a la siguiente linea.  
fclose($archivo);
}
// cierre archivo. 
el asunto es que cada fila ha de tener 395 colunmas y las variables han de escribirse en posiciones fijas en esa longitud, como lo harian ustedes porque a mi me funciona la escritura pero las longitudes ni hablar, no entiendo que pasa?
  #2 (permalink)  
Antiguo 08/11/2006, 13:33
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 5 meses
Puntos: 4
Pues lo que puedes hacer es averiguar el tamaño de tu cadena y aumentarle los espacios que le faltan para que cumpla con ese acho que quieres poner. Mira este ejemplo:
Código PHP:
<?php
 $nombre
="02AFARR"
 
$encafech="02112006"
 
$consecutivo="0002"
 
$coco=$nombre.$encafech.$consecutivo.".txt";
$archivo fopen $coco'a+' );
if ( 
$archivo )
{
   
$name "Erik";
   
$apellido "Francisco";
   if ( 
strlen$name ) == 10 )
   {
      
fwrite$archivo$name );
   }
   else
   {
      
$tamaño strlen$name ); // con esta función obtenemos el tamaño de la cadena $nombre
      
$faltan 10 $tamaño// esto nos servirá para saber cuantos espacios le faltan a la variable para cumplir con el ancho de 10 caracteres
      
for ( $e 0$e $faltan$e++ )
      {
         
$name .= " "// insertamos los espacios que faltan para cumplir el ancho
      
}
      
fwrite$archivo$name ); // escribimos la cadena
   
}
   
fwrite$archivo$apellido );
   
fclose$archivo );
}
else
{
   echo 
"Hubo problemas para abrir o crear el archivo";
}
?>
Recuerda que sólo es un ejemplo, como vez le puse a la variable $nombre un ancho de 10 caracteres pero pueden ser los que quieras. Aunque yo preferiría escribirlos en excel para que sólo poniendo un tabular (\t) te mande a la otra selda y te evites todo este relajo. Bueno espero haberme dado a entender y que esto te haya servido por lo menos para darte una idea. Suerte
  #3 (permalink)  
Antiguo 09/11/2006, 06:20
 
Fecha de Ingreso: noviembre-2006
Ubicación: República Dominicana
Mensajes: 17
Antigüedad: 17 años, 5 meses
Puntos: 1
De acuerdo Gracias Francisco.. excelente solución...

Francisco muchisimas gracias me has dado una excelente solución y la he adaptado perfectamente, espero yo tambien poder colaborar en la medida de lo posible con todos los muchachos.. gracias
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 19:08.