php - 在php中对列表进行分页
问题描述
我有这个 php 代码,它使用用户 ID 从数据库中获取图像,然后以列表形式显示所有图像。我试图对图像进行分页,每页限制为 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    <img src='base64_encode($image)' />   $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
}
?>
解决方案
你可以试试这个:
更改您的查询(使用准备语句):
$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
循环之前。
干杯。
推荐阅读
- mysql - Power BI 中无法连接到 MySQL 本地服务器 3306
- javascript - 将元素添加到您的预期值
- flutter - 展开时如何更改 ExpansionTile 标题?
- javascript - 如何将背景 url 传递给:在 React 中的 OnVisible 之后
- python - OSERROR WINERROR [10049] 它适用于我的 ipv4,但是当我尝试使用公共时会发生这种情况
- html - Django模板中的for循环
- python - 更好地理解 mainloop()
- arrays - 是否可以从另一个对象数组的 ID 中找到对象数组中的值?
- java - 运行时错误:找不到启动意图的活动。我正在尝试查看和检索存储在 FirebaseStorage 上的 pdf 文档
- latex - 在我的投影仪演示文稿上打印参考书目的问题