我有这个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    <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
}
?>
答案 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
循环之前。
干杯。