Ver Mensaje Individual
  #13 (permalink)  
Antiguo 09/06/2011, 10:24
mogurbon
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 9 meses
Puntos: 155
Respuesta: Reto de ezpdf para progamadores avanzados

Lo que se necesita es planetar bien la forma del arreglo que quieres formar en el segundo while para entonces plantear una logica de como crearlo, aqui tengo una idea pero si debes plantearnos la forma del array y escibirla aqui para poder avanzar

analiza la idea , no es que asi vaya a funcionar
Código PHP:
Ver original
  1. <?php
  2.  
  3. require_once('class.ezpdf.php');
  4. $pdf =& new Cezpdf('a4');
  5. $pdf->selectFont('fonts/courier.afm');
  6. $pdf->ezSetCmMargins(1,1,1.5,1.5);
  7.  
  8. //query para traer los id de los alumnos
  9. $query = "SELECT i.id_alumno, a.nombres, a.apellido_paterno, a.apellido_materno
  10. FROM alumnos a, inscripciones i
  11. WHERE i.id_grupo = ".$_GET['idg']."
  12. AND a.id_alumno = i.id_alumno
  13. ORDER BY a.apellido_paterno";
  14. $query = mysql_query($query);
  15. if(!$query) die("Error al traer los id de los alumnos... ".mysql_error());
  16. $num_calificaciones = mysql_num_rows($query);
  17.  
  18. //query para traer el numero de clases que tiene un grupo
  19. $query3 = "SELECT h.*
  20. FROM horarios h, materias m
  21. WHERE m.id_grupo = ".$_GET[idg]."
  22. AND m.id_horario = h.id_horario";
  23. $query3 = mysql_query($query3);
  24. if(!$query3) die("Error al traer el numero de clases de este grupo... ".mysql_error());
  25. $num_1 = mysql_num_rows($query3); //num_1 es el numero de clases que tiene un grupo
  26.  
  27. //query para saber cuantas materias tiene un grupo
  28. $query4 = "SELECT id_materia
  29. FROM materias
  30. WHERE id_grupo = ".$_GET[idg];
  31. $query4 = mysql_query($query4);
  32. if(!$query4) die("Error al buscar el numero de materias de un grupo... ".mysql_error());
  33. $data4 = mysql_num_rows($query4);
  34.  
  35. //este codigo cicla a cada alumno para imprimir su boleta
  36. while($data = mysql_fetch_array($query))
  37. {
  38.  
  39.     //query para traer la boleta del alumno
  40.     $query2 = "SELECT m.nombre, m.id_materia, c.*, ma.nombres maestro, ma.apellido_paterno ap
  41.     FROM calificaciones c, materias m, maestros ma
  42.     WHERE c.id_alumno = ".$data['id_alumno']."
  43.     AND c.id_materia = m.id_materia
  44.     AND m.id_maestro = ma.id_maestro
  45.     ORDER BY c.id_materia";
  46.     $query2 = mysql_query($query2);
  47.     if(!$query2) die("Error al buscar la boleta... ".mysql_error());
  48.     $num_calificaciones = mysql_num_rows($query2);
  49.    
  50.    
  51.     $data2 = array();#el arreglo que quieres para las calificaciones debe llamarse distinto de el cursor del primer while para que no se reescriba
  52.     while($datatmp = mysql_fetch_assoc($query2)) {
  53.         #$data[] = array_merge($datatmp); esto deplano nomas no me late
  54.         array_push($data2, $row);
  55.     }
  56.     $titles = array(
  57.     'nombre'=>'<b>Materia</b>',
  58.     'parcial_1'=>'<b>Primer parcial</b>',
  59.     'parcial_2'=>'<b>Segundo parcial</b>',
  60.     'parcial_3'=>'<b>Tercer parcial</b>',
  61.     'examen_f'=>'<b>Examen Semestral</b>',
  62.     'promedio'=>'<b>promedio</b>'
  63.     );
  64.     $options = array(
  65.     'shadeCol'=>array(0.9,0.9,0.9),
  66.     'xOrientation'=>'center',
  67.     'width'=>500
  68.     );
  69.     $txttit = "<b>Preparatoria Maria Comaduran Chavez No. 4001</b>\n";
  70.     $txttit.= "Boleta de Calificaciones \n";
  71.    
  72.     $pdf->ezText($txttit, 12);
  73.     $pdf->ezTable($data2, $titles, '', $options);
  74.     $pdf->ezText("\n\n\n", 10);
  75.     unset($data2);#deshacer el arreglo para las siguientes calificaciones del alumno
  76. }
  77. $pdf->ezStream();
  78. ?>


echale una ojeada a

http://mx2.php.net/manual/es/function.array-push.php

para ver si es lo que podria servir
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo

Última edición por mogurbon; 09/06/2011 a las 10:31 Razón: le pasaba $data en lugar de $data2 a $pdf->ezTable();