用PHP和MySQL分页?

时间:2014-03-12 12:50:52

标签: php mysql pagination

我有2个文件。有showReport.php和paging.php。代码很好,没有错误,但显示不正确的结果。你能帮我完成期末考试吗?因为我试图改变它但仍然无法正常工作。请忽略变量名称或表名,因为我使用的是印尼语。

showReport.php

<?php 
            $query = mysql_query("select * from barang");
            $item_per_page = 2; // tambahan
            paging( $query,$item_per_page );
            $limitt = ($page - 1) * $item_per_page;

            $query_ = mysql_query("SELECT * FROM barang ORDER BY id_transaksi DESC LIMIT $limitt, $item_per_page"); // tmbh
            $sql_ = mysql_query($query_);       

            $i = 1;

            while ($data = mysql_fetch_array($query)) {
            ?>
            <tr class="<?php if ($i % 2 == 0) { echo "odd"; } else { echo "even"; } ?>">
                <td><?php echo $i; ?></td>
                <td>
                    <?php 
                    echo $data['tanggal']; 

                    //previlege admin
                    if ($_SESSION['role'] == 'operator') {
                    ?>
                        <div class="row-actions">
                        <a href="edit_barang.php?uid=<?php echo $data['id_transaksi'];?>">Update</a>
                         | <a href="delete_barang.php?uid=<?php echo $data['id_transaksi'];?>" onClick="return confirm('Delete this report?')" class="delete">Delete</a>




                    </div>
                    <?php } ?>
                </td>



                <td><?php echo $data['barang_in']; ?></td>
                <td><?php echo $data['bijih_out']; ?></td>
                <td><?php echo $data['htm_out']; ?></td>
                <td><?php echo $data['pth_out']; ?></td>
                <td><?php echo $data['bijih']; ?></td>
                <td><?php echo $data['kantong_htm']; ?></td>
                <td><?php echo $data['kantong_pth']; ?></td>
                <td><?php echo $data['note']; ?></td>
            </tr>



            <?php 
                $i++;
            } 
            ?>

paging.php

<?php
function paging($query,$item_per_page){
   $page          =  isset($_GET['page']) ? $_GET['page'] : 1 ; 
   if( ( $page < 1) && (empty( $page ) ) ){
      $page=1;
   }
   $sql         = mysql_query( $query_);
   $amount_data   = mysql_num_rows($query);
   $amount_page    = ceil( $amount_data/$item_per_page );
   if( $page>$amount_page ){
      $page=$amount_page;
   }
   $lanjut  = $page + 1;
   $sebelum = $page - 1;
   ?>
<style type="text/css">
.tengah {
    text-align: center;
}
</style>

<?php echo $page;?> dari <?php echo $amount_page;?><br />
   <a href="?page=1"></a><a href="?page=<?php echo $sebelum; ?>">sebelumnya</a>;
   ||
   <a href="?page=<?php echo $lanjut;?>">selanjutnya</a><a href="?page=<?php echo $jumlah_hal;?>"></a>
   Ke Halaman: <form action="" method="get"><input type="text" name="page"><input type="submit" value="Go"></form>
   <?php
}
?>

页数正确,但仍显示一页中的所有数据。例如,我有4个数据,我想为每个页面显示2个数据。所以页数是2(右),但为什么我的数据不能显示每页的2个数据?提前谢谢

2 个答案:

答案 0 :(得分:0)

请放:

echo $query;

后:

$sql_ = mysql_query($query_);

在showReport.php中。

检查查询是否按预期创建。同样在showReport.php中,我看到你正在使用变量'$ page'而我没有看到它首先被赋予一个值。这两个页面都是在另一个页面中导入的吗?

答案 1 :(得分:0)

限制显示的数据量

<?php 
$sqlCount = "select count(id_transaksi) from barang";  
$rsCount = mysql_fetch_array(mysql_query($sqlCount));  
$banyakData = $rsCount[0];  
$page = isset($_GET['page']) ? $_GET['page'] : 1;  
$limit = 2;  
$start_from = $limit * ($page - 1);  
$sql_limit = "select * from barang ORDER BY id_transaksi limit $start_from, $limit";  
$result = mysql_query($sql_limit);  ?>

用于制作页数/分页

<?php
$numberofPages = ceil($amountData / $limit);  
echo 'Pages: ';  
for($i = 1; $i <= $numberofPages; $i++){  
 if($page != $i){  
 echo '[<a href="showReport.php?page='.$i.'">'.$i.'</a>] ';  
 }else{  
 echo "[$i] ";  
 }  
}  
?>  

根据我的问题, paging.php 不再使用了。希望可以帮助任何像我这样的问题的人,欢呼! ;)