PHP语句中的循环计数

时间:2017-01-23 18:50:41

标签: php html

我试图找出关于如何在计算div类的同时使用php输出我的html的最佳解决方案。

这是我打印新闻的功能:

function post_news()
{
    $post_news = $this->mysql->Query("SELECT * FROM news ORDER BY id DESC LIMIT 4");
    while ($news_row = mysqli_fetch_array($post_news))
    {
        echo "<div class='column1'>
            <div class='box'>
            <h3>".$news_row['title']."</h3>
            <p>".$news_row['content']."</p>
            <a href='index.php?p=news&id=".$news_row['id']."' class='button button-small'>Read More</a> </div>
            </div>";
    }
}

我正在尝试的是,它显示<div class='column1'>我需要它向上计数到class='column4'。当我尝试For循环或第二个While循环时,我有时可以对它进行计数,但它总是会有一个新的行,我希望这些块像平常一样并排显示。

那么,如果没有在每个块之后进行换行,最好的方法是计算我的div类吗?

2 个答案:

答案 0 :(得分:3)

我假设当你说1到4时你希望它在4之后重新开始。只需增加一个计数器并在它达到4时重置它:

$num = 0;
while ($news_row = mysqli_fetch_array($post_news))
    {
        $num++;
        echo "<div class='column{$num}'>
            <div class='box'>
            <h3>".$news_row['title']."</h3>
            <p>".$news_row['content']."</p>
            <a href='index.php?p=news&id=".$news_row['id']."' class='button button-small'>Read More</a> </div>
            </div>";
        if($num == 4) { $num = 0; }
    }

或者实际上,您在查询中使用LIMIT 4,因此您并不需要if语句将其重置为0,因为循环只会迭代4次

答案 1 :(得分:1)

对此的纯html解决方法是使代码如此:

<div class='column1'>
...
</div><div class='column2'>
..
</div>

但是因为你回应它并不会起作用。您可以做的另一件事是为这些列指定inline-block css属性。如果您正在使用引导程序,则只需使用col-xs-3即可拥有4个偶数列。

如果没有,相反,您必须将每个类指定为width:25%

总结一下,在css:

.col{
    width:25%;/*probably going to have make responsive for screen width*/
    display:inline-block;/*or float:left, whichever*/
}

在php / html中:

...
echo "<div class='column1 col'>
            <div class='box'>
            <h3>".$news_row['title']."</h3>
            <p>".$news_row['content']."</p>
            <a href='index.php?p=news&id=".$news_row['id']."' class='button button-small'>Read More</a> </div>
            </div>";
...

希望有所帮助。