Ver Mensaje Individual
  #11 (permalink)  
Antiguo 18/06/2015, 10:58
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 6 meses
Puntos: 320
Respuesta: Crear txt con php

Bien, el híbrido seria algo así (Ojo, tendrias que pulir algunos detalles y hacer previamente lo que te indique en el mensaje anterior):

1) Tanto en A3 como en A4 debes agregar una variable que almacene los resultados:
Código PHP:
Ver original
  1. //...
  2.             $a3_all = array();
  3.             for($j=0;$j<$afe3;$j++){
  4.                 $a3=mysql_fetch_row($prueba3);
  5.                 $a3_all[] = $a3;
  6.                 //...
En A4 es lo mismo, pero que se llame $a4_all o como tu quieras.

2)
Código PHP:
Ver original
  1. <?php
  2.     // Funcion para crear las paginas en txt.
  3.     function txt_page($template, $data)
  4.     {
  5.         $page = "";
  6.         foreach($template["fields"] as $key => $dims)
  7.         {
  8.             // Default value.
  9.             $value = (isset($data[$key]) ? $data[$key] : "");
  10.             // Length of field.
  11.             $length = $dims[1]-$dims[0];
  12.            
  13.             $page = str_pad($page, $dims[0] - 1, " ", STR_PAD_LEFT).
  14.                     str_pad(substr($value, 0, $length), $length + 1, " ", STR_PAD_BOTH);        
  15.         }
  16.        
  17.         return str_pad($page, $template["length"], " ", STR_PAD_RIGHT);        
  18.     }
  19.    
  20.    // Capturar las salidas.
  21.    ob_start();
  22.    // Procesar.
  23.    include 'archivo.php';
  24.    // Descartar las salidas.
  25.    ob_end_clean();
  26.        
  27.     // Este template lo armas luego de imprimir una hoja de prueba y de contar los caracteres correspondientes a cada campo:
  28.     $template = [
  29.         "length" => 10000,
  30.         "fields" => [
  31.             "numero" => [50, 200],
  32.             "fecha" => [250, 300],
  33.             "chapa1" => [350, 400],
  34.             "chapa2" => [450, 500],
  35.             "transporte" => [550, 600],
  36.             "domicilio_transporte" => [650, 700],
  37.             "cuit_transporte" => [750, 800],
  38.             // Etc... Agregas todos los campos y las posiciones de $a
  39.             // Ahora agregas cada renglon de $a3, que los tienes guardados en $a3_all
  40.             "razon_social_cliente_0" => [850, 900],
  41.             "razon_social_cliente_1" => [950, 1000],
  42.             // Etc.. con todos los campos de cada renglon
  43.             // Ahora agregas cada renglon de $a4, que los tienes guardados en $a4_all
  44.             "nro_remito_0" => [1050, 1100],
  45.             "nro_remito_1" => [1050, 1100],
  46.             // Etc.. con todos los campos de cada renglon
  47.         ]
  48.     ];
  49.  
  50.     // Ahora armas el mapa de datos, es decir, que variable va a cada lugar:
  51.     $data = [
  52.             "numero" => $a[0],
  53.             "fecha" => strftime("%d/%b/%Y",strtotime($a[1])),
  54.             "chapa1" => $a[3],
  55.             "chapa2" => $a[4],
  56.             "transporte" => $a2[0],
  57.             "domicilio_transporte" => $a2[2]." - ".$a2[3],
  58.             "cuit_transporte" => $a2[1],
  59.             // Etc con todos los campos de $a
  60.     ];
  61.    
  62.     // Ahora cargar todos los campos $a3
  63.     foreach($a3_all as $nro => $valores)
  64.     {
  65.         $data["razon_social_cliente_$nro"] = $valores[0];
  66.         // Etc..
  67.     }
  68.    
  69.     // Ahora cargar todos los campos $a4
  70.     foreach($a4_all as $nro => $valores)
  71.     {
  72.         $data["nro_remito_$nro"] = $valores[0];
  73.         // Etc..
  74.     }
  75.    
  76.     echo txt_page($template, $data);

Con lo cual, tu sistema actual no es alterado, y puedes usar el template txt si lo deseas.
La parte mas engorrosa es la definir el template, ya que debes imprimir una hoja y luego contar las letras, pero tiene la ventaja de que una vez tengas una hoja impresa ya no necesitas estar frente a la impresora para garantizar que un cambio funciona correctamente, el mantenimiento de esa parte te sera sumamente sencilla en el futuro.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios