Foros del Web » Programando para Internet » PHP »

Primera fila, repetir en todas las hojas????

Estas en el tema de Primera fila, repetir en todas las hojas???? en el foro de PHP en Foros del Web. Buenos dias, amigo por aqui de nuevo con una nueva duda, tengo una funcion que me genera una tabla en html, la cula funciona al ...
  #1 (permalink)  
Antiguo 07/02/2012, 09:00
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 4 meses
Puntos: 1
Primera fila, repetir en todas las hojas????

Buenos dias, amigo por aqui de nuevo con una nueva duda, tengo una funcion que me genera una tabla en html, la cula funciona al pelo, el genera un numero de fila de 50 en 50 por cada hoja, pero necesito q la primera fila (encabezado, la cula tiene: Nº, fecha, vaucher/monto y banco) se repita en todas las hojas de acuerdo a la cantidad de registro que quiero imprimir.
Como puedo lograr eso??????
aqui esta la funcion; q ya una perosona aqui en foro creo q GUSTAV me a ayudado armar
Código PHP:
private function generarTablaHTML($fecha_inicial,$fecha_final,$iniciales,$nombre,$valor,$id_usuario){
        
conexion y consulta a la BD..............
        
        
$tablaHTML '<table style="text-align: center; width: 460px; " border="1" cellspacing="0" cellpadding="0">
                              <tr>
                                  <td style=" text-align: center; width:50;">Nº</td>
        ENCABEZADO->  <td style=" text-align: center;">Fecha Deposito</td>
                                  <td style=" text-align: center;">Vaucher / Monto</td>
                                  <td style=" text-align: center; width:220;">Banco</td>
                            </tr>'
;
                
$numLinea=1;
                
$totdep=0;
                
$totdep2=0;
        foreach(
$enter_fechas as $datofecha ){
                    if(
$totdep==0) {
                        
$fecha=$datofecha['Fechadeposito']['fecha'];
                    }
                
$fecha_espa=date("d-m-Y",strtotime($datofecha['Fechadeposito']['fecha']));
                            
                        
$depo=$datofecha['Bauche'];
                        
$monto=number_format($depo['monto'],2,',''.');
                       
        
$tablaHTML .= '<tr>
                           <td style=" text-align: center; width:50;">' 
$numLinea'</td>
                           <td style=" text-align: center;">' 
$fecha_espa'</td>
                           <td><table border="1"><tr><td style=" text-align: center;">' 
$depo['num_bauche'] .'</td><td style=" text-align: right;">'.$monto.'</td></tr></table></td>';
                           
$totdep $totdep $depo['monto'];
                           
$totdep2 $totdep2 $depo['monto'];
                           
        
$tablaHTML .= '<td style=" text-align: center; width:220;">'.$datofecha['Banco']['agencia'].'</td></tr>';
        
$numLinea++;
        
            
//if($fecha != $datofecha['Fechadeposito']['fecha']) {
         //if($numLinea>50) {
       
if (($numLinea 51) == 0) {  
           
$fecha=$datofecha['Fechadeposito']['fecha'];
           
$tablaHTML .= '<tr><td ></td><td></td><td></td><td style="width:155;"><b>SUBTOTAL='.number_format($totdep,2,',''.').' Bs.</b></td></tr>';
           
$totdep=0;
           }
//if($fecha != $datofecha['Fechadeposito']['fecha'])
                    
       
        
}//fin del primer foreach foreach($datosFecha as $datofecha )
        
if($totdep<0) {
            
$tablaHTML .= '<tr><td></td><td></td><td></td><td><b>SUBTOTAL='.number_format($totdep,2,',''.').' Bs.<b></td></tr>';
        }
        if(
$totdep2>0) {
            
$tablaHTML .='<tr><td></td><td></td><td></td><td style="width:155;"><b>TOTAL='.number_format($totdep2,2,',''.').' Bs.</b></td></tr>';
        }
        
$tablaHTML .= '</table>';
        
$TOTAL=$totdep2;
        
$totalLetras=$this->num2letras(number_format($totdep2,2,'.',''));
        
        return array(
$tablaHTML,$TOTAL,$totalLetras,$fecha_final,$bancoid);
      }
    }
