假设我有一个包含20行和分页脚本的表。
分页脚本设置为每页显示10行,当然它将显示两页。
问题是有时候我的表会少于20行,比方说3 - 所以脚本只会显示一个包含3个条目的页面。
我需要一种方法来重复这3行,直到数字反应器20,将它们存储在数组中,然后照常使用分页脚本。
任何想法都可以吗?有人可以把它放在代码中吗?
对于那些想知道原因的人?:)这是一个问题,因为每一行都有我的博客上的帖子,我有20个我想要显示的帖子。例如,如果与cron作业相关的表有17行,那么我将只有17个帖子与它们相关联。这就是为什么我需要将它们重新训练到20岁,所以无论我在桌子上有多少行,我都会显示所有20个帖子:)
答案 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.