0

我正在尝试使用 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';
    }

}

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

4

3 回答 3

1
echo '<div class="grid_3';

您没有关闭此标签。

于 2011-03-28T13:42:52.427 回答
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,如果这是您所要求的...

于 2011-03-28T13:49:31.657 回答
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;
}
于 2011-03-28T14:34:12.453 回答