Reporte de calificaciones en fpdf con php y mysql

Actualmente estoy necesitando hacer un reporte con muchos datos de estudiantes pero cuando lo imprimo me lo manda de esta fomra como esta en la imagen de arriba y yo en realidad quiero hacer lo que esta en la imagen de abajo por medio de esta consulta y parte del codigo

$query = "SELECT N.Id_Area1, AVG(Nota) AS Nota,A.Area, AG.Asignatura, E.Nombres, E.ApellidoP, E.ApellidoM, G.Grado, C.Curso, S.Sede, I.Ind_logro, D.Desempeño
From Estudiante AS E
INNER JOIN Grado AS G ON G.Id_Grado = E.Id_Grado1
INNER JOIN Curso AS C ON C.Id_Curso = E.Id_Curso1
INNER JOIN Sede AS S ON S.Id_Sede = E.Id_Sede1
INNER JOIN Nota AS N ON N.Id_Est1 = E.Id_Est
INNER JOIN Area AS A ON A.Id_Area = N.Id_Area1
INNER JOIN Asignatura AS AG ON AG.Id_Asig = N.Id_Asig1
INNER JOIN Ind_logro AS I ON I.Id_Indlogro = N.Id_Indlogro1
INNER JOIN Desempeño AS D ON D.Id_Des = N.Id_Des1
GROUP BY N.Id_Area1";

//ORDER BY E.Nombres";

$resultado = mysqli_query($conexion, $query); //Esta linea ayudaa mostrar los datos debe recibir la conexion

$pdf = new PDF();
$pdf->AliasNbPages();
$pdf->AddPage('P');
while($row = $resultado->fetch_assoc()){
$pdf->Ln(3);
$pdf->SetFillColor(232,232,232);
$pdf->SetFont('Arial','B',14); //si colocara antes de B que es para negrita colocara U saliera subrayado
$pdf->Cell(190,5,'Datos Estudiante',1,1,'C',1);
$pdf->Ln(2);
$pdf->SetFont('Arial','B',12);
$pdf->Cell(20,5,"Nombre: " ,1,0,'C',0);
$pdf->SetX(30);
$pdf->SetFont('Arial','',12);
$pdf->Cell(170,5," ".utf8_decode($row['Nombres']).' ' .utf8_decode($row['ApellidoP']).' ' .utf8_decode($row['ApellidoM']).' '.utf8_decode($row['Grado']).' ' .utf8_decode($row['Curso']).' ' .utf8_decode($row['Sede']),1,0,'L',0);

1 respuesta

Respuesta
2

Imagino que lo que no consigues es el formato para imprimir los datos en el .pdf. En este caso, he preparado un archivo (con datos aleatorios) para que te sirva de ejemplo.

Puedes ver el resultado aquí: Ejemplo de formato para listado de calificaciones en .pdf

Doy por hecho que la consulta SQL funciona correctamente y que se trata solo de imprimir los datos resultantes con el formato que indicas. Para adaptarlo a tus necesidades, sustituye las variables con datos aleatorios por las reales con los resultados obtenidos en la consulta.

Hola siiiii excelente aporte muchísISISISISSIimas gracias..

Tengo una nueva pregunta como sería si se hace con una consulta y no con estos datos registrados en la tabla estudiantes de la base de datos  $nombres=array('Manuel','Nuria','Angela','Andrea','Ramiro','Victor','Miguel','Vanessa');

Además como podría hacer si hay asignaturas que dependen de la misma área.

por  ejemplo las asignaturas de filosofía (40%) y sociales (60%) para un total del 100% en el ÁREA DE SOCIALES 

por ejemplo el ÁREA de MÚSICA depende de dos asignaturas como son ARTÍSTICA(50%) Y MÚSICA(50%)

Como colocar esas asignaturas dentro del mismo ÁREA y que los porcentajes arrojen el desempeño 

Hola InPut Creativity, ya efectivamente con los datos y el ejemplo que me mandaste pude estructurar el reporte como yo quería ahora si me gustaría un ayuda para la parate final que no logro que me de lo preguntadoanteriormente.

Como logro sacar porcentajes a asignaturas o materias del mismo área por ejemplo

ÁREA DE HUMANIDADES esta compuesta por

Ingles 40%

Lenguaje 60%

ÁREA DE SOCIALES

     FILOSOFÍA 30%

SOCIALES 70%

Algo así pasa en muchas áreas que tienen varias asignaturas. Como existen también áreas con una sola asignatura y el valor de esa misma seria del 100%.

Y poderlas sacar por periodo

Todos los datos deben estar registrados en la base de datos, si estos son diferentes en cada alumno. Es decir, si el porcentaje de cada asignatura varía en función de cada alumno. Como no he visto tu base de datos no puedo saber si esto es así.

Pero supongo, que los porcentajes de cada asignatura dentro de un bloque serán los mismos, independientemente del alumno (siempre inglés es un 40%, lenguaje un 60%, etc.). En este caso, tal vez el dato de estos porcentajes no esté registrado en la base de datos y tienes que mostrarlo manualmente en cada iteración del bucle (while) que estrae los resultados. Para esto, puedes asignar las variables de porcentaje antes del bucle:

¿
<?php
...
// variables de porcetaje de asignaturas
$porc_filosofia=30;
$porc_sociales=70;
// etc.
...
<?

O bien, puedes usar el condicional (Switch) en cada iteración, y cuando estés mostrando el nombre de la asigatura debes añadir la variable porcentaje. En el archivo de ejemplo, sería algo así:

--
// Asignamos valores a la variable porcentaje en función del valor de $row['Asignatura']
switch ($row['Asignatura']) {
    case 'Matemáticas':
        $porcentaje= 40;
        break;
    case 'Lenguaje':
        $porcentaje= 60;
        break;
    case 'Sociales':
        $porcentaje= 70;
        break;
    --------
    default:
    $porcentaje= 100;
}
$pdf->Cell(0,2,utf8_decode($row['Asignatura']).' ('.$porcentaje.'%) - Nota: '.$row['Nota'],0,0);

¡Gracias! Ok de nuevo muchas GRACIAS permíteme y miro como hago y si no logró avanzar buscaré la manera de compartir la base datos sin ningún inconveniente...

Igual te contactare por este medio para decirte como me fue.👉

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas