使用现有代码,使用MYSQLI/PHP实现PAGINATION


Using existing code, implement PAGINATION using MYSQLI/PHP

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

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代码在列表底部添加分页。

这就是我的发现:
SampleOne SampleTwo SampleThree

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

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"; 
        }
}
?>

为什么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超出任何LIMIT&偏移
  5. 使用限制&在同一个查询中的偏移量并返回行MySQL假设我们的$Offset为0,$limit为10。LIMIT 0,10/$query .= "LIMIT $offset, $limit";
  6. 现在可以显示从上一个查询中返回的所有行。(在我们的示例中,第一页有10行)
  7. 让我们假设1步返回总共有100行。现在您需要在页面中显示分页,当前偏移量为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>";
}