BossBey File Manager
PHP:
8.4.18
OS:
Linux
User:
kids
Root
/
home
/
kids
/
public_html
/
app
📤 Upload
📝 New File
📁 New Folder
Close
Editing: relatoriocompleto_total.php
<?php session_start(); require_once "connection.php"; // Verificar se o ID do aluno foi recebido via POST if (isset($_POST['id_aluno'])) { $id_aluno = $_POST['id_aluno']; } else { echo "ID do aluno não fornecido."; exit(); } try { $sql = "SELECT relatorio.*, professor.nome as nome_professor, responsavel.nome as nome_responsavel, aluno.nome as nome_aluno FROM acessoFicha INNER JOIN aluno ON acessoFicha.id_aluno = aluno.id INNER JOIN professor ON acessoFicha.id_professor = professor.id INNER JOIN responsavel ON acessoFicha.id_responsavel = responsavel.id INNER JOIN relatorio ON relatorio.id_acessoFicha = acessoFicha.id_acesso_aluno WHERE aluno.id = :id_aluno ORDER BY relatorio.ano DESC, relatorio.mes DESC"; $stmt = $pdo->prepare($sql); $stmt->bindParam(':id_aluno', $id_aluno, PDO::PARAM_INT); $stmt->execute(); $relatorios = $stmt->fetchAll(PDO::FETCH_ASSOC); if (empty($relatorios)) { echo "Nenhum relatório encontrado para este aluno."; exit(); } } catch (PDOException $e) { echo "Erro na conexão: " . $e->getMessage(); exit(); } // Fetch parametros $parametros = array(); try { $sqlp = "SELECT *, id as id_parametro FROM parametros"; $stmt1 = $pdo->prepare($sqlp); $stmt1->execute(); if ($stmt1->rowCount() > 0) { while ($row1 = $stmt1->fetch(PDO::FETCH_ASSOC)) { $parametros[] = $row1; } } } catch (PDOException $e) { echo "Erro na conexão: " . $e->getMessage(); exit(); } ?> <!DOCTYPE html> <html lang="pt-BR"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Relatórios Completos de Aluno</title> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet"> <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.4.0/jspdf.umd.min.js"></script> <style> .justificado { text-align: justify; } .relatorio-container { margin-bottom: 50px; border: 1px solid #ddd; padding: 20px; border-radius: 8px; background-color: #f9f9f9; } </style> </head> <body> <div class="container mt-5" id="content"> <?php foreach ($relatorios as $relatorio): ?> <div class="relatorio-container"> <h1>Relatório de: <?= htmlspecialchars($relatorio['nome_aluno']) ?> - <?= htmlspecialchars($relatorio['mes']) ?>/<?= htmlspecialchars($relatorio['ano']) ?></h1> <div class="jumbotron"> <p class="justificado">Objetivos Gerais: <?= htmlspecialchars($relatorio['obj']) ?></p> </div> <?php $habilidades = array( "Habilidades Sociais e Afetivas" => array(12, 21), "Habilidades de Comunicação" => array(8, 11), "Habilidades Cognitivas" => array(1, 7), "Habilidades Motoras" => array(33, 40), "Habilidades Gerais" => array(22, 32) ); $somaHabilidadesSociais = 0; $somaHabilidadesComunicacao = 0; $somaHabilidadesCognitivas = 0; $somaHabilidadesMotoras = 0; $somaHabilidadesGerais = 0; $porcentagemHabSoc100 = 0; $porcentagemHabCom40 = 0; $porcentagemHabCog70 = 0; $porcentagemHabMot80 = 0; $porcentagemHabGer110 = 0; echo '<div class="accordion" id="accordionExample_' . $relatorio['id'] . '">'; $index = 0; foreach ($habilidades as $habilidade => $range) { echo '<div class="card"> <div class="card-header" id="heading' . $relatorio['id'] . '_' . $index . '"> <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapse' . $relatorio['id'] . '_' . $index . '" aria-expanded="true" aria-controls="collapse' . $relatorio['id'] . '_' . $index . '">' . $habilidade . '</button> </div> <div id="collapse' . $relatorio['id'] . '_' . $index . '" class="collapse show" aria-labelledby="heading' . $relatorio['id'] . '_' . $index . '" data-parent="#accordionExample_' . $relatorio['id'] . '"> <div class="card-body">'; for ($i = $range[0] - 1; $i < $range[1]; $i++) { $nota = $relatorio['q' . ($i + 1)]; echo '<div class="row"> <div class="col-md-8"> <p>' . htmlspecialchars($parametros[$i]['numero']) . ' - ' . htmlspecialchars($parametros[$i]['pergunta']) . '</p>'; if ($nota == 0) { echo '<p> NÃO SE APLICA </p>'; } elseif ($nota >= 1 && $nota <= 3) { echo '<p>' . htmlspecialchars($parametros[$i]['I']) . '</p>'; } elseif ($nota >= 4 && $nota <= 6) { echo '<p>' . htmlspecialchars($parametros[$i]['R']) . '</p>'; } elseif ($nota >= 7 && $nota <= 8) { echo '<p>' . htmlspecialchars($parametros[$i]['B']) . '</p>'; } elseif ($nota >= 9 && $nota <= 10) { echo '<p>' . htmlspecialchars($parametros[$i]['MB']) . '</p>'; } echo '</div> <div class="col-md-4"> <p>'; if ($nota == 0) { echo 'NÃO SE APLICA'; } elseif ($nota >= 1 && $nota <= 3) { echo 'Nível Alcançado: ' . $nota . ' - Insuficiente (' . htmlspecialchars($relatorio['mes']) . '/' . htmlspecialchars($relatorio['ano']) . ')'; } elseif ($nota >= 4 && $nota <= 6) { echo 'Nível Alcançado: ' . $nota . ' - Regular (' . htmlspecialchars($relatorio['mes']) . '/' . htmlspecialchars($relatorio['ano']) . ')'; } elseif ($nota >= 7 && $nota <= 8) { echo 'Nível Alcançado: ' . $nota . ' - Bom (' . htmlspecialchars($relatorio['mes']) . '/' . htmlspecialchars($relatorio['ano']) . ')'; } elseif ($nota >= 9 && $nota <= 10) { echo 'Nível Alcançado: ' . $nota . ' - Muito Bom (' . htmlspecialchars($relatorio['mes']) . '/' . htmlspecialchars($relatorio['ano']) . ')'; } echo '</p> <div class="progress">'; if ($nota >= 1 && $nota <= 3) { $colorClass = 'bg-danger'; } elseif ($nota >= 4 && $nota <= 6) { $colorClass = 'bg-warning'; } elseif ($nota >= 7 && $nota <= 8) { $colorClass = 'bg-info'; } elseif ($nota >= 9 && $nota <= 10) { $colorClass = 'bg-success'; } else { $colorClass = ''; // Caso a nota esteja fora dos intervalos especificados } if ($habilidade == "Habilidades Sociais e Afetivas") { $somaHabilidadesSociais += $nota; if ($nota > 0) { $porcentagemHabSoc100 += 10; } } elseif ($habilidade == "Habilidades de Comunicação") { $somaHabilidadesComunicacao += $nota; if ($nota > 0) { $porcentagemHabCom40 += 10; } } elseif ($habilidade == "Habilidades Cognitivas") { $somaHabilidadesCognitivas += $nota; if ($nota > 0) { $porcentagemHabCog70 += 10; } } elseif ($habilidade == "Habilidades Motoras") { $somaHabilidadesMotoras += $nota; if ($nota > 0) { $porcentagemHabMot80 += 10; } } elseif ($habilidade == "Habilidades Gerais") { $somaHabilidadesGerais += $nota; if ($nota > 0) { $porcentagemHabGer110 += 10; } } echo '<div class="progress-bar ' . $colorClass . '" role="progressbar" style="width: ' . ($nota / 10 * 100) . '%;" aria-valuenow="' . $nota . '" aria-valuemin="1" aria-valuemax="10"></div>'; echo '</div> </div> </div></br>'; } echo '</div> </div> </div>'; $index++; } echo '</div>'; // Close the accordion ?> <br/><div class="jumbotron text-center"> <p class="justificado">Observações Gerais: <?= htmlspecialchars($relatorio['obs']) ?></p> <br/><h5><p>O Gráfico a seguir mostra a porcentagem atingida de cada Área Avaliada, sendo 100% a pontuação máxima</h5></p> <div style="width: 80%; margin: 0 auto;"> <canvas id="polarChart_<?= $relatorio['id'] ?>"></canvas> </div> </div> <?php // Calcular porcentagens $ints = $porcentagemHabSoc100 ? round(($somaHabilidadesSociais / $porcentagemHabSoc100) * 100) : 0; $intcom = $porcentagemHabCom40 ? round(($somaHabilidadesComunicacao / $porcentagemHabCom40) * 100) : 0; $intcog = $porcentagemHabCog70 ? round(($somaHabilidadesCognitivas / $porcentagemHabCog70) * 100) : 0; $intm = $porcentagemHabMot80 ? round(($somaHabilidadesMotoras / $porcentagemHabMot80) * 100) : 0; $intg = $porcentagemHabGer110 ? round(($somaHabilidadesGerais / $porcentagemHabGer110) * 100) : 0; $labels = array(); if ($ints > 0) { $labels[] = "Habilidades Sociais e afetivas"; } if ($intcom > 0) { $labels[] = "Habilidades de comunicação"; } if ($intcog > 0) { $labels[] = "Habilidades cognitivas"; } if ($intm > 0) { $labels[] = "Habilidades motoras"; } if ($intg > 0) { $labels[] = "Habilidades Gerais"; } $labelsString = implode(", ", array_map(function($label) { return '"' . $label . '"'; }, $labels)); $values = array(); if ($ints > 0) { $values[] = $ints; } if ($intcom > 0) { $values[] = $intcom; } if ($intcog > 0) { $values[] = $intcog; } if ($intm > 0) { $values[] = $intm; } if ($intg > 0) { $values[] = $intg; } $dataString = implode(',', $values); ?> <script> var ctx_<?= $relatorio['id'] ?> = document.getElementById('polarChart_<?= $relatorio['id'] ?>').getContext('2d'); var data_<?= $relatorio['id'] ?> = { labels: [<?= $labelsString ?>], datasets: [{ data: [<?= $dataString ?>], backgroundColor: [ 'rgba(75, 192, 192, 0.2)', 'rgba(255, 99, 132, 0.2)', 'rgba(54, 162, 235, 0.2)', 'rgba(255, 206, 86, 0.2)', 'rgba(153, 102, 255, 0.2)' ], borderColor: [ 'rgba(75, 192, 192, 1)', 'rgba(255, 99, 132, 1)', 'rgba(54, 162, 235, 1)', 'rgba(255, 206, 86, 1)', 'rgba(153, 102, 255, 1)' ], borderWidth: 2 }] }; var options_<?= $relatorio['id'] ?> = { scale: { ticks: { beginAtZero: true, max: 100, callback: function(value) { return value + '%'; } } }, plugins: { datalabels: { color: 'black', font: { weight: 'bold' }, formatter: function(value, context) { return value + '%'; } } } }; var polarChart_<?= $relatorio['id'] ?> = new Chart(ctx_<?= $relatorio['id'] ?>, { type: 'polarArea', data: data_<?= $relatorio['id'] ?>, options: options_<?= $relatorio['id'] ?> }); </script> <div class="modal-footer"> <a href="edita_relatorio.php?id=<?= htmlspecialchars($relatorio['id']) ?>" class="btn btn-primary">Editar</a> <a href="imprimir.php?id=<?= htmlspecialchars($relatorio['id']) ?>" class="btn btn-primary">Imprimir</a> </div> </div> <?php endforeach; ?> </div> <script> // A função de impressão de PDF precisaria ser adaptada para cada relatório individualmente ou para imprimir todos de uma vez. // Por simplicidade, removi o botão de impressão de PDF global, pois ele precisaria de uma lógica mais complexa para múltiplos relatórios. // Se precisar de impressão de PDF para cada relatório, adicione um botão dentro do loop foreach e adapte a lógica. </script> <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script> </body> </html>
Save
Cancel