2011-02-01 57 views
0

可以说我有一个包含20行和分页脚本的表格。重复数组中的行,并对它们进行分页

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

问题是,有时我的表格将少于20行,让我们说3 - 所以脚本将只显示一个页面3条目。

我需要一种方式来重复这些3行直到数字reahers 20,将它们存储在一个数组,并正常使用分页脚本。

任何ideeas,可以这样做吗?有人可以把它放在代码中吗?

对于那些想知道为什么吗?:)这是一个问题,因为每行我已经从我的博客中签了帖子,并且我有20个帖子需要显示。例如,如果使用cron作业的表有17行,我只有17个帖子与他们关联。这就是为什么我需要将它们重新调整到20的原因,所以无论表中有多少行,我都会显示所有20个帖子:)

+0

听起来很可行。但我怀疑任何人都会为你编码。也许你可以告诉我们你已经做了什么,试图解决问题,并寻求具体的帮助? – 2011-02-01 19:24:52

+0

你为什么问你两个问题?这是第一个供参考的:http://stackoverflow.com/questions/4866257/make-pagination-script-repeat-its-rows-on-the-first-page-if-row-number-is-under-a – 2011-02-01 19:25:51

+0

你好,我想我的第一个问题是相当不明确的,并且会导致错误...也许从简单的事情开始..我将删除另一个 – webmasters 2011-02-01 19:28:10

回答

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. 
0

一个简单的解决方案是(注意:此代码已针对可读性,而不是速度):

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

这将填充$结果数组的内容$ array,如果有必要重复。您还可以通过更换循环条件:

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

这将整个阵列复制,如果有必要(数组有少于20项),新增副本。

相关问题