Banco de Dados de Produtos Educacionais Acessíveis - UFPA

Sistema para interação com um banco de dados, voltado para um sistema de gerenciamento acadêmico de Produtos Educacionais Acessíveis (PEA) de apoio e acessibilidade para pessoas com Deficiência no Ensino Superior da Universidade Federal do Pará (UFPA) e Universidade Federal Rural da Amazônia (UFRA).


config.php

Arquivo de Configuração e Conexão com banco de Dados

<?php
$host = ''; // Altere para o seu host PostgreSQL
$db   = ''; // Altere para o seu banco de dados PostgreSQL
$user = ''; // Altere para o seu usuário PostgreSQL
$pass = ''; // Altere para a sua senha PostgreSQL
$charset = '';

$dsn = "pgsql:host=$host;dbname=$db";
$options = [
    PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES   => false,
];

try {
    $pdo = new PDO($dsn, $user, $pass, $options);
} catch (\\PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
    exit;
}

return $pdo;
?>

Dashboard.html

<!DOCTYPE html>
<html lang="pt-BR">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Dashboard - BPEA</title>

        <style>
            .hidden {
                display: none;
            }
        </style>

        <link rel="stylesheet" href="<https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css>">
        <script src="<https://code.jquery.com/jquery-3.7.1.min.js>" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
        <script src="<https://unpkg.com/@popperjs/core@2>"></script>
        <script src="<https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js>"></script>
    </head>
    
    <body>
        
        <div class="text-center">
            <br>
            <img src="/logo.png" alt="Logo BPEA" width="200" height="200"><br>
            <br>
            <h1>BPEA - UFPA</h1>
            <p>Banco de Dados de Produtos Educacionais Acessíveis - UFPA</p>
            <hr>
            <br>
            <p><a href="/Upload.php" class="btn btn-primary">Cadastrar Material</a>
            <a href="/pesquisa.php" class="btn btn-primary">Consultar Material</a></p>           
               
        </div>
        <br><br>
    
        
        <nav class="text-center">
            <a href="/index.php" class="btn btn-danger">Sair</a>
        </nav>

    </body>
</html>

LoginAction.php

<?php
session_start();

include 'config.php';

$email = $_POST['email'];
$password = $_POST['password'];

$sql = "SELECT * FROM usuario WHERE email = :email";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':email', $email);
$stmt->execute();

$user = $stmt->fetch(PDO::FETCH_ASSOC);

if ($user && password_verify($password, $user['password'])) {
    $_SESSION['user_id'] = $user['id'];
    header("Location: Dashboard.html");
    exit;
} else {
    header("Location: login.php?error=invalid_credentials");
    exit;
}

pesquisa.php

