2012-08-03 116 views
0

我下面的代码基本上从数据库中获得一堆电影,并将数年设置为数组键,然后每年回放每部电影。尽管我的结果越来越长,需要分页,这一切都很酷。我无法找到任何有助于我的情况的例子,因为php中的大多数分页是用于while循环的 - 感谢任何帮助或反馈。我不介意它的jQuery或PHP或两者的组合。分页在PHP foreach循环

<?php 
require_once('Connections/timeline.php'); 
mysql_select_db($database_timeline, $timeline); 
// select all the events from the database ordered by date: 
$res = mysql_query("SELECT * FROM film2 ORDER BY `year` ASC"); 
$filmArray = null; 
while($row_res = mysql_fetch_assoc($res)) { 
      $year = $row_res['year']; 
      $filmArray[$year][] = $row_res; 
} 
//for each year in the film array echo out each film within that year 
foreach($filmArray as $year => $films) { 
      echo $year; 
      echo '<br />'; 
      foreach($films as $film) { 
          echo $film['event']; 
          echo '<br />'; 
          echo $film['name']; 
          echo '<br />'; 
         } 
} 

?> 
+0

采取护理:当你介绍分页,并通过多年的不断分组薄膜的上述逻辑,则分页或者不产生相同长度的页面或在几个页面,从一个单一的一年传播电影。 – arkascha 2012-08-03 08:57:53

+0

我建议只使用一个循环:在第一个while循环期间回显内容。一年头部的注射可以用一个简单的条件来完成,该条件评估当前和最后一部电影的年份是否已经改变。这样可以避免复制整个数组并使代码更易于理解。 – arkascha 2012-08-03 09:00:24

回答

0

您需要有GET参数,例如页面。 网址:本地主机/ film.php页= 1

然后

if (isset($_GET['page'])) 
    $page = $_GET['page']; 
else 
    $page = 1; 

$entriesPerPage = 20; 
$limitFrom = $page - 1; 
$limitTill = $limitFrom + $entriesPerPage; 

然后你的SQL查询:

$res = mysql_query("SELECT * FROM film2 ORDER BY `year` ASC LIMIT $limitFrom, $limitTill"); 

而在最后,创建HTML链接。

<a href="film.php?page=<?=$page-1?>">Previous</a> 
<a href="film.php?page=<?=$page+1?>">Next</a> 
+0

欣赏这一点 - 只需要看它分解。一直在看复杂的分页tuts没有帮助。 – Jeff 2012-08-03 09:14:00

+0

'LIMIT offset,max_row_to_show' not limitFrom and limitTill – Yang 2012-08-03 09:21:14

+0

有什么区别? – dpitkevics 2012-08-03 09:26:43