2011-08-04 39 views
1

我有一個while循環運行是從MYSQL表返回值。它從查詢中返回約90個條目。我的希望是能夠向上突破這些90個值並在5分組顯示它們這可能聽起來令人困惑,所以讓我分享一些代碼示例,以幫助澄清:如何限制PHP While While循環的輸出?

$con = mysql_connect("host", "username", "password") or die ("Unable to connect to server"); 
mysql_select_db("database") or die ("Unable to select database"); 
$sql = mysql_query("SELECT * FROM `table` WHERE column IS NOT NULL AND column <> ''"); 

在這裏,我拉着值指出,我需要從表...

while($row=mysql_fetch_array($sql)) 
{ 
$id=$row['id']; 
$column=$row['column']; 

echo $id . '<br>'; 
echo $column . '<br>'; 

} 

在這一點上,我已經運行循環,並獲得所有90個條目的顯示。我怎樣才能將這些值拉出來並以較小的塊顯示出來?如果我在while循環之外使用循環值,它只會給出集合中的最後一個值。有沒有簡單的方法來使用列中的唯一$id值來獲得循環內的特定分組?

+0

你想讓他們按5秒分組嗎?或通過他們的ID?你提到兩個。 –

+1

您是否考慮過在SQL中使用'LIMIT'子句? – Dor

+0

@Jason我只是想了解如何做到這一點,所以不要太挑剔是否使用ID或5分組。 – Presto

回答

2

這之後每5條增加更多的BR的和HR:

$cnt = 0; 
while($row=mysql_fetch_array($sql)) 
{ 

    $id=$row['id']; 
    $column=$row['column']; 

    echo $id . '<br>'; 
    echo $column . '<br>'; 

    if($cnt % 5 == 0) echo "<br><br><hr><br><br>"; 

    $cnt++; 
} 
+0

這裏有幾個很棒的解決方案,但您的答案對我來說很有意義,並提供了我需要的解決方案。我還在Dor的頂部的評論中加入了「LIMIT」,以獲得之後的確切佈局。謝謝。 – Presto

0

您希望將此數據保存在變量中,並在循環外引用它。

試試這個:

$data = array(); 
while($row=mysql_fetch_array($sql)) 
{ 
    $data[$row['id']] = $row['column']; 
} 

現在你可以只顯示特定的行:

print $data[$someRow]; 
+0

這是非常有用的,併爲我的第二個問題提供瞭解決方案。謝謝您的幫助。 – Presto

1

以下是您可以採取的一種(不是很複雜的)方法:

$group_size = 5; 
$tracking_variable = 0; 
while ($row = function_to_fetch_row()) { 
    if ($tracking_variable == 0) { 
     // logic for the start of a grouping 
    } 
    // logic to display the row 
    $tracking_variable = ($tracking_variable + 1) % $group_size; 
    if ($tracking_variable == 0) { 
     // logic for the end of a grouping 
    } 
} 
if ($tracking_variable > 0) { 
    // logic for the end of the final grouping 
}