Foreach分页

时间:2013-11-18 22:02:50

标签: php wordpress foreach pagination

我正在寻找有关如何对foreach输出进行分页的帮助。我已经查看了其他问题和答案,找不到适用于我的解决方案,或者我可以自己解决的解决方案。现在我的代码在下面,将所有内容输出到表格行中。当然,我的问题是它将所有数据转储到一个页面上 - 因此我想要分页。我想为页面上的每11个项目分页。这个页面是一个杂志档案,梨年有11个问题 - 所以每页都等于我们杂志的1年。第一页应该主持问题1-11,第二页应该主持问题12到22等。我们有10年的杂志问题。任何帮助将不胜感激。谢谢!

<table>
<tr>
<?php $col = 0; ?>
<?php foreach (get_terms('term') as $cat) : ?>

<?php if ($col > 0 && $col % 3 == 0): ?>
</tr>
<tr>
<?php endif; ?>
<?php $col++; ?>

<td>

<a href="<?php echo get_term_link($cat->slug, 'term'); ?>"><strong><?php echo $cat->name; ?></strong></a><br>

<em><a href="<?php echo get_term_link($cat->slug, 'term'); ?>"><?php echo $cat->description; ?></a></em><br>

<a href="<?php echo get_term_link($cat->slug, 'term'); ?>"><img src="<?php echo z_taxonomy_image_url($cat->term_id); ?>" /></a>
</td>
<?php endforeach; ?>
</tr>
</table>

4 个答案:

答案 0 :(得分:2)

这是什么框架/应用程序?虽然我不理解100%数据的来源,但是当你点击11个条目时(或者从0开始时为10个条目),你可以尝试修改你的代码来增加一个中断。

<?php $col = 0; ?>
<?php foreach (get_terms('term') as $cat) : ?>

<?php if ($col > 0 && $col % 3 == 0): ?>
</tr>
<tr>
...
<?php if(10 == $col) { break;}
endforeach; ?> 

这会将此限制为foreach循环的前11个结果。从那里,你必须修改你选择数据的方式,以便第二页从记录12开始。

当然,在sql查询中使用限制语法可能更容易,例如:

limit 12, 22

答案 1 :(得分:0)

我认为这就是你想要的:

get_terms('term', array('offset' => $page * 11, 'number' => 11));

第一页的$page从0开始。如果您希望页面从1开始,请使用($page-1) * 11

如何确定要显示的页面取决于您。

有关详细信息,请参阅get_terms文档:http://codex.wordpress.org/Function_Reference/get_terms

答案 2 :(得分:0)

这可能不是您正在寻找或期待的,但希望您或其他人觉得有用。 以下脚本执行所需的所有小配置ps_pagination.php 您需要将ps_pagination.php包含在要使用它的页面中,然后使用以下代码填充分页页面上的信息。 希望它有所帮助。

 db_connection = mysql_connect('localhost', 'user', 'password')or die("cannot connect"); 
        mysql_select_db('database',$conn);
// mysql query         
    $sql_query="SELECT * FROM example ORDER BY id DESC";
// Create the ps_pagination object here
    $pager = new ps_pagination($db_connection,$sql_query,10,5);   

//The paginate() function returns a mysql result set   
    $rs = $pager->paginate();   
    while($rows = mysql_fetch_assoc($rs)) {   

// table to display results here // modify here 
    echo $rows["title"].'</p>';
    echo '<p> '.$rows["post"].'</p>';
    echo '<p><span class="style1">By</span>: '.$rows["name"].' ';
    echo '<p>Date/Time</span>:'.$rows["datetime"].'</p>';                           
    echo "<BR>";
}   
// close mysql connection here
  mysql_close();

//Display the full navigation in one go   
    echo $pager->renderFullNav();

答案 3 :(得分:0)

以下是我用来解决问题的代码:

<?php
$url = $_SERVER["REQUEST_URI"];
$segments = explode('/', $url);
$page = is_numeric($segments[count($segments)-2]) ? $segments[count($segments)-2] : 1;
$next = $page + 1;
$prev = $page - 1;
$issues_per_page = 11;
$lastpage = ceil(wp_count_terms( 'mag') / $issues_per_page) ;
?>

<?php wp_count_terms( 'mag' ); ?>

<table>
<tr>
<?php $col = 0; ?>
<?php foreach (get_terms('mag', array('offset' => ($page - 1) * $issues_per_page, 'number' => $issues_per_page)) as $cat) : ?>

<?php if ($col > 0 && $col % 3 == 0): ?>
</tr>
<tr>
<?php endif; ?>
<?php $col++; ?>

<td>

<a href="<?php echo get_term_link($cat->slug, 'mag'); ?>"><strong><?php echo $cat->name; ?></strong></a><br>

<em><a href="<?php echo get_term_link($cat->slug, 'mag'); ?>"><?php echo $cat->description; ?></a></em><br>

<a href="<?php echo get_term_link($cat->slug, 'mag'); ?>"><img src="<?php echo z_taxonomy_image_url($cat->term_id); ?>" /></a>
</td>
<?php endforeach; ?>
</tr>
</table>


<?php if ($prev > 0) : ?>
<a href="/mag-archive?page=<?php echo $prev; ?>">Previous</a>
<?php endif ?> 
<?php if ($page < $lastpage) : ?>
<a href="/mag-archive?page=<?php echo $next; ?>">Next</a>
<?php endif ?>