在php中分页列表

时间:2019-03-16 09:48:37

标签: php html css

我有这个php代码,该代码使用userid从数据库中获取图像,然后以列表形式显示所有图像。我试图分页图像,每页限制5个项目。但代码仅显示第一页,而没有指向其他页面的链接。这是我的PHP代码

<?php
        include 'connect.php';


            $Category = " ";
            $query = "SELECT Img_dir, Caption, Category FROM images WHERE Category = '". $_REQUEST['Category'] ."' AND user_id = '". $_SESSION['user_id'] ."' LIMIT 0,5";


            $result = mysqli_query($conn,$query);


            while ($row=mysqli_fetch_array($result)){
                $image = $row["Img_dir"];
                $Caption= $row["Caption"];
                $Category = $row["Category"];
                    echo "<dl>";

                    echo "<dd>$Category &nbsp&nbsp <img src='base64_encode($image)' />&nbsp&nbsp $Caption<dd>";

                    echo "</dl>";
                    }
            //number of total pages available
            $results_per_page = 10;

            $number_of_results = mysqli_num_rows($result);

            echo $number_of_pages = ceil($number_of_results / $results_per_page);
            echo "<br>"; echo "<br>";
            for($r=1;$r<=$number_of_pages;$r++)
            {
                ?><a href="dashboard.php?page=<?php echo $r;?>" style="text-decoration:none"><?php echo $r." "; ?></a><?php 
            }
?>

1 个答案:

答案 0 :(得分:1)

您可以尝试以下方法:

更改查询(使用准备陈述):

$query = "SELECT Img_dir, Category FROM images WHERE user_id = ? AND Category = ? ";

关于数据的结构。

$results = [];
while ($row = $result->fetch_assoc()){
       $key = $row['Category'];
       if(!isset($results[$key]))  $results[$key] = [];

       $results[$key][] = $row['Img_dir '];  //['Category' => [Img_dir,Img_dir, ...]]
}

和您的HTML。我会使用描述列表或dl,因为它的标题位置不错:

  foreach($results as $Category => $image){
        echo "<dl>";
        echo "<dt>$Category</dt>";
        foreach($data as $row){
           echo "<dd><img src='base64_encode($image)' /><dd>";
        }
        echo "</dl>";
  }

未经测试。

该订单可能会很不稳定,因此可以在其上使用ksort。只是

  ksort($results); 

foreach循环之前。

干杯。