Reputation: 1028
Created this small pagination with PDO from database and it skipping data from database and I cannot figure out why. It is skipping the first one and some of the middle rows from database. As soon as I insert data from my form, it picks up another middle row, but it is skipping another row. If I remove the pagination, including the $start_from
it works fine.
Code:
<?php
echo '<table id="ravimiTable" class="table table-bordered table-responsive">';
echo '<tbody>';
if (isset($_GET["page"])) { $page = $_GET["page"]; } else { $page=1; };
$start_from = ($page-1) * 10;
$result = $DB_con->prepare("SELECT * FROM ravim WHERE arsti_id = ".$user_id." ORDER BY patsiendi_kood ASC LIMIT $start_from, 10");
$result->execute();
for($i=0; $row = $result->fetch(); $i++){
foreach ($result as $row ){
echo '<tr class="">
<td class="info">'.$row['ravimi_nimi'].'</td>
<td class="">'.$row['patsiendi_kood'].'</td>
<td class="">'.$row['patsiendi_tsykkel'].'</td>
<td class="">'.$row['ravimi_kood'].'</td>
<td class="">'.$row['patsiendi_vanus'].'</td>
<td class="">'.$row['haigla'].'</td>
<td class="danger">'.$row['diagnoos'].'</td>
<td class="">'.$row['diagnoosi_kuup2ev'].'</td>
<td class="">'.$row['pakend'].'</td>
<td class="">'.$row['annustamine'].'</td>
<td class="">'.$row['pakkide_arv'].'</td>
<td class="warning">'.$row['patsiendi_kategooria'].'</td>
<td class="">'.$row['rasestumisvastane_vahend'].'</td>
<td class="">'.$row['rasedusuuringu_kuup2ev'].'</td>
<td class="">'.$row['rasedusuuringu_tulemus'].'</td>
<td class="">'.$row['arsti_kuup2ev'].'</td>
</tr>';
}
echo '</tbody></table></div>';
?>
<div id="pagination" style="margin:0 auto; text-align:center;">
<?php
$result = $DB_con->prepare("SELECT COUNT(patsiendi_kood) FROM ravim WHERE arsti_id = ".$user_id);
$result->execute();
$row = $result->fetch();
$total_records = $row[0];
$total_pages = ceil($total_records / 10);
for ($i=1; $i<=$total_pages; $i++) {
echo "<a href='forms.php?page=".$i."'";
if($page==$i)
{
echo "id=active";
}
echo ">";
echo "".$i."</a> ";
};
?>
<?php } ?>
</div>
Upvotes: 0
Views: 72
Reputation: 6218
$result = $DB_con->prepare("SELECT * FROM ravim WHERE arsti_id = ".$user_id." ORDER BY patsiendi_kood ASC LIMIT $start_from, 10");
$result->execute();
$rowsArray = $result->fetchAll(PDO::FETCH_ASSOC);
foreach ($rowsArray as $row ){
echo '<tr class="">
<td class="info">'.$row['ravimi_nimi'].'</td>
<td class="">'.$row['patsiendi_kood'].'</td>
<td class="">'.$row['patsiendi_tsykkel'].'</td>
<td class="">'.$row['ravimi_kood'].'</td>
<td class="">'.$row['patsiendi_vanus'].'</td>
<td class="">'.$row['haigla'].'</td>
<td class="danger">'.$row['diagnoos'].'</td>
<td class="">'.$row['diagnoosi_kuup2ev'].'</td>
<td class="">'.$row['pakend'].'</td>
<td class="">'.$row['annustamine'].'</td>
<td class="">'.$row['pakkide_arv'].'</td>
<td class="warning">'.$row['patsiendi_kategooria'].'</td>
<td class="">'.$row['rasestumisvastane_vahend'].'</td>
<td class="">'.$row['rasedusuuringu_kuup2ev'].'</td>
<td class="">'.$row['rasedusuuringu_tulemus'].'</td>
<td class="">'.$row['arsti_kuup2ev'].'</td>
</tr>';
}
You were fetching the result array in $row
but iterating over $result
Upvotes: 1