用php对列表进行分页
我有一段php代码,它使用userid从数据库中获取图像,然后以列表形式显示所有图像。我试图分页的图像,在每页5个项目的限制。但是代码只显示第一个页面,没有指向其他页面的链接。这是我的php代码用php对列表进行分页,php,html,css,Php,Html,Css,我有一段php代码,它使用userid从数据库中获取图像,然后以列表形式显示所有图像。我试图分页的图像,在每页5个项目的限制。但是代码只显示第一个页面,没有指向其他页面的链接。这是我的php代码 <?php include 'connect.php'; $Category = " "; $query = "SELECT Img_dir, Caption, Category FROM images WHERE Categor
<?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
}
?>
您可以尝试以下方法:
更改查询(使用准备语句):
至于你的数据结构
$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>";
}
在foreach
循环之前
干杯。仅过滤/显示特定类别中的图像
-我们需要有关数据库的更多信息才能做到这一点。另外,你真的应该阅读准备好的声明<代码>其中用户_id=?和category=?
如果使用PDO而不是MySqli,则可以执行->fetch(PDO::fetch_GROUP)
,这将为您提供所需的结构。按原样,您必须在foreach循环中构建它。@ArtisticPhoenix这是我的db$query=“插入图像(类别、标题、Img_dir、用户id)值(“$Category”、“$Caption”、“$image”、$user_id)”;然后只需将和Category=somecategory
添加到上面的选择中。在之外开始和结束
,而loop@ArtisticPhoenix成功了!谢谢,我该如何给列表分页?我读过关于它的任何线索,但我想要一个更简单的方法是的,你只需要使用wile循环按类别分组,你不能输出它,告诉你分组所有的行。如果使用PDO(而不是mysqli),则可以跳过该部分。PDO有一个用于fetchAll
的PDO::GROUP_BY标志,它完全执行while循环中的操作。嗯,不完全是因为它会有图像和类别。我刚刚使用了内部数组中的图像。就像我说的,我会找到一个你喜欢的分页插件,然后从他们的例子中看看它是如何运行的。如果你对此有疑问,你可以随时发布另一个答案。我真的不能说你需要做什么(除了限制和偏移),因为很大程度上取决于你使用的插件。我取得了一些进展,现在我试图分页,但我的代码只显示了一页…关于插件人,我只是在字里行间阅读
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($results);