360 grid - 完成具有奇数记录的行

时间:2011-03-28 13:38:07

标签: php css grid 960.gs modulus

我正在尝试使用360网格系统来完成此任务:http://imgur.com/4ZFll

从数据库中我得到的产品将以每行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';
    }

}

(抱歉标题,我不知道该怎么称呼这个问题:))

3 个答案:

答案 0 :(得分:1)

echo '<div class="grid_3';

您没有关闭此标记。

答案 1 :(得分: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)

如果没有产品只打印空DIV,请使用FOR循环,如果这是您要求的...

答案 2 :(得分: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;
}