Comunidad de diseño web y desarrollo en internet online

FPDF repite páginas

Citar            
MensajeEscrito el 25 Abr 2014 07:38 pm
Buenas, estoy haciendo un proyecto en PHP con MySQL y quiero imprimir un informe en PDF. Para el PDF estoy usando FPDF. Pues bien, lo que quiero hacer es imprimir una página por cada árbitro que tenga que dirigir algún partido y que en esta página aparezcan los partidos que tiene asignados. Hasta ahí todo bien. El problema que tengo es que si por ejemplo tengo un árbitro que tiene asignados 2 partidos en vez se me imprimen 2 páginas con los resultados repetidos, si tiene 3 partidos se imprimen 3 páginas y así sucesivamente. El problema tiene que estar en alguno de los bucles while que uso para ir leyendo los datos de la base de datos. Dejo aquí el código que tengo.

Código PHP :

include"fpdf.php";
   include"conexion.php";
   class PDF extends FPDF{
      function Header(){
         global $sede, $localidad, $apellidos, $nombre;
         $this->Image('images/logo.jpg', 10, 5, 20);
         $this->SetFont('Arial', 'B', 15);
         $this->Cell(180);
         $this->Cell(20, 0, utf8_decode('Designaciones árbitro'), 'C');
         $this->Ln(10);
         $this->Cell(180);
         $this->SetFont('Arial', '', 12);
         $this->Cell(20, 0, utf8_decode('Nombre: ('.$sede."".$localidad.") ".$apellidos.', '.$nombre), 'C');
         $this->Ln(15);
         $this->SetFont('Arial', 'B', 22);
         $this->Cell(0,0,'',1);
         $this->Ln(1);
      }
      function Footer(){
         $this->SetY(-15);
         $this->SetFont('Arial','I',8);
         $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
      }
   }
   $pdf=new PDF('L','mm','A4');
   $pdf->AliasNbPages();
   $sql=new mysqli($servidor, $usuario, $clave, $basedatos);
   $sql->set_charset("latin1");
   if($sql->connect_error){
      echo "Error no ".$sql->connect_errno.": ".$sql->connect_error;
   }
   $r=$sql->query("SELECT COUNT(*) FROM EQUIPO_ARBITRAL");
   while($row11=$r->fetch_array()){
      $r1=$sql->query("SELECT Apellidos, Licencia FROM EQUIPO_ARBITRAL");
      while($row12=$r1->fetch_array()){
         $apellidos=$row12["Apellidos"];
         $licencia=$row12["Licencia"];
         $res=$sql->query("SELECT DISTINCT Apellidos, P1.EquipoA AS 'a1',P2.EquipoA AS 'a2',P3.EquipoA AS 'a3',P4.EquipoA AS 'a4',P5.EquipoA AS 'a5',P6.EquipoA AS 'a6', EQUIPO_ARBITRAL.Nombre ArbNom, LOCALIDAD.Nombre LocNom, SEDE.Codigo_sede FROM EQUIPO_ARBITRAL
            INNER JOIN LOCALIDAD ON EQUIPO_ARBITRAL.Cod_localidad=LOCALIDAD.Codigo_localidad INNER JOIN SEDE ON LOCALIDAD.Codigo_sede=SEDE.Codigo_sede
            LEFT JOIN PARTIDO P1 ON EQUIPO_ARBITRAL.Codigo_arbitro=P1.ArbPrin LEFT JOIN PARTIDO P2 ON EQUIPO_ARBITRAL.Codigo_arbitro=P2.ArbAux
            LEFT JOIN PARTIDO P3 ON EQUIPO_ARBITRAL.Codigo_arbitro=P3.Anotador LEFT JOIN PARTIDO P4 ON EQUIPO_ARBITRAL.Codigo_arbitro=P4.Crono
            LEFT JOIN PARTIDO P5 ON EQUIPO_ARBITRAL.Codigo_arbitro=P5.Op24 LEFT JOIN PARTIDO P6 ON EQUIPO_ARBITRAL.Codigo_arbitro=P6.Coche
            WHERE Apellidos LIKE '%$apellidos%' AND Licencia='$licencia'
            AND (P1.Jornada=$jornada OR P2.Jornada=$jornada OR P3.Jornada=$jornada OR P4.Jornada=$jornada OR P5.Jornada=$jornada OR P6.Jornada=$jornada)");
         while($row=$res->fetch_array()){
            $sede=$row["Codigo_sede"];
            $localidad=$row["LocNom"];
            $apellidos=$row["Apellidos"];
            $nombre=$row["ArbNom"];
            $a1=$row["a1"];
            $a2=$row["a2"];
            $a3=$row["a3"];
            $a4=$row["a4"];
            $a5=$row["a5"];
            $a6=$row["a6"];
            switch($localidad){
               case 'Alhaurín de la Torre': 
                  $localidad='ALT';
               break;
               case 'Alhaurín el Grande':
                  $localidad='ALG';
               break;
               case 'Málaga':
                  $sede='';
               break;
            }
            $localidad=substr($localidad, 0, 4);
            if($a1!=null or $a2!=null or $a3!=null or $a4!=null or $a5!=null or $a6!=null){
               $pdf->AddPage();
               $mysqli=new mysqli($servidor, $usuario, $clave, $basedatos);
               $mysqli->set_charset("latin1");
               if($mysqli->connect_error){
                  echo "Error no ".$mysqli->connect_errno.": ".$mysqli->connect_error;
               }
               $result=$mysqli->query("SELECT E1.Nombre EquipoA, E2.Nombre EquipoB, DATE_FORMAT(Fecha, '%d/%m/%Y') AS 'Fecha', TIME_FORMAT(Hora, '%H:%i') AS 'Hora', Abreviatura, Tipo, LOCALIDAD.Nombre Localidad, PA.Nombre Pista, PA.Codigo_pabellon, 
               CONCAT(A1.Licencia, ' ', A1.Apellidos,', ', A1.Nombre) ArbPrin, CONCAT(A2.Licencia, ' ', A2.Apellidos,', ', A2.Nombre) ArbAux, CONCAT(A3.Licencia, ' ', A3.Apellidos,', ', A3.Nombre) Anotador, CONCAT(A4.Licencia, ' ', A4.Apellidos,', ', A4.Nombre) Crono, CONCAT(A5.Licencia, ' ', A5.Apellidos,', ', A5.Nombre) Op24, CONCAT(A6.Licencia, ' ', A6.Apellidos,', ', A6.Nombre) Coche
               FROM PARTIDO P INNER JOIN EQUIPO E1 ON P.EquipoA=E1.Codigo_equipo 
               INNER JOIN EQUIPO E2 ON P.EquipoB=E2.Codigo_equipo 
               INNER JOIN PABELLON PA ON P.Codigo_pabellon=PA.Codigo_pabellon 
               INNER JOIN CATEGORIA ON P.Codigo_categoria=CATEGORIA.Codigo_categoria
               INNER JOIN LOCALIDAD ON  PA.Codigo_localidad=LOCALIDAD.Codigo_localidad
               INNER JOIN SEDE ON LOCALIDAD.Codigo_sede=SEDE.Codigo_sede
               LEFT JOIN EQUIPO_ARBITRAL A1 ON A1.Codigo_arbitro=P.ArbPrin
               LEFT JOIN EQUIPO_ARBITRAL A2 ON A2.Codigo_arbitro=P.ArbAux
               LEFT JOIN EQUIPO_ARBITRAL A3 ON A3.Codigo_arbitro=P.Anotador
               LEFT JOIN EQUIPO_ARBITRAL A4 ON A4.Codigo_arbitro=P.Crono
               LEFT JOIN EQUIPO_ARBITRAL A5 ON A5.Codigo_arbitro=P.Op24
               LEFT JOIN EQUIPO_ARBITRAL A6 ON A6.Codigo_arbitro=P.Coche
               WHERE Jornada=$jornada AND (A1.Apellidos LIKE '%$apellidos%' OR A2.Apellidos LIKE '%$apellidos%' 
               OR A3.Apellidos LIKE '%$apellidos%' OR A4.Apellidos LIKE '%$apellidos%' OR
               A5.Apellidos LIKE '%$apellidos%' OR A6.Apellidos LIKE '%$apellidos%')
               ORDER BY Fecha, Hora");
               $pdf->SetFont('Arial', 'B', 12);
               $pdf->Cell(165);
               $pdf->Cell(60,10, 'Principal');
               $pdf->Cell(60,10, 'Anotador');
               $pdf->Ln(5);
               $pdf->Cell(165);
               $pdf->Cell(60,10, 'Auxiliar');
               $pdf->Cell(60,10, 'Cronometrador');
               $pdf->Ln(5);
               $pdf->Cell(10);
               $pdf->Cell(10,10,'Encuentro');
               $pdf->Cell(40);
               $pdf->Cell(25,10, 'Fecha');
               $pdf->Cell(15,10, 'Hora');
               $pdf->Cell(30,10, 'Categoria');
               $pdf->Cell(25,10, 'Compet.');
               $pdf->Cell(10);
               $pdf->Cell(60,10, 'Coche');
               $pdf->Cell(60,10, 'Operador 24"');
               $pdf->Ln(10);
               $pdf->Cell(0,0,'',1);
               $pdf->Ln(1);
               $pdf->Cell(0,0,'',1);
               $pdf->Ln(1);
               while($row=$result->fetch_array()){
                  $pdf->SetFont('Arial', '', 10);
                  $pdf->Cell(60,10,utf8_decode(substr($row["EquipoA"], 0, 40)));
                  $pdf->Cell(25,10,$row["Fecha"]);
                  $pdf->Cell(15,10,$row["Hora"]);
                  $pdf->Cell(30,10,$row["Abreviatura"]);
                  $pdf->Cell(18,10,$row["Tipo"]);
                  $pdf->Cell(65,10,utf8_decode($row["ArbPrin"]));
                  $pdf->Cell(3);
                  $pdf->Cell(65,10,utf8_decode($row["Anotador"]));
                  $pdf->Ln(5);
                  $pdf->Cell(60,10,utf8_decode(substr($row["EquipoB"], 0, 40)));
                  $pdf->Cell(88);
                  $pdf->Cell(60,10,utf8_decode($row["ArbAux"]));
                  $pdf->Cell(8);
                  $pdf->Cell(60,10,utf8_decode($row["Crono"]));
                  $pdf->Ln(5);
                  $pdf->SetFont('Arial', 'B', 10);
                  $pdf->Cell(20,10,'Localidad: ');
                  $pdf->SetFont('Arial', '', 10);
                  $pdf->Cell(30,10,utf8_decode($row["Localidad"]));
                  $pdf->Cell(25);
                  $pdf->SetFont('Arial', 'B', 10);
                  $pdf->Cell(12,10,'Pista: ');
                  $pdf->SetFont('Arial', '', 10);
                  $pdf->Cell(30,10,utf8_decode($row["Pista"]));
                  $pdf->Cell(31);
                  $pdf->Cell(60,10,utf8_decode($row["Coche"]));
                  $pdf->Cell(8);
                  $pdf->Cell(60,10,utf8_decode($row["Op24"]));
                  $pdf->Ln(7);
                  $pdf->Cell(0,0,'',1);
                  $pdf->Ln(1);
               }
            }
         }   
      }
   }
   $pdf->Output();
   mysqli_close($mysqli);
   mysqli_close($sql);

Por misi52

0 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 Abr 2014 07:37 pm
Bueno sucede que estas creando la pagina cuando se contabilizan los partidos, en tu archivo existen 3 whiles la pagina se debería crear cuando se cuentan los árbitros no los partidos, no lei demasiado el código pero creo que la pagina la deberías agregar aquí:

Código PHP :

$r=$sql->query("SELECT COUNT(*) FROM EQUIPO_ARBITRAL");
 
while($row11=$r->fetch_array()){

$pdf->AddPage();

Por Zis

Claber

314 de clabLevel

1 tutorial

Genero:Masculino  

Bell Ville - Cordoba - Argentina

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.