2011-10-31 51 views
0

我正在嘗試製作某種分頁系統。php while-loop-關閉div

每個頁面最多有4個來自數據庫的元素。

每頁都被一個div(div id ='p1'class ='pagedemo _current')所包圍。所以我有以下幾點:

$i=0; 
$pag=0; 
$arr = array(); 

while($rowNews = mysql_fetch_array($rsNews)){ 
    $i++; 
    $arr[$i] = $rowNews; 

    if($i%4==1){ 
     echo "div id='p1' class='pagedemo _current'" 
    } 

    ...show content... 

    if($i%4 ==0){ 
     echo"</div>"; //close the tag of class="pagedemo" 
    } 

}//end of while 

這打開一個div,當我是1; 5; 9 ....並在4(4; 8; 12 ...)的倍數時關閉。但我也想在$ i爲最後一個數字時關閉div,即:如果只有6個結果,我想關閉第六元素後的div。

我沒有完成它

任何想法?

if ($i%4 != 0) { 
    echo"</div>"; 
} 

編輯:

回答

1

您需要能夠統計您的mysql結果中有多少行。然後將它與你的迭代器進行比較。

$i=0; 
$pag=0; 
$arr = array(); 

$total = mysql_num_rows($rsNews); 
while($rowNews = mysql_fetch_array($rsNews)){ 
    $i++; 
    $arr[$i] = $rowNews; 

    if($i%4==1){ 
     echo "div id='p1' class='pagedemo _current'" 
    } 

    ...show content... 

    if($i%4 ==0 || $i == $total){ 
     echo"</div>"; //close the tag of class="pagedemo" 
    } 

}//end of while 
+0

關心$ i == $ total,那只是因爲你在循環開始時做了一個$ i ++。如果你以後使用的是foreach,它會是$ i == $ total-1。順便說一句,我建議你從頭開始刪除$ i ++,並更新你的代碼以反映這種變化。索引從0開始計數而不是1!如果你把它誤導給其他人。 – evildead

+0

啊,我同意。但在他的情況下,他希望他的行從1開始,而不是0.如果我確實從0開始,那麼我會將$ i%4 == 0更改爲($ i + 1)%4 == 0。 – ace

+0

王牌:其實評論是爲user794035,我雖然我應該建議他如何做到這一點。我認爲這樣做的風格很糟糕。 – evildead

0

你一段時間後,加入這應該是像@evildead

0

設置一個變量是否需要密切檢測並在最後檢查:

while($rowNews = mysql_fetch_array($rsNews)){ 
    $i++; 
    $arr[$i] = $rowNews; 

    if($i%4==1){ 
     $close = true; 
     echo "div id='p1' class='pagedemo _current'" 
    } 

    ...show content... 

    if($i%4 ==0){ 
     $close = false; 
     echo"</div>"; //close the tag of class="pagedemo" 
    } 

} 

if($close) 
echo"</div>"; 
2

只需在循環後檢查$ i並關閉,如果i%4!= 0(表示尚未關閉)

$i=0; 
$pag=0; 
$arr = array(); 

while($rowNews = mysql_fetch_array($rsNews)){ 
    $i++; 
    $arr[$i] = $rowNews; 

    if($i%4==1){ 
     echo "div id='p1' class='pagedemo _current'" 
    } 

    ...show content... 

    if($i%4 ==0){ 
     echo"</div>"; //close the tag of class="pagedemo" 
    } 

}//end of while 
if ($i%4 !=0) { 
echo"</div>"; //close the tag of class="pagedemo" 
}