-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.php
188 lines (168 loc) · 6.68 KB
/
index.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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
<?php
require_once 'database.php';
?>
<!doctype html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Sistema de Consultas</title>
<!-- CSS Bootstrap -->
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">
<!-- CSS DataTables -->
<link href="https://cdn.datatables.net/v/bs5/jszip-3.10.1/dt-1.13.6/b-2.4.2/b-colvis-2.4.2/b-html5-2.4.2/b-print-2.4.2/datatables.min.css" rel="stylesheet">
</head>
<body>
<main>
<div class="container">
<header class="d-flex align-items-center pb-2 my-2 border-bottom">
<span class="fs-4">Formulário</span>
</header>
<form action="" method="post">
<div class="row">
<div class="col-md-12 my-1">
<label for="nome">Nome:</label>
<!-- Input para preencher o nome -->
<input type="text" id="nome" name="nome" class="form-control" placeholder="Digite o nome" value="<?= $_POST["nome"] ?>"></input>
</div>
<div class="col-md-6 my-1">
<label for="sexo">Sexo:</label>
<select id="sexo" name="sexo" class="form-control">
<option disabled selected>Selecione</option>
<?php
// Array de opções do select, ele irá relembrar a opção selecionada após o submit do form
$values = array('F' => 'Feminino', 'M' => 'Masculino');
foreach($values as $val => $value) {
$selected = (!empty($_POST['sexo']) && $_POST['sexo'] == $val) ? 'selected' : '';
echo "<option value='$val' $selected>$value</option>";
}
?>
</select>
</div>
<div class="col-md-6 my-1">
<label for="cargo">Cargo:</label>
<select id="cargo" name="cargo" class="form-control">
<option disabled selected>Selecione</option>
<?php
// Array de opções do select, ele irá relembrar a opção selecionada após o submit do form
$values = array('Presidente' => 'Presidente', 'Gerente' => 'Gerente', 'Funcionário' => 'Funcionário');
foreach($values as $val => $value) {
$selected = (!empty($_POST['cargo']) && $_POST['cargo'] == $val) ? 'selected' : '';
echo "<option value='$val' $selected>$value</option>";
}
?>
</select>
</div>
<div class="col-md-12 my-2">
<button type="submit" name="submit" class="btn btn-primary">Pesquisar</button>
</div>
</div>
</form>
<?php if (isset($_POST["submit"])) {
// Faz as validações dos inputs e emite as querys
// Essa validação nos permitirá que os campos do form não sejam obrigatórios
if (!empty($_POST["nome"])) {
$nomeQuery = "nome LIKE '%{$_POST["nome"]}%'";
} else {
$nomeQuery = "nome IS NOT NULL";
}
if (!empty($_POST["sexo"])) {
$sexoQuery = " AND sexo LIKE '%{$_POST["sexo"]}%'";
} else {
$sexoQuery = " AND sexo IS NOT NULL";
}
if (!empty($_POST["cargo"])) {
$cargoQuery = " AND cargo LIKE '%{$_POST["cargo"]}%'";
} else {
$cargoQuery = " AND cargo IS NOT NULL";
}
// Realiza a busca das informações no banco de dados
try {
$db = Database::getInstance();
$con = $db->getConnection();
// Query de busca no banco de dados
$query = "SELECT * FROM db_teste.tb_teste WHERE " . $nomeQuery . $sexoQuery . $cargoQuery;
$stmt = $con->prepare($query);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOexception $error) {
// echo $query . "<br>";
die("Erro ao retornar os dados: " . $error->getMessage());
}
?>
<header class="d-flex align-items-center pb-2 my-2 border-bottom">
<span class="fs-4">Tabela</span>
</header>
<div class="row my-4">
<div class="col table-responsive">
<!-- O id da table corresponde ao id setado no código do DataTables -->
<table id="resultado" class="table table-sm table-bordered table-striped table-hover mt-4 mb-4">
<thead>
<tr>
<th scope="col">Nome</th>
<th scope="col">CPF</th>
<th scope="col">Cargo</th>
<th scope="col">Sexo</th>
<th scope="col">Telefone</th>
</tr>
</thead>
<tbody>
<?php
// Irá buscar os resultados do banco de dados através da variável $result
foreach ($result as $row) {
echo "<tr>";
echo "<td>" . $row['nome'] . "</td>";
echo "<td>" . $row['cpf'] . "</td>";
echo "<td>" . $row['cargo'] . "</td>";
echo "<td>" . $row['sexo'] . "</td>";
echo "<td>" . $row['telefone'] . "</td>";
echo "</tr>";
}
?>
</tbody>
</table>
</div>
</div>
<?php } ?>
</div>
</main>
<!-- JS JQuery -->
<script src="https://code.jquery.com/jquery-3.7.1.min.js" integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo=" crossorigin="anonymous"></script>
<!-- JS Bootstrap -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-C6RzsynM9kWDrMNeT87bh95OGNyZPhcTNXj1NW7RuBCsyN/o0jlpcV8Qyq46cDfL" crossorigin="anonymous"></script>
<!-- JS DataTables -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.7/pdfmake.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.2.7/vfs_fonts.js"></script>
<script src="https://cdn.datatables.net/v/bs5/jszip-3.10.1/dt-1.13.6/b-2.4.2/b-colvis-2.4.2/b-html5-2.4.2/b-print-2.4.2/datatables.min.js"></script>
<script>
$(document).ready(function() {
$('#resultado').DataTable({
// Ordenação da tabela pela coluna (0 = primeira coluna)
order: [[0, 'asc']],
// Quantidade de resultados a serem apresentados por página
"iDisplayLength": 25,
// Organização do layout da tabela
dom: "<'row'<'col-sm-4'B><'col-sm-4 text-center'l><'col-sm-4'f>>" +
"<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-6'i><'col-sm-6'p>>",
buttons: [
{
// Botão para download da tabela em Excel
extend: 'excelHtml5',
orientation: 'landscape',
className: 'btn btn-sm btn-success',
messageTop: 'Resultado dos Dados da Consulta'
},
{
// Botão para download da tabela em PDF
extend: 'pdfHtml5',
orientation: 'landscape',
className: 'btn btn-sm btn-primary',
messageTop: 'Resultado dos Dados da Consulta'
}
]
});
});
</script>
</body>
</html>