The following function keeps loading the page and I can’t find the problem.
The values are:
$per_page = 10; $soort = 2; $query = "SELECT id, name, email, status FROM users WHERE company_id = " . $id . " AND status != 3"; $array = array("#", "Naam", "E-mail", "Status", "Tools");
$id
is a $_GET
on the url.
The code:
public function table($per_page, $soort, $query, $array) { // elke soort table moet hier een table if() hebben. // standaart value's $i = 0; $countx = count($array); $x = 1; // checkt of de td nummer even of oneven is zodat het een andere style krijgt. function get() { // de naam van de $_GET $prefix = "p"; return $prefix; } function evencheck($number) { if (is_int($number / 2)) { return'col1'; } else { return'col2'; } } if ($result = $this->db->query($query)) { if ($result->num_rows != 0) { $total_results = $result->num_rows; // Kijken hoeveel pagina's er moeten komen voor de pagination. $total_pages = ceil($total_results / $per_page); if (isset($_GET[get()]) && is_numeric($_GET[get()])) { $show_page = $_GET[get()]; // make sure the $show_page value is valid if ($show_page > 0 && $show_page <= $total_pages) { $start = ($show_page - 1) * $per_page; $end = $start + $per_page; } else { // error - show first set of results $start = 0; $end = $per_page; } } else { // if page isn't set, show first set of results $start = 0; $end = $per_page; } // display pagination // display data in table echo "<table>"; echo "<tr class='headtr'>"; // maakt de head van de table via een array die is mee gegeven aan de function. foreach ($array as $headtable) { echo "<td class='headtd'><b>" . $headtable . "<b></td>"; } echo "</tr>"; echo "<tr>"; // Ik zie zelf nog geen andere oplossing dan dit. // Vooral omdat de tables zo veel van elkaar verschillen. $result->data_seek($i); $row = $result->fetch_row(); $count = count($row); if ($soort == 1) { //logs // stemt de while af met de array input, dus -1 omdat de array begint met 0. $x = $count - 1; while ($i <= $x) { echo "<td class='" . evencheck($i) . "'>" . $row[$i] . "</td>"; $i++; } } if ($soort == 2) { //users/bedrijven (ADMIN module) $rLog = $this->rights('admin/log'); $rEdit = $this->rights('admin/bedrijven/gebruikers/bewerken'); $rLogin = $this->rights('admin/bedrijven/gebruikers/inloggen'); $rDelete = $this->rights('admin/bedrijven/gebruikers/verwijderen'); // Een extra TD voor de tools achter bij de table. $x = $count; while ($i <= $x) { if ($i == $total_results) { break; } $result->data_seek($i); $row = $result->fetch_row(); echo "<tr>"; echo "<td class='" . evencheck($i) . "'>" . $row[0] . "</td>"; echo "<td class='" . evencheck($i) . "'>" . $row[1] . "</td>"; echo "<td class='" . evencheck($i) . "'>" . $row[2] . "</td>"; echo "<td class='" . evencheck($i) . "'>" . ($row[3] == 1 ? 'Actief' : 'Geblokkeerd') . "</td>"; //tools td. echo "<td id='tools' class='" . evencheck($i) . "'>" . ($rLog ? '<a href="/admin/log/' . $row[0] . '">' . LOG . '</a>' : '') . ' ' . ($rEdit ? '<a href="/admin/bedrijven/gebruikers/bewerken/' . $row[0] . '">' . EDIT . '</a>' : '') . ' ' . ($rLogin ? '<a href="javascript:;" onClick="sure('Wilt u een verzoek versturen naar ' . htmlentities($row[1]) . ' voor ondersteuning?', '/admin/bedrijven/gebruikers/inloggen/' . $row[0] . '');">' . LOGIN . '</a>' : '') . ' ' . ($rDelete ? '<a href="javascript:;" onClick="sure('Weet u zeker dat u de gebruiker ' . htmlentities($row[1]) . ' wilt verwijderen?', '/admin/bedrijven/gebruikers/verwijderen/' . $row[0] . '');">' . DEL . '</a>' : '') . "</td>"; echo "</tr>"; } //paginstion er aan plakken $this->pagination($per_page, $total_results, $total_pages, $countx); } } else { echo "No results to display!"; } } else { echo "Er is iets fout gegaan!<br>" . $db->error; } }
The console via Firebug:
I have already established that the pagination function isn’t the problem.
Advertisement
Answer
You have an infinite while
loop:
while ($i <= $x) { ... }
I think you’ve forgotten to add $i++
before the end of the while loop, like so:
while ($i <= $x) { // Your code here $i++; }