Número de Carpetas por procedimiento y Año

 CREATE TABLE `carpetas` (

  `id` int(11) NOT NULL,
  `carpeta` varchar(255) NOT NULL,
  `procedimiento` varchar(250) DEFAULT NULL,
  `asignado_a` varchar(300) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;

<?php // Conectar a la base de datos $conexion = Conexion::conectar(); /*hhh-NUMERO DE CARPETAS POR AÑO Y PROCEDIMIENTO-hhh* */ // Años y procedimientos deseados $años = ['2022', '2023', '2024']; $procedimientos = ['ORDINARIO', 'PARAPROCESAL', 'ESPECIAL', 'COLECTIVO DE HUELGA', 'EXHORTO']; // Inicializar la estructura de datos $data = []; foreach ($procedimientos as $procedimiento) { $data[$procedimiento] = array_fill_keys($años, 0); } // Actualizar datos con los resultados de la consulta foreach ($resultados as $fila) { $data[$fila['procedimiento']][$fila['year']] = $fila['total']; } // Separar los datasets para Chart.js $datasets = []; foreach ($data as $procedimiento => $valores) { $datasets[] = [ 'label' => $procedimiento, 'data' => array_values($valores), 'backgroundColor' => 'rgba(54, 162, 235, 0.2)', 'borderColor' => 'rgba(54, 162, 235, 1)', 'borderWidth' => 1 ]; } ?> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Carpetas por Año</title> <!-- Incluir Chart.js desde una CDN --> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> </head> <div class="container"> <h3>Total carpetas: <?php echo $totalCarpetas; ?></h3> <h5>Número de Carpetas por Año</h5> <h1 class="mt-5">Número de Carpetas por Año y Procedimiento</h1> <canvas id="barChart-tipo" style="max-width: 800px; margin-top: 20px;"></canvas> </div>
<script>
        // Datos para la gráfica
        var data = {
            labels: ['2022', '2023', '2024'],
            datasets: [{
                label: 'Ordinario',
                data: [100, 300, 400],
                backgroundColor: 'rgba(255, 99, 132, 0.2)',
                borderColor: 'rgba(255, 99, 132, 1)',
                borderWidth: 1
            }, {
                label: 'Especial',
                data: [40, 60, 100],
                backgroundColor: 'rgba(54, 162, 235, 0.2)',
                borderColor: 'rgba(54, 162, 235, 1)',
                borderWidth: 1
            }, {
                label: 'Exhortos',
                data: [20, 30, 50],
                backgroundColor: 'rgba(255, 206, 86, 0.2)',
                borderColor: 'rgba(255, 206, 86, 1)',
                borderWidth: 1
            }]
        };

        // Opciones de la gráfica
        var options = {
            scales: {
                y: {
                    beginAtZero: true,
                    title: {
                        display: true,
                        text: 'Total de Carpetas'
                    }
                },
                x: {
                    title: {
                        display: true,
                        text: 'Año'
                    }
                }
            }
        };

        // Configuración y renderización de la gráfica
        var ctx = document.getElementById('barChart-tipo').getContext('2d');
        var myBarChart = new Chart(ctx, {
            type: 'bar',
            data: data,
            options: options
        });
    </script>

Comentarios