Foros del Web » Programando para Internet » PHP »

PHP, FPDF y MSSQL, reporte con encabezados y pies de pagina.

Estas en el tema de PHP, FPDF y MSSQL, reporte con encabezados y pies de pagina. en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 19/08/2011, 11:04
Avatar de 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();
?>
  #2 (permalink)  
Antiguo 19/08/2011, 13:20
Avatar de lordglazoon  
Fecha de Ingreso: julio-2011
Mensajes: 54
Antigüedad: 13 años, 4 meses
Puntos: 8
Respuesta: PHP, FPDF y MSSQL, reporte con encabezados y pies de pagina.

mmmm, una opcion es que con mysql_nums_rows saques la cantidad de registros de cada consulta y pongas a mano el en el pie de pagina los numeros

Etiquetas: encabezados, fpdf, mssql, registro, reporte, sql, tabla, 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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 11:31.