//fin function generarTablaHTML($fecha_inicial,$fecha_final) 
__________________
Miguel Padrón :cool:
  #2 (permalink)  
Antiguo 07/02/2012, 10:24
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Respuesta: Primera fila, repetir en todas las hojas????

por favor no insertes HTML dentro de php, usa plantillas:

Código HTML:
<table>
<?php foreach($array as $key => $value): ?>
<tr>
<td><?=$key?></td>
<td><?=$value?></td>
</tr>
<?php endforeach ?>
</table> 
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #3 (permalink)  
Antiguo 07/02/2012, 12:35
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 4 meses
Puntos: 1
Respuesta: Primera fila, repetir en todas las hojas????

Cita:
Iniciado por ZiTAL Ver Mensaje
por favor no insertes HTML dentro de php, usa plantillas:

Código HTML:
<table>
<?php foreach($array as $key => $value): ?>
<tr>
<td><?=$key?></td>
<td><?=$value?></td>
</tr>
<?php endforeach ?>
</table> 
Gracias zital por tu recomendacion, pero tal como lo tengo genera una tabla aceptable, observa:

Solo quiero q me explique como puedo colocar la primera fila (ecabezado de columna ) en todas las hojas que genera el reporte, tomare encuenta tu comentario para proximos proyectos mil gracias

__________________
Miguel Padrón :cool:
  #4 (permalink)  
Antiguo 07/02/2012, 13:35
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Respuesta: Primera fila, repetir en todas las hojas????

¿lo dices por la salida por impresora o por pantalla?

lo de la impresora lo tendrás muy dificil por no decir imposible, tendrás que calcular cuantas entradas entrar en cada hoja y hacer algo así:

entradas_por_hoja = 30
if(total_entradas%entradas_por_hoja==0)
// imprime cabecera
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #5 (permalink)  
Antiguo 07/02/2012, 14:12
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 4 meses
Puntos: 1
Respuesta: Primera fila, repetir en todas las hojas????

Cita:
Iniciado por ZiTAL Ver Mensaje
¿lo dices por la salida por impresora o por pantalla?

lo de la impresora lo tendrás muy dificil por no decir imposible, tendrás que calcular cuantas entradas entrar en cada hoja y hacer algo así:

entradas_por_hoja = 30
if(total_entradas%entradas_por_hoja==0)
// imprime cabecera
GRACIAS ZITAL POR TRATAR DE ORIENTARME, PRECISAMENTE ESE ALGORITMO LO APLICO PARA CALCULAR EL SUBTOTAL POR HOJA, SI OBSERVASTE EL CODIGO DE MI FUNCION, VERAZ ESTA PARTE:
Código PHP:
if (($numLinea 51) == 0) {  
           
$fecha=$datofecha['Fechadeposito']['fecha'];
           
$tablaHTML .= '<tr><td ></td><td></td><td></td><td style="width:155;"><b>SUBTOTAL='.number_format($totdep,2,',''.').' Bs.</b></td></tr>';
           
$totdep=0;
           }
//if($fecha != $datofecha['Fechadeposito']['fecha'])
                    
       
        
}//fin del primer foreach foreach($datosFecha as $datofecha )
        
if($totdep<0) {
            
$tablaHTML .= '<tr><td></td><td></td><td></td><td><b>SUBTOTAL='.number_format($totdep,2,',''.').' Bs.<b></td></tr>';
        }
        if(
$totdep2>0) {
            
$tablaHTML .='<tr><td></td><td></td><td></td><td style="width:155;"><b>TOTAL='.number_format($totdep2,2,',''.').' Bs.</b></td></tr>';
        }
        
