【问题标题】:Using existing code, implement PAGINATION using MYSQLI/PHP使用现有代码,使用 MYSQLI/PHP 实现 PAGINATION
【发布时间】:2015-01-09 09:44:56
【问题描述】:

我有现有代码,我阅读了很多使用分页的示例,但我不确定如何在我的情况下实现它。

VIEW.php

<?php

$result = mysqli_query($con,$query);
echo "<div class=\"maincover \" data-role=\"scrollbox\" data-scroll=\"vertical\">";

echo "<div class=\"panel panel-default\">";
while($row = mysqli_fetch_array($result)) {
echo "<div class=\"panel-heading\">";
echo '<div><a class="panel-title btn-block" href="details.php?id='.$row['id'].'"><h3>'.$row['id'].' | '.$row['vidTitle'].'</h3></a></div>';
echo "</div>";

echo "<div class=\"panel-body\">";
echo "<div class=\"imgCover\"><img class=\"imageCover\"src=\"" . $row['url'] . "\"></div>";
echo "<div class=\"vidSD\">" . $row['vidSD'] . "</div>";
echo "<div class=\"vidDetails\"> 

<hr class=\"style-two\">
<table>
<tr><td class=\"vidDetailsTD\"><strong>" . $lang['vtYear'] . "</strong></td><td class=\"vidDetailsTD\">" . $row['vidYear'] ."</td></tr>
<tr><td class=\"vidDetailsTD\"><strong>" . $lang['vtCity'] . "</strong></td><td class=\"vidDetailsTD\">". $row['vidCity'] ."</td></tr>
<tr><td class=\"vidDetailsTD\"><strong>" . $lang['vtGenre'] . "</strong></td><td class=\"vidDetailsTD\">". $row['vidZanr'] ." , ". $row['vidZanr2'] ." , ". $row['vidZanr3'] . "</td></tr>
<tr><td class=\"vidDetailsTD\"><strong>" . $lang['vtQuality'] . "</strong></td><td class=\"vidDetailsTD\">". $row['vidQuality'] ."</td></tr>
<tr><td class=\"vidDetailsTD\"><strong>" . $lang['vtTranslatedBy'] . "</strong></td><td class=\"vidDetailsTD\">". $row['vidTranslated'] ."</td></tr>
<tr><td class=\"vidDetailsTD\"><strong>" . $lang['vtVideoTime'] . "</strong></td><td class=\"vidDetailsTD\">". $row['vidTime'] .  "</td></tr>
</table> 
</div></div>";

echo " <div class=\"panel-footer\">";
echo '<h6><strong>' . $lang['vsdAuthor'] . '</strong><a href="../userPages/user.php?u='.$row['addName'].'">'.$row['addName'].'</a></h6>';
echo '<div><h6><strong>' . $lang['vsdPublished'] . '</strong>' . $row['published'] . '</h6></div>'; 
echo "</div>";
}
echo "</div></div>";

mysqli_close($con);
?>

此代码显示视频列表,我不确定如何使用 MY 代码在此列表底部添加分页。

这是我发现的:
SampleOneSampleTwoSampleThree

