Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/08/2011, 11:04
Avatar de jfhoyosm
jfhoyosm
 
Fecha de Ingreso: junio-2011
Ubicación: Bogotá, Colombia, Colombia
Mensajes: 27
Antigüedad: 13 años, 5 meses
Puntos: 3
PHP, FPDF y MSSQL, reporte con encabezados y pies de pagina.

Muy buenas amigos, me he roto la cabeza pensando en como hacer el siguiente proceso y la verdad me he cansado despues de 2 dias infructuosos.
El caso es el siguiente:
Tengo una base de datos con x cedulas, con sus respectivos nombre y apellido, y una informacion adicional por cada cedula; lo que hago es sacar unos listados por funcionario con sus debidos registros. Si los registros de el empleado pasan la hoja el proximo funcionario empieza en una nueva hoja, hasta aca todo va bien, lo que necesito es que si el funcionario se gaste dos hojas aparezcan en el pie de pagina 1/2.. 2/2; obviamente si solo gasta una aparezca 1/1. La vaina es que se imprime un lote de funcionarios y como utilizo la funcion Page(); de FPDF me imprime sobre el total de las paginas impresas (si son 3 funcionarios y cada uno gasta una hoja en vez de aparecerme 1/1 en en las tres paginas me aparece 1/3, 2/3 y 3/3). Aparte a esto si el funcionario ocupa mas de 2 hojas en cada hoja de aparecer el encabezado de la informacion del usuario, y como lo tengo en el momento solo me imprime la informacion en la primera hoja del usuario; adjunto el codigo, cualquier ayuda que me puedan brindar seria eternamente agradecida.

Código PHP:
<?php
require_once('../../scripts/sesiones/s_con.php');
require_once(
'../../reporteador/fpdf/fpdf.php');
require_once(
'../../conexiones/conexion.php');

$cajaini $_POST['cajaini'];
$cajafin $_POST['cajafin'];
$sqlconsulta =    "SELECT cedula, nombre, apellido, hojavida, caja, carpeta FROM expedientes INNER JOIN ubicacion ON cedula = expediente WHERE caja BETWEEN '$cajaini' AND '$cajafin' AND tomo = '1' ORDER BY caja, carpeta";
$querysql mssql_query($sqlconsulta);
$cedulabus mssql_fetch_assoc($querysql);

class 
PDF extends FPDF{
    function 
Header(){
    
// Logo
    
$this->Image('../../imagenes/faclogo.gif',20,10,20,23);
    
// Arial bold 15
    
$this->SetFont('Arial','B',11);
    
// Movernos a la derecha
    
$this->Cell(100);
    
// Título
    
$this->Cell(30,7,'FAC Fuerza Aerea Colombiana',0,1,'C');
    
$this->Cell(100);
    
$this->Cell(30,7,'Historia Laboral - Hoja de Control',0,1,'C');
    
$this->Cell(100);
    
// Salto de línea
    
$this->Ln(10);
}
    
// Pie de página
    
function Footer(){
        
$week_days = array("Domingo""Lunes""Martes""Miercoles""Jueves""Viernes""Sabado");
        
$monts = array("","Enero""Febrero""Marzo""Abril""Mayo""Junio""Julio""Agosto""Septiembre""Octubre""Noviembre""Diciembre");
        
$week_days_now date("w");
        
$day_now date("d");
        
$mont_now date("n");    
        
$year_now date("Y");
        
$hora date("H:i:s");
        
$date $week_days[$week_days_now].",  ".$day_now "  " ." de ".$monts[$mont_now]." de ".$year_now." - ".$hora;
        
// Posición: a 1,5 cm del final
        
$this->SetY(-12);
        
// Arial italic 8
        
$this->SetFont('Arial','I',6);
        
// Número de página
        
$this->Cell(0,10,'Pagina '.$this->PageNo().'/{nb}'.'               '.$date,0,0,'C');
    }
}

$pdf = new PDF('P','mm',array(216,279));
$pdf->SetMargins(6,10,2);
$pdf->SetAutoPageBreak('auto',10);
$pdf->AliasNbPages();

do{
    
$pdf->AddPage();
    
$cedula =  $cedulabus['cedula'];
    
$strConsulta "SELECT * FROM expedientes WHERE cedula =  '$cedula'";
    
$funcionario mssql_query($strConsulta);
    
$fila mssql_fetch_assoc($funcionario);
    
$pdf->Cell(100);
    
$pdf->SetFont('Arial','',10);
    
$pdf->Cell(30,7,'Funcionario: '.$fila['nombre'].' '.$fila['apellido'].' - Identificacion: '.$cedula,0,1,'C');
    
$pdf->Cell(230,7,'Hoja: '.$fila['hojavida'],0,0,'C');
    
// Salto de línea
    
$pdf->Ln(10);
    
    
//Encabezado Tabla
    
$pdf->SetFont('Arial','B',8);
    
$pdf->Cell(20,6,'Fecha Doc.',1,0,'C');
    
$pdf->Cell(150,6,'Tipologia',1,0,'C');
    
$pdf->Cell(10,6,'F. Ini.',1,0,'C');
    
$pdf->Cell(10,6,'F. Fin.',1,0,'C');
    
$pdf->Cell(10,6,'Total',1,0,'C');
    
$pdf->Ln();

    
//Cuerpo tabla
    
$pdf->SetFont('Arial','',7);
    
$strConsulta "SELECT registros.fecha_doc, tipologias.nombre AS tipologia, registros.nota, registros.folioinicial, registros.foliofinal, registros.numfolios FROM registros INNER JOIN tipologias ON registros.tipologia = tipologias.idtipologia WHERE registros.empleado = '$cedula' AND folioinicial != '0' ORDER BY idregistro";
    
$query mssql_query($strConsulta);
    
$row mssql_fetch_assoc($query);
    do{
        
$fecha_doc $row['fecha_doc'];
        if(
$fecha_doc == NULL){
            
$fecha_doc "SF";
        }
        
$tipologia substr(($row['tipologia']." ".$row['nota']),0,100);
        
$pdf->Cell(20,4,$fecha_doc,1,0,'C');
        
$pdf->Cell(150,4,$tipologia,1,0);
        
$pdf->Cell(10,4,$row['folioinicial'],1,0,'C');
        
$pdf->Cell(10,4,$row['foliofinal'],1,0,'C');
        
$pdf->Cell(10,4,$row['numfolios'],1,0,'C');
        
$pdf->Ln();
    }while(
$row mssql_fetch_assoc($query));
    
$pdf->Ln(5);

    
//Encabezado Doc obligatorios
    
$pdf->SetFont('Arial','B',8);
    
$pdf->Cell(200,6,'Documentos obligatorios no encontrados',0,1,'C');
    
$pdf->Cell(90,6,'Tipologia.',1,0,'C');
    
$pdf->Cell(105,6,'Observaciones',1,0,'C');
    
$pdf->Cell(5,6,' ',1,0,'C');
    
$pdf->Ln();
    
$pdf->SetFont('Arial','',7);
    
$strConsulta "SELECT * FROM expedientes WHERE cedula =  '$cedula'";
    
$funcionario mssql_query($strConsulta);
    
$fila mssql_fetch_assoc($funcionario);
    
$rango $fila['rango'];
    
//Consulta documentos obligatorios
    
$sqldoc "SELECT * FROM (SELECT idtipologia, nombre FROM tipologias WHERE $rango = 'SI') AS obligatorios LEFT OUTER JOIN (SELECT tipologia FROM registros WHERE empleado = '$cedula' AND nota != 'SIN FOTOGRAFIA') AS tipoexis ON tipoexis.tipologia = obligatorios.idtipologia WHERE tipoexis.tipologia IS NULL";
    
$querydoc mssql_query($sqldoc);
    
$rowdoc mssql_fetch_assoc($querydoc);
    do{
        
$pdf->Cell(90,4,$rowdoc['nombre'],1,0,'L');
        
$pdf->Cell(105,4,' ',1,0,'L');
        
$pdf->Cell(5,4,' ',1,0,'L');
        
$pdf->Ln();
    }while(
$rowdoc mssql_fetch_assoc($querydoc));
}while(
$cedulabus mssql_fetch_assoc($querysql));
$pdf->Output();
?>