z0mbieKale
z0mbieKale

Reputation: 1028

PDO pagination skipping data from database

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

Answers (1)

undefined_variable
undefined_variable

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

Related Questions