2017-01-23 136 views
1

我想弄清楚如何輸出我的html與PHP的最佳解決方案,同時數上div類。PHP爲循環計數while語句

這是我的功能,打印新聞:

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類中數數的最佳方法是什麼?

回答

3

我認爲當你說1〜4你希望它在1重新來過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次。

+0

乾杯隊友,奇妙地工作 – Faded

1

純HTML的解決方法,這將是有像這樣的代碼:

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

但因爲你是呼應它是不是去上班。你可以做的另一件事是爲這些列指定一個inline-block css屬性。如果你使用bootstrap,你可以使用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>"; 
... 

希望有所幫助。

+0

這是一個很好的CSS解決方法謝謝,我會在以後記住這一點。我和AbraCadaver的回答一起去了,因爲它完全符合我的需要 – Faded