我试图找出关于如何在计算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类吗?
答案 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>";
...
希望有所帮助。