PHP - Sumar una columna en php y fpdf

 
Vista:
Imágen de perfil de ClaudioGS
Val: 28
Ha aumentado su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

Sumar una columna en php y fpdf

Publicado por ClaudioGS (70 intervenciones) el 21/04/2015 15:24:45
Hola que tal.

Necesito agregar una suma de una columna segun condición en un reporte en php y pasarlo a pdf con fpdf.
Tengo una tabla que contiene en otros campos id_desembolso, id_complemento y monto, necesito que me sume los montos asignados a complementos y los montos asignados a suplementos, el caso es que mo se como hacerlo en fpdf.

Lo que tengo hasta ahora es lo siguiente, se me olvida un detalle, que lo tengo con MVC.

movimientos.php,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?php
require_once('fpdf.php');
 
 
class MOVIMIENTOS extends FPDF
{
    function Header()
    {
        //* Cabecera de la página
        //* Logotipo
        $this->Image(BASE_URL . 'public/img/logo.png',10,12,30,0,'',BASE_URL);
        //* Fuente
        $this->SetFont('Arial','B',18);
        //* Nos movemos a la derecha
        $this->Cell(90);
        //* Título
        $this->Cell(30,10, utf8_decode('Listado de Movimientos'),0,0,'C');
        //* Salto de línea
        $this->Ln(10);
        //**********
        //* Fuente
        $this->SetFont('Arial','',10);
 
        //* Fecha en que se genera el documento PDF (dd-mm-yy)
        $fecha = date('d-m-Y');
        $this->Cell(0,10, utf8_decode('Fecha: ' . $fecha),0,0,'R');
        $this->Ln(8);
        //* Fuente
        $this->SetFont('Arial','B',14);
        //* Subtítulo
//        $this->Cell(0,10, utf8_decode('Listado de Productos Disponibles'),0,0,'C');
//        $this->Ln();
    }
 
    function Table($header, $data)
    {
        $sumades = 0;
        $sumasup = 0;
        // Colores, ancho de línea y fuente en negrita
        $this->SetFillColor(221,221,221);
        $this->SetTextColor(0);
        $this->SetDrawColor(0,0,0);
        $this->SetLineWidth(.3);
        $this->SetFont('','B');
        // Cabecera
        $w = array(40,40, 30, 30, 50, 90);
        for($i=0;$i<count($header);$i++)
            $this->Cell($w[$i],7,$header[$i],1,0,'C',true);
        $this->Ln();
        // Restauración de colores y fuentes
        $this->SetFillColor(221,221,221);
        $this->SetTextColor(0);
        $this->SetFont('');
        // Datos
        $fill = false;
        foreach($data as $row)
        {
            if($row['id_desembolso'] > 0){
                $this->Cell($w[0],6,$row['id_desembolso']. ' ' . utf8_decode($row['desembolso']),'LR',0,'L',$fill);
            }else{
                $this->Cell($w[0],6,' ','LR',0,'L',$fill);
            }
            if($row['id_suplemento'] > 0){
                $this->Cell($w[1],6,$row['id_suplemento']. ' ' . utf8_decode($row['suplemento']),'LR',0,'L',$fill);
            }else{
                $this->Cell($w[0],6,' ','LR',0,'L',$fill);
            }
            $this->Cell($w[2],6,$row['fecha'],'LR',0,'C',$fill);
            if($row['id_desembolso'] > 0){
                $this->SetTextColor(255,3.62);
                $this->Cell($w[3],6,'$'.number_format($row['monto'],0,",","."),'LR',0,'R',$fill);
                $this->SetTextColor(0);
                $sumades = $row['monto'];
            }else{
                $this->Cell($w[3],6,'$'.number_format($row['monto'],0,",","."),'LR',0,'R',$fill);
                $sumasup = $row['monto'];
            }
            $this->Cell($w[4],6,$row['id_curso']. ' ' . utf8_decode($row['curso']),'LR',0,'L',$fill);
            $this->Cell($w[5],6,utf8_decode($row['concepto']),'LR',0,'L',$fill);
            $this->Ln();
//            $this->Cell($w[6],6,$row['SumaDesem'],'LR',0,'L',$fill);
            $fill = !$fill;
        }
        // Línea de cierre
 
        $this->Cell(array_sum($w),0,'','T');
    }
 
    function Footer()
    {
        //* Posición a 1.5cm del final del documento
        $this->SetY(-15);
        //* Fuente: Arial Italic 8
        $this->SetFont('Arial','I',8);
        //* Número de página
        $this->Cell(0,10, utf8_decode('Página: ' . $this->PageNo() . '/{nb}'),0,0,'C');
        $this->Ln(4);
    }
}

Controdor movimientosController.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public function movimientos()
    {
        //* Obtenemos los Datos para generación la tabla del PDF
        $data = $this->_modelo->getMovimientos();
 
        //* llamamos la Libreria que contiene toda la clase
        $this->getLibrary('movimientos');
        $movimientos = new MOVIMIENTOS;
 
        //* Headers
        $header = array(
            'Desembolso', 'Suplemento', 'Fecha', 'Monto', 'Curso', 'Concepto'
            );
        //* Fuente
        $movimientos->AliasNbPages();
        $movimientos->SetFont('Arial','',10);
        $movimientos->AddPage('L');
        $movimientos->Table($header, $data);
//        $pdf->Output('nombre_del_documento_pdf.pdf', 'D');
        $movimientos->Output();
    }

y el modelo, movimientosModel.php
1
2
3
4
5
6
7
public function getMovimientos()
    {
        $movimientos = $this->_db->query(
                "select m.*, d.*, s.*, c.* from movtos m, desembolsos d, suplementos s, cursos c where m.id_curso = c.id_curso"
                );
        return $movimientos->fetchAll(PDO::FETCH_ASSOC);
    }

No se como efectuar la suma, debo sumar todos los montos que sean iguales a id_complemto y todos los montos que sean igual a id_suplemento, y en que lugar ponerlos para que aparezca al final de la tabla un resumen con Total Complemento y Total Suplemento.

Cualquier ayuda o comentario es muy bien venido. de antemanos Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Sumar una columna en php y fpdf

Publicado por el chido (1 intervención) el 29/03/2018 02:34:40
andamos por las mismas compita, si alguien sabe hagalo saber me urge esta vaina
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar