Dar Formato a reporte de calificaciones en fpdf y php con bd mysql
Como Dar Formato Reporte de Calificaciones
Hace muchos meses estoy tratado hacer un reporte de calificaciones por estudiantes con fpdf desde PHP . Tengo una bd en MYSQL con todas las tablas que corresponden a la siguiente CONSULTA
$query="SELECT n.Id_Asig1,AVG(Nota) AS Nota, e.Nombres, e.ApellidoP, e.ApellidoM, e.Tipo_Doc, e.Num_Doc, e.Fecha_Nac, e.Genero,e.Foto, g.Grado, c.Curso, p.Periodo,f.Nombres_Prof, f.ApellidoP_Prof, a.Area, l.Logro FROM nota AS n
INNER JOIN estudiante AS e ON n.Id_Est1 =e.Id_Est
INNER JOIN Grado AS g ON e.Id_Grado1= g.Id_Grado
INNER JOIN Curso AS c ON e.Id_Curso1 = c.Id_Curso
INNER JOIN periodo AS p ON n.Id_Per1 = p.Id_Per
INNER JOIN profesor AS f ON n.Id_Prof1 = f.Id_Prof
INNER JOIN area AS a ON n.Id_Area1 = a.Id_Area
INNER JOIN logro AS l ON n.Id_Logro1 =l.Id_Logro
GROUP BY n.Id_Asig1";
Lo que no logro es dar formato al reporte para que me imprima cada uno de los estudiantes en el orden que corresponda y además poder sacar las notas y desempeños de los mismos según el área
Ya en algún momento me pasaron este ejemplo que agradezco muchísimo.
Pero lo hacen con datos aleatorios y/o supuestos y no logro amoldarlo a lo que en realidad necesito. Que es algo más o menos como lo presento en la imagen.
!--?php require('fpdf.php'); //Cargamos el archivo con la clase FPDF class PDF extends FPDF { // Cabecera de página function Header() { // Logo $this->Image('img/logo.png',10,8,33); //Imagen corporativa // Arial bold 15 $this->SetFont('Arial','B',15); //La "B" indica Negrita (Bold), otras opciones disponibles, por ejemplo subrayado sería U // Movernos a la derecha $this->Cell(80); // Título $This->Cell(30,10,'Reporte de calificaciones', 0,0,'C'); //La "C" indica centrado, la "R" indicaría alineado a la derecha // Salto de línea $this->Ln(20); //El número indica la distancia con la siguiente línea } // Pie de página function Footer() { // Posición: a 1,5 cm del final $this->SetY(-15); // Arial italic 8 $this->SetFont('Arial','I',8); // Observaciones $this->Cell(0,10,'Observaciones: ',0,0); // Número de página $this->Cell(0,10,'Pag.: '.$this->PageNo().'/{nb}',0,0,'R'); } } /*Datos aleatorios para el ejemplo*/ $nombres=array('Manuel','Nuria','Angela','Andrea','Ramiro','Victor','Miguel','Vanessa'); $apellidos=array('Molina','Aguirre','Cobos','Santos','Gurruchaga','Pino','Navarro','Medina'); $grados=array('1','2','3'); $cursos=array('A','B','C','D','E','F'); $habilidades=array('Hace esto muy bien','Hace aquello ni fu ni fa','Evoluciona en la materia','Sabe mucho de esto','Tiene una buena actitud','Tiene buenas aptitudes'); $asignaturas=array('Matemáticas','Lengua española','Geometría','Religión'); // Creación del objeto de la clase heredada $pdf = new PDF(); $pdf->AliasNbPages(); for($i=1;$i<=10;$i++){ //Este bucle para reproducir 10 alumnos aleatorios no es útil con los datos reales que provienen de la consulta SQL $alumno=$nombres[rand(0, 7)].' '.$apellidos[rand(0, 7)].' '.$apellidos[rand(0, 7)]; //Genero aleatoriamente nombre y apellidos $grado=$grados[rand(0, 2)]; // Genero aleatoriamente el grado del alumno $curso=$cursos[rand(0, 5)]; // Genero aleatoriamente el curso del alumno $pdf->AddPage(); // En cada interacción del bucle genero una nueva página en el pdf $pdf->SetFont('Times','',12); // Indico la fuente para la siguiente línea $pdf->Cell(4,2,'Alumno: '.$alumno); // Se imprimen los datos de cada alumno $pdf->SetX(100); //Distancia horizontal hasta siguiente bloque de texto $pdf->Cell(4,2,'Grado: '.$grado.utf8_decode('º')); // Imprimo grado $pdf->SetX(140); $pdf->Cell(4,2,'Curso: '.$curso,0,1); // Imprimo curso $pdf->Ln(7); // Salto de línea, puedo cambiar la distancia con la siguiente con el número pasado como parámetro entre paréntesis $pdf->Cell(0,2,utf8_decode('Num. Identificación').': '.$i,0,0); //Imprimo otro dato $pdf->Ln(12); $pdf->Line(12,47,200,47); // Dibujo línea horizontal. Puntos absolutos, los dos primeros definen punto de inicio, los dos siguientes punto final. $pdf->SetFont('Times','B',12); $pdf->Cell(0,2,'Materias-Asignaturas:',0,0); for($a=0;$a<4;$a++){ // Bucle para incluir las asignaturas $pdf->SetFont('Times','B',16); $pdf->Ln(12); $nota=rand(10,100)/10; // Obtengo nota aleatoria $pdf->Cell(0,2,utf8_decode($asignaturas[$a]).' ('.rand(0,100).'%) - Nota: '.$nota,0,0); // Imprimo asignatura, porcentaje y nota. $pdf->Ln(12); $pdf->SetFont('Times','B',12); $pdf->Cell(0,2,'Logros evaluados:',0,0); $pdf->Ln(7); $pdf->SetFont('Times','',12); shuffle($habilidades); // desordeno los logros del array de ejemplo $pdf->Cell(0,2,' - '.$habilidades[0],0,0); // Imprimo los logros obtenidas $pdf->Ln(7); $pdf->Cell(0,2,' - '.$habilidades[1],0,0); $pdf->Ln(7); $pdf->Cell(0,2,' - '.$habilidades[2],0,0); $pdf->Ln(7); $pdf->Cell(0,2,'_________________________________________________________________________',0,0,'C'); } } $pdf->Output(); ?-->