Guest User

Untitled

a guest
Jan 13th, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.73 KB | None | 0 0
  1. Notice: Undefined variable: paginationInfo in C:xampphtdocstable.php on line 187
  2.  
  3. Notice: Undefined variable: paginationCtrls in C:xampphtdocstable.php on line 188
  4.  
  5. <?php
  6. class Table {
  7. public $connect;
  8. public $dbHost;
  9. public $dbUsername;
  10. public $dbPassword;
  11. public $dbName;
  12.  
  13. public function __construct() {
  14. $this->dbHost = "localhost";
  15. $this->dbUsername = "root";
  16. $this->dbPassword = "";
  17. $this->dbName = "44tem";
  18. $this->connect = mysqli_connect(
  19. $this->dbHost,
  20. $this->dbUsername,
  21. $this->dbPassword,
  22. $this->dbName
  23. ) or die("Não foi possível estabelecer uma conexão ao banco de dados!");
  24. }
  25.  
  26. public function generateTable(array $parameters) {
  27. if (array_key_exists("tableName", $parameters) && !empty($parameters["tableName"])) {
  28. $tableName = mysqli_real_escape_string($this->connect, $parameters["tableName"]);
  29. try {
  30. if (!mysqli_query($this->connect, "DESCRIBE $tableName")) {
  31. throw new Exception("Erro: a tabela informada não existe!");
  32. }
  33. } catch (Exception $e) {
  34. die($e->getMessage());
  35. }
  36. } else {
  37. die("Erro: é necessário informar o nome da tabela a ser gerada!");
  38. }
  39. if (array_key_exists("tableId", $parameters)) {
  40. $tableId = $parameters["tableId"];
  41. } else {
  42. die("Erro: é necessário informar o ID da tabela a ser gerada!");
  43. }
  44. if (array_key_exists("displayRows", $parameters) && !empty($parameters["displayRows"])) {
  45. $displayRows = $parameters["displayRows"];
  46. $getColumnNames = mysqli_query($this->connect, "DESCRIBE $tableName");
  47. $tableColumnNames = [];
  48. while ($column = mysqli_fetch_array($getColumnNames)) {
  49. if (array_key_exists($column["Field"], $displayRows)) {
  50. array_push($tableColumnNames, $displayRows[$column["Field"]]);
  51. } else if (in_array($column["Field"], $displayRows)) {
  52. array_push($tableColumnNames, $column["Field"]);
  53. }
  54. }
  55. if (empty($tableColumnNames)) {
  56. echo "Erro: nenhuma coluna válida foi informada!";
  57. }
  58. } else {
  59. die("Erro: é necessário informar no mínimo uma coluna a ser mostrada!");
  60. }
  61. if (array_key_exists("searchTerm", $parameters) && !empty($parameters["searchTerm"])) {
  62. $searchTerm = mysqli_real_escape_string($this->connect, $parameters["searchTerm"]);
  63. if (array_key_exists("searchColumn", $parameters)) {
  64. $searchColumn = mysqli_real_escape_string($this->connect, $parameters["searchColumn"]);
  65. $sql = "SELECT * FROM $tableName WHERE $searchColumn LIKE '%".$searchTerm."%'";
  66. } else {
  67. die("Erro: é necessário informar o nome da coluna de referência para buscas!");
  68. }
  69. } else {
  70. $sql = "SELECT * FROM $tableName";
  71. }
  72. $query = mysqli_query($this->connect, $sql);
  73. $totalRows = mysqli_num_rows($query);
  74. if (array_key_exists("tablePagination", $parameters) && !empty($parameters["tablePagination"])) {
  75. $tablePagination = $parameters["tablePagination"];
  76. if (array_key_exists("rowsPerPage", $tablePagination) && !empty($parameters["rowsPerPage"])) {
  77. $rowsPerPage = mysqli_real_escape_string($this->connect, $parameters["rowsPerPage"]);
  78. if ($rowsPerPage > $totalRows) {
  79. $rowsPerPage = $totalRows;
  80. } else if ($rowsPerPage < 1) {
  81. $rowsPerPage = 1;
  82. }
  83. $totalPages = ceil($totalRows / $rowsPerPage);
  84. if ($totalPages < 1) {
  85. $totalPages = 1;
  86. }
  87. if (array_key_exists("pageNumber", $parameters)) {
  88. $pageNumber = preg_replace(
  89. "#[^0-9]#",
  90. "",
  91. mysqli_real_escape_string($this->connect, $parameters["pageNumber"])
  92. );
  93. if ($pageNumber < 1) {
  94. $pageNumber = 1;
  95. } else if ($pageNumber > $totalPages) {
  96. $pageNumber = $totalPages;
  97. }
  98. } else {
  99. $pageNumber = 1;
  100. }
  101. $pageLimit = "LIMIT " . ($pageNumber - 1) * $rowsPerPage . "," . $rowsPerPage;
  102. if (isset($searchTerm)) {
  103. $sql = "SELECT * FROM $tableName WHERE $searchColumn LIKE '%".$searchTerm."%' $pageLimit";
  104. } else {
  105. $sql = "SELECT * FROM $tableName $pageLimit";
  106. }
  107. $query = mysqli_query($this->connect, $sql);
  108. $paginationInfo = "Total (<b>$totalRows</b>), Página <b>$pageNumber</b> de <b>$totalPages</b>";
  109. $paginationCtrls = "";
  110. if ($totalPages != 1) {
  111. if ($pageNumber > 1) {
  112. $previousPage = $pageNumber - 1;
  113. // Check if we aren't on the first page, and then generate the "Previous"
  114. $paginationCtrls .= '
  115. <li class="page-item" data-page="'.$previousPage.'">
  116. <a class="page-link">&laquo;</a>
  117. </li>';
  118. // Render clickable number links that should appear on the left of the actual page number
  119. for ($i = $pageNumber - 4; $i < $pageNumber; $i++) {
  120. if ($i > 0) {
  121. $paginationCtrls .= '
  122. <li class="page-item" data-page="'.$i.'">
  123. <a class="page-link">'.$i.'</a>
  124. </li>';
  125. }
  126. }
  127. }
  128.  
  129. // Render the actual page number, but without it being a link
  130. $paginationCtrls .= '
  131. <li class="page-item active" data-page="'.$pageNumber.'">
  132. <a class="page-link">'.$pageNumber.'</a>
  133. </li>';
  134.  
  135. // Render the clickable number links that should appear on the right of the actual page number
  136. for ($i = $pageNumber + 1; $i < $totalPages; $i++) {
  137. $paginationCtrls .= '
  138. <li class="page-item" data-page="'.$i.'">
  139. <a class="page-link">'.$i.'</a>
  140. </li>';
  141. if ($i >= $pageNumber + 4) {
  142. break;
  143. }
  144. }
  145.  
  146. // This checks if we aren't on the last page, and then generate the "Next"
  147. if ($pageNumber != $totalPages) {
  148. $nextPage = $pageNumber + 1;
  149. $paginationCtrls .= '
  150. <li class="page-item" data-page="'.$nextPage.'">
  151. <a class="page-link">&raquo;</a>
  152. </li>';
  153. }
  154. }
  155. } else {
  156. $rowsPerPage = 10;
  157. }
  158. } else {
  159. echo "No pagination...";
  160. }
  161. // Generate the table
  162. echo "<table id=".$tableId.">";
  163. echo "<thead>";
  164. echo "<tr>";
  165. foreach ($displayRows as $tableRow) {
  166. echo "<th data-scope='col'>".$tableRow."</th>";
  167. }
  168. if (array_key_exists("editRows", $parameters) && $parameters["editRows"] == true) {
  169. echo "<th data-scope='col'>Ações</th>";
  170. }
  171. echo "</tr>";
  172. echo "</thead>";
  173. echo "<tbody>";
  174. while ($row = mysqli_fetch_array($query)) {
  175. echo "<tr>";
  176. foreach (array_keys($displayRows) as $tableRow) {
  177. if (array_key_exists($tableRow, $row)) {
  178. echo "<td data-label=".$displayRows[$tableRow].">".$row[$tableRow]."</td>";
  179. } else {
  180. echo "<td>---</td>";
  181. }
  182. }
  183. if (array_key_exists("editRows", $parameters) && $parameters["editRows"] == true) {
  184. echo "<td data-label='Ações'>Edit</td>";
  185. }
  186. echo "</tr>";
  187. }
  188. echo "</tbody>";
  189. echo "</table>";
  190. if (isset($tablePagination)) {
  191. echo "<p class='mt-3 text-center'>".$paginationInfo."</p>";
  192. echo "<ul class='pagination justify-content-center'>".$paginationCtrls."</ul>";
  193. }
  194. }
  195. }
  196. ?>
Add Comment
Please, Sign In to add comment