Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用php对列表进行分页_Php_Html_Css - Fatal编程技术网

用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代码,它使用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 
            }
?>
您可以尝试以下方法:

更改查询(使用准备语句):

至于你的数据结构

$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);