如何在php中每行显示4个项目

时间:2014-08-26 00:12:37

标签: php css

<?php


    while($rows = mysqli_fetch_array($result)){ 
        $i = 0; 
        if($i % 4 === 0) { ?>
        <ul> <?php } ?>
            <li><img src="<?php echo $rows['images'] ?>" /></li>
                <p><?php echo $rows['brand'] ?></p>
            <?php if($i % 4 === 0) { ?>
        </ul>
            <?php } $i++; ?>
    <?php  }

?>

for css

ul{

display block
}

我认为css中的问题

2 个答案:

答案 0 :(得分:0)

$i = 0应该在循环之外,因为每次迭代都会将它设置为0。

你的CSS错了。

ul {
  display: block;
}

如果您希望将<p><?php echo $rows['brand'] ?></p>标记在<li></li>

内,则还应将<ul></ul>放入{{1}}标记中

答案 1 :(得分:0)

这里有很多错误。

首先,表格是为这种结构而建的,除此之外。

你应该有一个你想要的HTML的例子,这样你就有了构建你的php的目标。

但是因为我并不确切地知道你想要什么,而且我通常不做PHP我会试一试。

上次我做了PHP,我使用echo来避免标签混乱。所以我在这里做了同样的事情(导致我认为更具可读性和更重要的可调试性)。

我看到的第一件事是你的$i在while循环中,这意味着它在每次运行时都会重置为0。我把它移出了循环并在最后一次重置它,如果每次测试四次。

$i++也不能是最后一次,这会使您的$i=0$i=4$i=8等打开并关闭<ul>和在<li></ul>之间将有3个解包<ul>

第二件事是<p>(无序列表)中的<ul>,但在<li>(列表项)之外,这是一个否定的。所以我把它移到了<li>

里面
<?php
$i = 0; 
while($rows = mysqli_fetch_array($result))
{ 
    if($i % 4 === 0) {
        echo "<ul>";
    }
    $i++;
    echo "<li>";
    echo "<img src=\"$rows['images']\"/>";
    echo "<p>$rows['brand']</p>";
    echo "</li>";
    if($i % 4 === 0) {
        $i = 0;
        echo "</ul>";
    } 
}?>

对于CSS,请试用display:inline-block

li{
    display:inline-block;
}

这应该是结果 http://jsfiddle.net/go16zspr/2/

我将边框添加到<li>,以便您可以看到它们在占用空间方面的真实外观。

希望这有帮助。至少它的一些指示。