2011-03-28 25 views
0

我試圖做到這一點,與360網格系統:http://imgur.com/4ZFll360格 - 完成了一行奇數的記錄

從數據庫中我得到的產品,這將有4個顯示爲線在各個。

如果每個類別下都有4種產品,那麼它的工作是非常完美的,但如果某個類別中的產品少於4種,設計就會混亂,因爲div沒有正確關閉。 問題是,有時一行中只有3個或更少的產品。

有沒有人知道如何做到這一點?

for($i=0 ; $i<$countprod ; $i++){ 

    $prevprod = $products[$i-1]['name']; 
    $curprod = $products[$i]['name']; 
    if($curprod != $prevprod){ 
     echo '<div class="grid_12 alpha omega"><h2>'.$products[$i]['catname'].'</h2></div>'; 
    } 


    if ($i == 0){ echo '<div class="grid_3 '; } 
     if ($i % 4 == 0) { echo ' alpha">'; } 
     elseif($i % 4 == 3) { echo '</div><div class="grid_3 omega">'; } 
     else{ echo '</div><div class="grid_3">'; 
    } 

     echo $product[$i]['image']; 

    if ($i % 4 == 3) { 
     echo '</div><div class="clear"></div>'; 
     echo '<div class="grid_3'; 
    } 

} 

(約標題對不起,我不知道怎樣稱呼這個問題:))

+0

一試,你可以添加的一個樣本您自己手動創建的期望輸出?最好將它貼在[jsFiddle](http://jsfiddle.net/)上。 – thirtydot 2011-03-28 13:53:12

回答

0

$countprod = count($product); 
$prevprod = ''; 
$close_div = false; 
for ($i=0; $i<$countprod; $i++){ 

    $curprod = $products[$i]['name']; 
    if($curprod != $prevprod){ 
     if ($close_div) echo '</div>'; 
     echo '<div class="grid_12 alpha omega"><h2>'.$products[$i]['catname'].'</h2></div>'; 
    } 

    if ($i % 4 == 0) { 
     echo '<div class="grid_3 alpha">'; 
     $close_div = true; 
    } 
    elseif ($i % 4 == 3) { 
     echo '</div><div class="grid_3 omega">'; 
     $close_div = true; 
    } 
    else { 
     echo '</div><div class="grid_3">'; 
     $close_div = true; 
    } 

    echo $product[$i]['image']; 

    if ($i % 4 == 3) { 
     echo '</div><div class="clear"></div>'; 
     $close_div = false; 
    } 
    $prevprod = $curprod; 
} 
+0

謝謝M42,稍作修改以適應我現有的代碼,這是我用過的。 – Crave 2011-05-27 08:27:12

+0

@Crave:不客氣。 – Toto 2011-05-27 08:28:20

1
echo '<div class="grid_3'; 

您不關閉此標記。

+2

Erm ...'elseif'和'else if'兩者都工作,愛因斯坦。 – 2011-03-28 13:46:06

+0

他的名字的馬克,他實際上閱讀代碼,上帝保佑他。 – Smandoli 2011-03-28 13:48:22

0
$p = 10; // Current number of products 

$ppr = 4; // Products per row 
$x = $i % $ppr; 

if($x != 0){ 
    $countprod = $p + ($ppr - $x); 
} 

echo $countprod; // 12 (4 * 3) 

循環與FOR如果沒有產品只打印空DIV,如果這就是你問什麼...