<!DOCTYPE html>
<html lang="pt-BR">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Consulta - BPEA</title>

        <style>
            .hidden {
                display: none;
            }
        </style>

        <link rel="stylesheet" href="<https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css>">
        <script src="<https://code.jquery.com/jquery-3.7.1.min.js>" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
        <script src="<https://unpkg.com/@popperjs/core@2>"></script>
        <script src="<https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js>"></script>
    </head>

    <body class="text-center">

        <div class="text-center">
            
            <img src="/logo.png" alt="Logo BPEA" width="200px" height="200px">
            <h1>BPEA - UFPA</h1>
            <p>Banco de Dados de Produtos Educacionais Acessíveis - UFPA</p>
            <hr><br><br>
            

            <?php $pdo = include 'config.php'; ?>
            <?php error_reporting(E_ERROR | E_PARSE); ?>

            <?php
                $sql = 'SELECT * FROM "pea" ORDER BY titulo ASC';
                $titulo = $_GET['titulo'];

                if(!is_null($titulo) && !empty($titulo)) 
                    $sql = "SELECT * FROM \\"pea\\" WHERE titulo LIKE '".$titulo."' ORDER BY titulo ASC";

                $qry = $pdo->query($sql);
                $count = $qry->rowCount();
                $qry->execute();
                $data = $qry->fetchAll(PDO::FETCH_ASSOC);
            ?>

            <h1> Consulta de Materiais </h1>
        </div>
        
        <div class="form-group d-flex justify-content-center">
                <form method="get">
                    <div class="col-lg-3">
                        <div class="form-group">
                            <br>
                            <input class="w-auto p-3" id="titulo" placeholder="Título do PEA" name="titulo" value="<?= $titulo ?? "" ?>">
                        </div>
                    </div>
        
                  
                    <button type="submit" class="btn btn-info" style="margin-top: 24;">Buscar</button><br><br><hr>
        </div>
                </form>
                    <div class="form-group d-flex justify-content-center">
                        <?php
                            if(!is_null($titulo) && !empty($titulo)) {
                                if($count > 0) {
                                    echo 'Encontrado registros com o título ' . $titulo;
                        ?>
                    </div>
                                
                                    <table class="table table-striped">
                                      <thead>
                                        <th>Título</th>
                                        <th>Formato</th>
                                        <th>Recursos de Acessibilidade</th>
                                        <th>Tipo de Deficiência</th>
                                        <th>Uso</th>
                                      </thead>
            
                                      <tbody>
                                        <?php foreach($data as $row): ?>
                                          <tr>
                                            <td><?php echo $row['titulo']; ?></td>
                                            <td><?php echo $row['formato']; ?></td>
                                            <td><?php echo $row['acc_resources']; ?></td>
                                            <td><?php echo $row['tipo_de_deficiencia']; ?></td>
                                            <td><?php echo $row['uso']; ?></td>
                                          </tr>
                                        <?php endforeach; ?>
                                      </tbody>
                                </table>
                    </div>
        </div>
        <div>
            
            <a href="resultado.php?titulo=<?= urlencode($titulo) ?>" class="btn btn-info" >Ver resultados completos</a><br><br><br>    
        </div>
        <?php }  
            else {
                    echo 'Nenhum registro foi encontrado com o título ' . $titulo;
                }
            }
        ?> 
</div>
</div>
<nav class="text-center">
 <p></p><a href="/Dashboard.html" class="btn btn-primary">Retornar ao início</a>
  <a href="/Upload.php" class="btn btn-primary">Cadastrar Material</a>
  <a href="/index.php" class="btn btn-danger">Sair</a></p>  
</nav>
    </body>
</html>


resultado.php