$tablaHTML .= '</table>'
POR CADA HOJA EN LA FILA NUMERO 51 EL IMPRIME EL SUBTOTAL, Y CUANDO LLEGA A LA FILA FINAL (ULTIMO REGISTRO) IMPRIME EL GRAN TOTAL

TU RECOMENDACIÓN SERIA TOMAR ESE MISMA ESTRUCTURA DE ALGORITMO Y APLICASERLO A LA CABE3ZERA????
Código PHP:
$tablaHTML '<table style="text-align: center; width: 460px; " border="1" cellspacing="0" cellpadding="0">
                              <tr>
                                  <td style=" text-align: center; width:50;">Nº</td>
                                   <td style=" text-align: center;">Fecha Deposito</td>
                                  <td style=" text-align: center;">Vaucher / Monto</td>
                                  <td style=" text-align: center; width:220;">Banco</td>
                            </tr>'


SI TU RESPUESTA ES SI, COMO LO APPLICO, ASI:
$numLinea++;
entradas_por_hoja = 51
if($numLinea++;%entradas_por_hoja==0)
// imprime cabecera
$tablaHTML = '<table style="text-align: center; width: 460px; " border="1" cellspacing="0" cellpadding="0">
<tr>
<td style=" text-align: center; width:50;">Nº</td>
<td style=" text-align: center;">Fecha Deposito</td>
<td style=" text-align: center;">Vaucher / Monto</td>
<td style=" text-align: center; width:220;">Banco</td>
</tr>';
?????? pd, y SI ES SALIDA POR IMPRESORA, YA QUE EL REPORTE LO GENERO A PDF
__________________
Miguel Padrón :cool:
  #6 (permalink)  
Antiguo 07/02/2012, 14:21
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Respuesta: Primera fila, repetir en todas las hojas????

Lo que te digo es que cuando el % == 0 osea el resto de la división sea 0 pintes la cabecera ya que sabes que empieza una nueva hoja. Luego ya aplica ese algoritmo a tu código.
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #7 (permalink)  
Antiguo 07/02/2012, 14:36
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 4 meses
Puntos: 1
Respuesta: Primera fila, repetir en todas las hojas????

Cita:
Iniciado por ZiTAL Ver Mensaje
Lo que te digo es que cuando el % == 0 osea el resto de la división sea 0 pintes la cabecera ya que sabes que empieza una nueva hoja. Luego ya aplica ese algoritmo a tu código.
CREO Q ENTENDI, VOY A PROBAR, CUALQUIER FORMA REGRESO POR AQUI GRACIAS ZITAL ESPERO CONTAR CONTOGO LA PROXIOMA VEZ, AL RESOLVERLO LO POSTEO AQUI PARA OTRAS PERSONAS Q ESTEN EN ESTE MISMO PROBLEMA

__________________
Miguel Padrón :cool:
  #8 (permalink)  
Antiguo 08/02/2012, 10:08
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 4 meses
Puntos: 1
Respuesta: Primera fila, repetir en todas las hojas????

Buenas tardes, ZITAL tenia razon, coloque el codigo como me lo dijiste, quedando asi:

..................
Código PHP:
if (($numLinea 51) == 0) {  
           
$fecha=$datofecha['Fechadeposito']['fecha'];
           
$tablaHTML .= '<tr><td ></td><td></td><td></td><td style="width:155;"><b>SUBTOTAL='.number_format($totdep,2,',''.').' Bs.</b></td></tr>';
           
           
$tablaHTML .= '
                              <tr>
                                  <td style=" text-align: center; width:50;">Nº</td>
                                  <td style=" text-align: center;">Fecha Deposito</td>
                                  <td style=" text-align: center;">Vaucher / Monto</td>
                                  <td style=" text-align: center; width:220;">Banco</td>
                            </tr>'
;
           
$totdep=0;
           }
//if($fecha != $datofecha['Fechadeposito']['fecha'])
                    
       
        
}//fin del primer foreach foreach($datosFecha as $datofecha )
        
