2014-05-24 33 views
0

我試圖用for循環檢索前4個條目,但它似乎重複1次輸入4次。For循環檢索相同的mysql行

這是我的代碼:

$con=mysqli_connect("localhost","root","root","test"); 
// Check connection 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

$result = mysqli_query($con,"SELECT * FROM activiteiten"); 
while($row = mysqli_fetch_array($result)) { 
    for ($result = 1; $result <= 4; $result++) { 
    echo "<div class='agenda_item' style='background-color:#F39'>"; 
    echo "<img src='images/soosavond_small.jpg' class='soospict_small' />"; 
    echo "<div class='agenda_content'>"; 
    echo "<p class='datum'>" . $row['datum'] . "</p>"; 
    echo "<p class='onderwerp'>" . $row['naam_activiteit'] . "</p>"; 
    echo "<p class='details'>" . $row['beschrijving'] . "</p>"; 
    echo "</div>"; 
    echo "<a href='#'' class='pijlklein'>MEER INFO</a>"; 
    echo "</div>"; 
    } 
} 
mysqli_close($con); 
+0

刪除for循環,並更改您的mysql查詢 –

回答

2

你不需要爲環路。我修改了代碼,僅回顧前4項。 看看cahnged查詢LIMIT 4

<?php 
     $con=mysqli_connect("localhost","root","root","test"); 
     // Check connection 
     if (mysqli_connect_errno()) { 
      echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
     } 

     $result = mysqli_query($con,"SELECT * FROM activiteiten LIMIT 4"); 
     while($row = mysqli_fetch_array($result)) { 
      echo "<div class='agenda_item' style='background-color:#F39'>"; 
      echo "<img src='images/soosavond_small.jpg' class='soospict_small' />"; 
      echo "<div class='agenda_content'>"; 
      echo "<p class='datum'>" . $row['datum'] . "</p>"; 
      echo "<p class='onderwerp'>" . $row['naam_activiteit'] . "</p>"; 
      echo "<p class='details'>" . $row['beschrijving'] . "</p>"; 
      echo "</div>"; 
      echo "<a href='#'' class='pijlklein'>MEER INFO</a>"; 
      echo "</div>"; 
     } 
     mysqli_close($con); 
     ?> 
+0

是的,這是我曾經有,但檢索所有行,我只需要第一個4 – lwensveen

+0

@ user3560947好吧,我會修改我的答案。請回來在一分鐘內。 –

0

你在while循環中有一個for循環。您可以刪除的for循環和使用LIMIT從MySQL(這是由PHP(更好的性能),獲取所有條目更好,如果你只需要第4項):

SELECT * FROM activiteiten LIMIT 4 

如果仍要用php來做:

$results = 0; 
while($row = mysqli_fetch_array($result) && $results < 4) { 
    echo "<div class='agenda_item' style='background-color:#F39'>"; 
    ... 
    $results++; 
} 
0

你的代碼如同所呈現的那樣以某種方式混合了你的行爲。不需要for循環。你應該設定一個LIMIT在你的MySQL查詢像這樣:

$con=mysqli_connect("localhost","root","root","test"); 
// Check connection 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

$result = mysqli_query($con,"SELECT * FROM activiteiten LIMIT 0,4"); 
while($row = mysqli_fetch_array($result)) { 
    echo "<div class='agenda_item' style='background-color:#F39'>"; 
    echo "<img src='images/soosavond_small.jpg' class='soospict_small' />"; 
    echo "<div class='agenda_content'>"; 
    echo "<p class='datum'>" . $row['datum'] . "</p>"; 
    echo "<p class='onderwerp'>" . $row['naam_activiteit'] . "</p>"; 
    echo "<p class='details'>" . $row['beschrijving'] . "</p>"; 
    echo "</div>"; 
    echo "<a href='#'' class='pijlklein'>MEER INFO</a>"; 
    echo "</div>"; 
} 
mysqli_close($con); 

與原有代碼的問題與while混合for在你表現爲while在PHP手冊條目解釋的情況下結束了:

while語句的含義很簡單。它告訴PHP重複執行 嵌套語句,只要while表達式 的計算結果爲TRUE。

所以你有一個while迭代結果,但你也有嵌套在那裏的for循環。 100%不必要。

我調整它的方式是隻刪除那個for循環,但是也會將LIMIT 0,4添加到MySQL查詢中。這基本上告訴MySQL從第一行開始讀取4行,這被稱爲0