<!DOCTYPE html>
<html lang="pt-BR">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Resultados - BPEA</title>

        <style>
            .hidden {
                display: none;
            }
        </style>

        <link rel="stylesheet" href="<https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css>">
        <script src="<https://code.jquery.com/jquery-3.7.1.min.js>" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
        <script src="<https://unpkg.com/@popperjs/core@2>"></script>
        <script src="<https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js>"></script>
    </head>

    <body>
        <div class="text-center">
            <img src="/logo.png" alt="Logo BPEA" width="200px" height="200px">
            <h1>BPEA - UFPA</h1>
            <p>Banco de Dados de Produtos Educacionais Acessíveis - UFPA</p>
            <hr>
            <br>

            <?php
            include 'config.php';
            
            $id = isset($_GET['id']) ? $_GET['id'] : null;
            
            $stmt = $pdo->prepare("SELECT * FROM PEA WHERE id = :id");
            $stmt->execute(['id' => $id]); 
            $data = $stmt->fetch();
            
            if ($data) {
            ?>
            
            <!DOCTYPE html>
            <html lang="pt-BR">
            <head>
                <meta charset="UTF-8">
                <title>Detalhes do Registro</title>
            </head>
            <body>
                <h1>Detalhes do Registro</h1>
            
                <p><strong>Título:</strong> <?php echo $data['titulo']; ?></p>
                <p><strong>Formato:</strong> <?php echo $data['formato']; ?></p>
                <p><strong>Recurso de Acessibilidade:</strong> <?php echo $data['acc_resources']; ?></p>
                <p><strong>Tipo de Deficiência:</strong> <?php echo $data['tipo_de_deficiencia']; ?></p>
                <p><strong>Arquivo:</strong> <a href="<?php echo $data['local']; ?>" target="_blank">Visualizar</a> <a href="<?php echo $data['local']; ?>" download>Baixar</a></p>
                <p><strong>Uso:</strong> <?php echo $data['uso']; ?></p>
                <p><strong>Fonte Original:</strong> <?php echo $data['fonte_original']; ?></p>
                <p><strong>Área de Conhecimento:</strong> <?php echo $data['id_categoria']; ?></p>
                <p><strong>Descrição:</strong> <?php echo $data['descricao']; ?></p>
            
            
                <a href="Dashboard.html">Voltar</a>
            </body>
            </html>
            
            <?php
                } 
            
            
            
                $sql = 'SELECT * FROM "pea" ORDER BY titulo ASC';
                $titulo = $_GET['titulo'];
            
                if(!is_null($titulo) && !empty($titulo)) 
                    $sql = "SELECT * FROM \\"pea\\" WHERE titulo LIKE '".$titulo."' ORDER BY titulo ASC";
            
                $qry = $pdo->query($sql);
                $count = $qry->rowCount();
                $qry->execute();
                $data = $qry->fetchAll(PDO::FETCH_ASSOC);
            ?>
            
            <h3 style="
                text-align: center;
                height: 7;
                margin-top: 150;
                margin-bottom:70;
            "> Resultados da Consulta de PEA </h3>
            <p>Não Atualize essa página!!</p>
            <br><br>
            
            <?php
                if(!is_null($titulo) && !empty($titulo)) {
                    if($count > 0) {
                        echo 'Encontrado registros com o título ' . $titulo;?>   
                    <div>
                        <table class="table table-striped">
                            <thead>
                              <th>Título</th>
                              <th>Formato</th>
                              <th>Recurso de Acessibilidade</th>
                              <th>Tipo de Deficiência</th>
                              <th>Arquivo</th>
                              <th>Uso</th>
                              <th>Fonte Original</th>
                              <th>Área de Conhecimento</th>
                              <th>Descrição</th>
                            </thead>
            
                            <tbody>
                                <?php foreach($data as $row): ?>
                                    <tr>
                                        <td><?php echo $row['titulo']; ?></td>
                                        <td><?php echo $row['formato']; ?></td>
                                        <td><?php echo $row['acc_resources']; ?></td>
                                        <td><?php echo $row['tipo_de_deficiencia']; ?></td>
                                        <td>
                                            <a href="<?php echo $row['local']; ?>" target="_blank">Visualizar</a>
                                            <a href="<?php echo $row['local']; ?>" download>Baixar</a>
                                        </td>
                                        <td><?php echo $row['uso']; ?></td>
                                        <td><?php echo $row['fonte_original']; ?></td>
                                        <td><?php echo $row['id_categoria']; ?></td>
                                        <td><?php echo $row['descricao']; ?></td>
                                    </tr>
                                <?php endforeach; ?>
                            </tbody>
                        </table>     
                    </div>
            <?php }  
                else {
                        echo 'Nenhum registro foi encontrado com o título ' . $titulo; }}?>
            
            <br>
                    </div>
                </div>
            </div>
        </div> 
        </div>
        <nav class="text-center"><br><br
         <p>
            <a href="/pesquisa.php" class="btn btn-primary">Nova Consulta</a>
            <a href="/Upload.php" class="btn btn-primary">Cadastrar Material</a>
            <a href="/Dashboard.html" class="btn btn-secondary">Retornar ao início</a>
            <a href="/index.php" class="btn btn-danger">Sair</a>             
         </p>  
        </nav>
    </body>
</html>