Ok, trataré de explicar lo mejor posible.
¿De que se trata?
Tengo una boleta virtual donde alumnos, maestros y padres pueden ver sus calificaciones online. Pero la prepa actual donde la voy a implementar necesita que este sistema les genere en pdf las boletas para poder imprimirlas.
Un comentario
Ya tengo casi todo listo, solo tengo una pequeña falla.
Información técnica
Estoy usando php, mysql y la clase ezpdf. Las boletas las muestro mediante dos ciclos while. Utilizao arreglos para la creación de las tablas de las boletas.
¿Cual es el problema?
Me pone en cada boleta filas de datos que no van ahí, que no están en la base de datos.
Muchas gracias por su interés y su ayuda incondicional colegas ;)
Este es el link donde estoy probando:
http://prepa4001.com/boletavirtual/grupos/boletas.php?idg=1
Este es mi código:
<?php
require_once('class.ezpdf.php');
$pdf =& new Cezpdf('a4');
$pdf->selectFont('fonts/courier.afm');
$pdf->ezSetCmMargins(1,1,1.5,1.5);
//query para traer los id de los alumnos
$query = "SELECT i.id_alumno, a.nombres, a.apellido_paterno, a.apellido_materno
FROM alumnos a, inscripciones i
WHERE i.id_grupo = ".$_GET['idg']."
AND a.id_alumno = i.id_alumno
ORDER BY a.apellido_paterno";
$query = mysql_query($query);
if(!$query) die("Error al traer los id de los alumnos... ".mysql_error());
$num_calificaciones = mysql_num_rows($query);
//query para traer el numero de clases que tiene un grupo
$query3 = "SELECT h.*
FROM horarios h, materias m
WHERE m.id_grupo = ".$_GET[idg]."
AND m.id_horario = h.id_horario";
$query3 = mysql_query($query3);
if(!$query3) die("Error al traer el numero de clases de este grupo... ".mysql_error());
$num_1 = mysql_num_rows($query3); //num_1 es el numero de clases que tiene un grupo
//query para saber cuantas materias tiene un grupo
$query4 = "SELECT id_materia
FROM materias
WHERE id_grupo = ".$_GET[idg];
$query4 = mysql_query($query4);
if(!$query4) die("Error al buscar el numero de materias de un grupo... ".mysql_error());
$data4 = mysql_num_rows($query4);
//este codigo cicla a cada alumno para imprimir su boleta
while($data = mysql_fetch_array($query))
{
//query para traer la boleta del alumno
$query2 = "SELECT m.nombre, m.id_materia, c.*, ma.nombres maestro, ma.apellido_paterno ap
FROM calificaciones c, materias m, maestros ma
WHERE c.id_alumno = ".$data['id_alumno']."
AND c.id_materia = m.id_materia
AND m.id_maestro = ma.id_maestro
ORDER BY c.id_materia";
$query2 = mysql_query($query2);
if(!$query2) die("Error al buscar la boleta... ".mysql_error());
$num_calificaciones = mysql_num_rows($query2);
while($datatmp = mysql_fetch_assoc($query2)) {
$data[] = array_merge($datatmp);
}
$titles = array(
'nombre'=>'<b>Materia</b>',
'parcial_1'=>'<b>Primer parcial</b>',
'parcial_2'=>'<b>Segundo parcial</b>',
'parcial_3'=>'<b>Tercer parcial</b>',
'examen_f'=>'<b>Examen Semestral</b>',
'promedio'=>'<b>promedio</b>'
);
$options = array(
'shadeCol'=>array(0.9,0.9,0.9),
'xOrientation'=>'center',
'width'=>500
);
$txttit = "<b>Preparatoria Maria Comaduran Chavez No. 4001</b>\n";
$txttit.= "Boleta de Calificaciones \n";
$pdf->ezText($txttit, 12);
$pdf->ezTable($data, $titles, '', $options);
$pdf->ezText("\n\n\n", 10);
}
$pdf->ezStream();
?>