重复数组中的行并将它们分页

时间:2011-02-01 19:16:03

标签: php

假设我有一个包含20行和分页脚本的表。

分页脚本设置为每页显示10行,当然它将显示两页。

问题是有时候我的表会少于20行,比方说3 - 所以脚本只会显示一个包含3个条目的页面。

我需要一种方法来重复这3行,直到数字反应器20,将它们存储在数组中,然后照常使用分页脚本。

任何想法都可以吗?有人可以把它放在代码中吗?

对于那些想知道原因的人?:)这是一个问题,因为每一行都有我的博客上的帖子,我有20个我想要显示的帖子。例如,如果与cron作业相关的表有17行,那么我将只有17个帖子与它们相关联。这就是为什么我需要将它们重新训练到20岁,所以无论我在桌子上有多少行,我都会显示所有20个帖子:)

2 个答案:

答案 0 :(得分:0)

一个简单的解决方案是(注意:此代码针对可读性而非速度进行了优化):

$result = array();
for($i = 0; $i < 20; $i++){
  $result = $array[$i % sizeof($array)];
}

这将使用$ array的内容填充$ result数组,必要时重复。您还可以通过以下方式替换循环条件:

$i < 20 || $i < sizeof($array)

这将复制整个数组,如果需要(数组少于20个条目),添加副本。

答案 1 :(得分:0)

$query = "SELECT * FROM `db_table`";//PUT HERE A PROPER QUERY.
$result = mysql_result($query);

// mysql_num_rows($result) >10 WE ARE CHECKING HOW MANY LINES DO WE HAVE.
if(mysql_num_rows($result) >10){
    /*...YOUR EXISTING CODES HERE...*/
}
else{
    while($rows = mysql_fetch_assoc($result)){
        $arrayOfRows[] = $rows; // HERE WE PULL ROWS FROM DB AND PUT IN AN ARRAY.
    }
}
// NOW YOUR DB ROWS ARE IN THE ARRAY NAMED $arrayOfRows IF YOUR DB TABLE HAS LESS THEN 10 ROWS
$countRowsOfArray = count($arrayOfRows);

$rows = 20;
$dbRow=0;
for($n=0;$n<$rows;$n++){
    if($dbRow > $countRowsOfArray) $dbRow = 0;
    $newArrayOfRows[$n] = $arrayOfRows[$dbRow];
    $dbRow++;
}
//NOW YOU HAVE $newArrayOfRows WHICH YOUR ROWS REPEATED UNTIL 20 LINES.


print_r($newArrayOfRows); //SEE IF THEY ARE THERE.