if($totdep<0) {
            
$tablaHTML .= '<tr><td></td><td></td><td></td><td><b>SUBTOTAL='.number_format($totdep,2,',''.').' Bs.<b></td></tr>';
        }
        if(
$totdep2>0) {
            
$tablaHTML .='<tr><td></td><td></td><td></td><td style="width:155;"><b>TOTAL='.number_format($totdep2,2,',''.').' Bs.</b></td></tr>';
        }
        
$tablaHTML .= '</table>'
Veras que cuando lo corro genera los siguentes:




El primero si lo obeservan dal los 50 registros por paginas en el primero perfecto con el subtotal al fina (vean las marca de colorres), pero a partir del 2do la cabezera corre, vea esto:




y




Vean las marcas de colores, el deber ser es como sale el primero


Que estoy haciendo mal
__________________
Miguel Padrón :cool:
  #9 (permalink)  
Antiguo 08/02/2012, 10:16
Avatar de ZiTAL  
Fecha de Ingreso: marzo-2004
Ubicación: Bermio (Bizkaia)
Mensajes: 1.545
Antigüedad: 20 años, 1 mes
Puntos: 62
Respuesta: Primera fila, repetir en todas las hojas????

Si te fijas en la primera página tienes de 1 a 50 en el segundo, total 49 registros.
en la segunda: del 51 a 101 por lo tanto, total 50 registros.
en la tercera: del 102 a 151 por lo tanto, total 49 registros.
etc etc

si no tienes la misma cantidad de registros en cada página...
__________________
http://zital.no-ip.org
____________________

Euskerie ahuen eta bijotzan
  #10 (permalink)  
Antiguo 08/02/2012, 12:30
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 4 meses
Puntos: 1
Respuesta: Primera fila, repetir en todas las hojas????

Cita:
Iniciado por ZiTAL Ver Mensaje
Si te fijas en la primera página tienes de 1 a 50 en el segundo, total 49 registros.
en la segunda: del 51 a 101 por lo tanto, total 50 registros.
en la tercera: del 102 a 151 por lo tanto, total 49 registros.
etc etc

si no tienes la misma cantidad de registros en cada página...
Zital, tienes razon, pero esta parte del codigo es donde controlo cuanto registro quiero por pagiana (son 50, sin contar con el encabezado y el pie, q es el subtotal por pagina):
Código PHP:
if (($numLinea 51) == 0) {  
           
$fecha=$datofecha['Fechadeposito']['fecha'];
           
$tablaHTML .= '<tr><td ></td><td></td><td></td><td style="width:155;"><b>SUBTOTAL='.number_format($totdep,2,',''.').' Bs.</b></td></tr>';
            .......................... 
LO CURIOSO ES Q SI QUITO IMPRIMIR EL ENCABEZADO DENTRO DEL CODIGO Q TE MUESTRO ARRIBA SI ME SACA LOS 50 POR PAGINA CON TODOS LOS DATOS, te muestro
la primera

la segunda


y asi sucesivamente, se desordena es cuando coloco la cabecera para q se repita la primera fila (encabezado de columna) en todas las hojas


me ayudas por favor
__________________
Miguel Padrón :cool:
  #11 (permalink)  
Antiguo 08/02/2012, 13:29
Avatar de 8461277  
Fecha de Ingreso: diciembre-2002
Ubicación: san juan de los morros
Mensajes: 887
Antigüedad: 21 años, 4 meses
Puntos: 1
Respuesta: Primera fila, repetir en todas las hojas????

Listo ZITAL lo resolvi, era en los contadores, aqui:
Código PHP:
$numLinea=1
Colocando a cero (0)
Código PHP:
$numLinea=0
Queda de lujo, gracias hermano y a todos las personas del foro, espero siempre contar con ustedes
__________________
Miguel Padrón :cool:

Etiquetas: fila, html, primera, registro, repetir, tabla, todas, usuarios
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:43.