Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Notice: Undefined variable: paginationInfo in C:xampphtdocstable.php on line 187
- Notice: Undefined variable: paginationCtrls in C:xampphtdocstable.php on line 188
- <?php
- class Table {
- public $connect;
- public $dbHost;
- public $dbUsername;
- public $dbPassword;
- public $dbName;
- public function __construct() {
- $this->dbHost = "localhost";
- $this->dbUsername = "root";
- $this->dbPassword = "";
- $this->dbName = "44tem";
- $this->connect = mysqli_connect(
- $this->dbHost,
- $this->dbUsername,
- $this->dbPassword,
- $this->dbName
- ) or die("Não foi possível estabelecer uma conexão ao banco de dados!");
- }
- public function generateTable(array $parameters) {
- if (array_key_exists("tableName", $parameters) && !empty($parameters["tableName"])) {
- $tableName = mysqli_real_escape_string($this->connect, $parameters["tableName"]);
- try {
- if (!mysqli_query($this->connect, "DESCRIBE $tableName")) {
- throw new Exception("Erro: a tabela informada não existe!");
- }
- } catch (Exception $e) {
- die($e->getMessage());
- }
- } else {
- die("Erro: é necessário informar o nome da tabela a ser gerada!");
- }
- if (array_key_exists("tableId", $parameters)) {
- $tableId = $parameters["tableId"];
- } else {
- die("Erro: é necessário informar o ID da tabela a ser gerada!");
- }
- if (array_key_exists("displayRows", $parameters) && !empty($parameters["displayRows"])) {
- $displayRows = $parameters["displayRows"];
- $getColumnNames = mysqli_query($this->connect, "DESCRIBE $tableName");
- $tableColumnNames = [];
- while ($column = mysqli_fetch_array($getColumnNames)) {
- if (array_key_exists($column["Field"], $displayRows)) {
- array_push($tableColumnNames, $displayRows[$column["Field"]]);
- } else if (in_array($column["Field"], $displayRows)) {
- array_push($tableColumnNames, $column["Field"]);
- }
- }
- if (empty($tableColumnNames)) {
- echo "Erro: nenhuma coluna válida foi informada!";
- }
- } else {
- die("Erro: é necessário informar no mínimo uma coluna a ser mostrada!");
- }
- if (array_key_exists("searchTerm", $parameters) && !empty($parameters["searchTerm"])) {
- $searchTerm = mysqli_real_escape_string($this->connect, $parameters["searchTerm"]);
- if (array_key_exists("searchColumn", $parameters)) {
- $searchColumn = mysqli_real_escape_string($this->connect, $parameters["searchColumn"]);
- $sql = "SELECT * FROM $tableName WHERE $searchColumn LIKE '%".$searchTerm."%'";
- } else {
- die("Erro: é necessário informar o nome da coluna de referência para buscas!");
- }
- } else {
- $sql = "SELECT * FROM $tableName";
- }
- $query = mysqli_query($this->connect, $sql);
- $totalRows = mysqli_num_rows($query);
- if (array_key_exists("tablePagination", $parameters) && !empty($parameters["tablePagination"])) {
- $tablePagination = $parameters["tablePagination"];
- if (array_key_exists("rowsPerPage", $tablePagination) && !empty($parameters["rowsPerPage"])) {
- $rowsPerPage = mysqli_real_escape_string($this->connect, $parameters["rowsPerPage"]);
- if ($rowsPerPage > $totalRows) {
- $rowsPerPage = $totalRows;
- } else if ($rowsPerPage < 1) {
- $rowsPerPage = 1;
- }
- $totalPages = ceil($totalRows / $rowsPerPage);
- if ($totalPages < 1) {
- $totalPages = 1;
- }
- if (array_key_exists("pageNumber", $parameters)) {
- $pageNumber = preg_replace(
- "#[^0-9]#",
- "",
- mysqli_real_escape_string($this->connect, $parameters["pageNumber"])
- );
- if ($pageNumber < 1) {
- $pageNumber = 1;
- } else if ($pageNumber > $totalPages) {
- $pageNumber = $totalPages;
- }
- } else {
- $pageNumber = 1;
- }
- $pageLimit = "LIMIT " . ($pageNumber - 1) * $rowsPerPage . "," . $rowsPerPage;
- if (isset($searchTerm)) {
- $sql = "SELECT * FROM $tableName WHERE $searchColumn LIKE '%".$searchTerm."%' $pageLimit";
- } else {
- $sql = "SELECT * FROM $tableName $pageLimit";
- }
- $query = mysqli_query($this->connect, $sql);
- $paginationInfo = "Total (<b>$totalRows</b>), Página <b>$pageNumber</b> de <b>$totalPages</b>";
- $paginationCtrls = "";
- if ($totalPages != 1) {
- if ($pageNumber > 1) {
- $previousPage = $pageNumber - 1;
- // Check if we aren't on the first page, and then generate the "Previous"
- $paginationCtrls .= '
- <li class="page-item" data-page="'.$previousPage.'">
- <a class="page-link">«</a>
- </li>';
- // Render clickable number links that should appear on the left of the actual page number
- for ($i = $pageNumber - 4; $i < $pageNumber; $i++) {
- if ($i > 0) {
- $paginationCtrls .= '
- <li class="page-item" data-page="'.$i.'">
- <a class="page-link">'.$i.'</a>
- </li>';
- }
- }
- }
- // Render the actual page number, but without it being a link
- $paginationCtrls .= '
- <li class="page-item active" data-page="'.$pageNumber.'">
- <a class="page-link">'.$pageNumber.'</a>
- </li>';
- // Render the clickable number links that should appear on the right of the actual page number
- for ($i = $pageNumber + 1; $i < $totalPages; $i++) {
- $paginationCtrls .= '
- <li class="page-item" data-page="'.$i.'">
- <a class="page-link">'.$i.'</a>
- </li>';
- if ($i >= $pageNumber + 4) {
- break;
- }
- }
- // This checks if we aren't on the last page, and then generate the "Next"
- if ($pageNumber != $totalPages) {
- $nextPage = $pageNumber + 1;
- $paginationCtrls .= '
- <li class="page-item" data-page="'.$nextPage.'">
- <a class="page-link">»</a>
- </li>';
- }
- }
- } else {
- $rowsPerPage = 10;
- }
- } else {
- echo "No pagination...";
- }
- // Generate the table
- echo "<table id=".$tableId.">";
- echo "<thead>";
- echo "<tr>";
- foreach ($displayRows as $tableRow) {
- echo "<th data-scope='col'>".$tableRow."</th>";
- }
- if (array_key_exists("editRows", $parameters) && $parameters["editRows"] == true) {
- echo "<th data-scope='col'>Ações</th>";
- }
- echo "</tr>";
- echo "</thead>";
- echo "<tbody>";
- while ($row = mysqli_fetch_array($query)) {
- echo "<tr>";
- foreach (array_keys($displayRows) as $tableRow) {
- if (array_key_exists($tableRow, $row)) {
- echo "<td data-label=".$displayRows[$tableRow].">".$row[$tableRow]."</td>";
- } else {
- echo "<td>---</td>";
- }
- }
- if (array_key_exists("editRows", $parameters) && $parameters["editRows"] == true) {
- echo "<td data-label='Ações'>Edit</td>";
- }
- echo "</tr>";
- }
- echo "</tbody>";
- echo "</table>";
- if (isset($tablePagination)) {
- echo "<p class='mt-3 text-center'>".$paginationInfo."</p>";
- echo "<ul class='pagination justify-content-center'>".$paginationCtrls."</ul>";
- }
- }
- }
- ?>
Add Comment
Please, Sign In to add comment