而且因为我有排序列表,所以问题更大,不知道该怎么做((

sortOrder.php

<?php


$query ="SELECT newsvid.id, newsvid.addName, newsvid.vidTitle, newsvid.vidType, newsvid.size, newsvid.url, newsvid.vidSD, newsvid.published, videoinformation.vidLD, videoinformation.vidYear, videoinformation.vidCity, videoinformation.vidZanr, videoinformation.vidZanr2, videoinformation.vidZanr3, videoinformation.vidQuality, videoinformation.vidTranslated, videoinformation.vidTime  FROM newsvid, videoinformation WHERE newsvid.id = videoinformation.id";



// Video type
$vType = isset($_GET['vType']) ? $_GET['vType'] : 'ALL';
$goodTypeParam = array("AnyType", "Film", "Serials", "Cartoon", "Anime");

if (in_array($vType, $goodTypeParam)) {
    if($vType == 'AnyType'){}
    else{$query .= " AND newsvid.vidType ='".$_GET['vType']."'";}
}




//Video Genre one
$vGenre = isset($_GET['vGenre']) ? $_GET['vGenre'] : 'ALL';
$goodGenreParam = array("AnyGenre1", "Action", "Adventure", "Comedy", "Crime", "Faction", "Fantasy", "Historical", "Horror", "Mystery", "Paranoid", "Philosophical", "Political", "Realistic", "Romance", "Saga", "Satire", "Science-Fiction", "Slice-Of-Life", "Speculative", "Anime");

if (in_array($vGenre, $goodGenreParam)) {
    if($vGenre == 'AnyGenre1'){}
    else{$query .= " AND ( videoinformation.vidZanr ='".$_GET['vGenre']."' OR videoinformation.vidZanr2 ='".$_GET['vGenre']."' OR videoinformation.vidZanr3 ='".$_GET['vGenre']."')";}
}

//Video Genre two
$vGenre2 = isset($_GET['vGenre2']) ? $_GET['vGenre2'] : 'ALL';
$goodGenre2Param = array("AnyGenre2", "Action2", "Adventure2", "Comedy2", "Crime2", "Faction2", "Fantasy2", "Historical2", "Horror2", "Mystery2", "Paranoid2", "Philosophical2", "Political2", "Realistic2", "Romance2", "Saga2", "Satire2", "Science-Fiction2", "Slice-Of-Life2", "Speculative2", "Anime2");

if (in_array(vGenre2, $goodGenre2Param)) {
    if(vGenre2 == 'AnyGenre2'){}
    else{$query .= " AND ( videoinformation.vidZanr ='".$_GET['vGenre2']."' OR videoinformation.vidZanr2 ='".$_GET['vGenre2']."' OR videoinformation.vidZanr3 ='".$_GET['vGenre2']."')";}
}

//Video Genre three
$vGenre3 = isset($_GET['vGenre3']) ? $_GET['vGenre3'] : 'ALL';
$goodGenre3Param = array("AnyGenre3", "Action", "Adventure", "Comedy", "Crime", "Faction", "Fantasy", "Historical", "Horror", "Mystery", "Paranoid", "Philosophical", "Political", "Realistic", "Romance", "Saga", "Satire", "Science-Fiction", "Slice-Of-Life", "Speculative", "Anime");

if (in_array($vGenre, $goodGenre3Param)) {
    if($vGenre3 == 'AnyGenre3'){}
    else{$query .= " AND ( videoinformation.vidZanr ='".$_GET['vGenre3']."' OR videoinformation.vidZanr2 ='".$_GET['vGenre3']."' OR videoinformation.vidZanr3 ='".$_GET['vGenre3']."')";}
}





// Video Years
$vYear = isset($_GET['vYear']) ? $_GET['vYear'] : 'ALL';
$goodYearParam = array("AnyYear", "2014", "2013", "2012", "2011", "2010", "2009", "2008", "2007", "2006", "2005", "2004", "2003", "2002", "2001", "2000", "1999", "1998", "1997");

if (in_array($vType, $goodYearParam)) {
    if($vYear == 'AnyYear'){}
    else{$query .= " AND newsvid.vidYear ='".$_GET['vYear']."'";}
}


// Video City
$vCity = isset($_GET['vCity']) ? $_GET['vCity'] : 'ALL';
$goodCityParam = array("AnyCity", "Russian", "England");

if (in_array($vCity, $goodCityParam)) {
    if($vCity == 'AnyCity'){}
    else{$query .= " AND newsvid.vidCity ='".$_GET['vCity']."'";}
}



//NEW of OLD
$order = isset($_GET['order']) ? $_GET['order'] : 'ALL';
$goodParam = array("NEW", "OLD");

if (in_array($order, $goodParam)) {

    if($order == 'NEW'){
     $query .= " ORDER BY newsvid.id ASC"; 
    }else if($order == 'OLD'){
     $query .= " ORDER BY newsvid.id DESC"; 
    }else{
     $query .= " AND videoinformation.vidYear = 2014"; 
        }
}

?>

【问题讨论】:

  • 酷,我在问题中说,理论上我知道,我知道我需要显示限制等等......但是物理上(使用我的代码)我无法理解如何用我的代码。
  • 查看我的答案,它详细说明了为页面添加分页所需执行的操作。

标签: php html list mysqli pagination


【解决方案1】:

为什么你的 HTML 在你的 PHP 中?如果您在不使用任何现代模板引擎的情况下采用老式方式,那么您至少不应该将 HTML 放入您的 PHP 代码中。

关于您的问题,您应该只创建一个 PHP 脚本来处理偏移/限制参数。并将调整 SQL 查询。

您需要执行几个步骤才能完成您想做的事情。

  1. 使用 GET 参数以了解您在哪个页面上$page=$_GET['page']
  2. 使用 $offset 和 $limit 参数来进行分页。
  3. $offset = ($page-1) * 10; $limit = 10; // constant limit per page
  4. 从查询中返回总行数的 COUNT 超出任何限制和偏移量。
  5. 在同一查询中使用 Limit & Offset 并返回行 MySQL 假设我们的 $offset 为 0 且 $limit 为 10。LIMIT 0,10 / $query .= "LIMIT $offset, $limit";
  6. 您现在可以显示从上一个查询返回的所有行。 (在我们的示例中,第一页为 10 行)。
  7. 让我们假设您总共有 100 行的 1 步返回。现在您需要在页面中显示分页,您当前的偏移量为 0,每页限制为 10(来自我们的LIMIT 0,10 示例)。 并且您需要检查总页数$total_pages = ceil($totalRows / $rows_per_page) = (100/10 = 10)。
  8. 在 total_pages 上循环并创建链接

for ($page = 1; $page < $total_pages; ++$page) {
     echo "<a href=\"list.php?page={$page}\">{$page}</a>";
}

【讨论】:

  • @Denis,没有人会为你编写代码。以此为教训。按照步骤操作,它包含有关您需要做什么的详细信息。如果你仍然被卡住。使用您目前获得的代码编辑您的答案,我们将从那里开始。
猜你喜欢
  • 1970-01-01
  • 2016-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-06
  • 2016-11-28
  • 2011-08-25
相关资源
最近更新 更多