2012-07-31 50 views
1

我正在製作一個php頁面來從mysql數據庫中繪製信息,並且在我陷入困境之前,我想我會看看是否有更簡單的方法來做我正在做的事情。PHP MYSQL水平循環

我有一個MySql查詢返回多行,通過它我可以很容易地使用while循環進行循環,並且它顯然會循環通過有相對「匹配」數據的地方。

拉出的每一行可能有1列到16列的數據,每行的數據是不同的,我當前提取有效信息的方式是對每列的硬編碼「if」命令,以便只有具有被輸入被顯示出來,如:

if($column1 != ""){ 
    $output .= "<div style='float: left;'>Column 1 Stuff</div>"; 
    } 
if($column2 != ""){ 
    $output .= "<div style='float: left;'>Column 2 Stuff</div>"; 
    } 

這工作得很好,但它是不是很動態的,需要的代碼的更新,如果MySQL數據庫表的擴大,它是。我真的希望能夠做到這一點,它使用一段代碼,就像一個while循環一樣,它爲每個有數據的列執行相同的過程,並忽略任何空白單元格。有沒有一種有效實現這一點的好方法,任何人都知道?

此外,爲了防止出現問題,我的「div」全部對齊左側,以便當它們到達封閉div的末端時,它們會自動將自己包裝到下一行,所以如果有9個結果將3行3「格」框。這是實現這種結果的有效方式嗎?我正在研究如何使用「break」命令,並在本文中回答 - >How to do a Horizontal looping in PHP,但我在IE9標籤之前遇到了很多兼容性問題,所以我儘可能避免使用更多的兼容性問題。

在此先感謝您的幫助,如果確實可以的話! 喬

+0

等等。如何爲同一個查詢中的每行數據提供不同數量的列?你可以有空列,但我不明白你會得到不同數量的列。 – Palladium 2012-07-31 14:47:48

+0

對不起,解釋不好,我的意思是在16列內可能有1到16個所需數據單元,總是會有相同數量的列(現在,無論如何) – JoeP 2012-07-31 14:50:01

回答

8

喜歡的東西:

$result = mysql_query(...); 
while($row = mysql_fetch_assoc($result)) { 
    foreach ($row as $key => $val) { 
     if (!empty($val)) { 
      echo ... 
     } 
    } 
} 

將處理結果集中的任意數量的列。

+0

真的這麼簡單嗎? !?我幾乎不希望!我會馬上回來:) – JoeP 2012-07-31 14:52:18

+0

好的,那是我尋找的那種東西,謝謝!它實際上是複製數據,但每個活動單元格都會輸出兩次,您可以想到的任何快速修復? – JoeP 2012-07-31 15:06:00

+0

我正在使用mysql_fetch_array而不是assoc,所以不要擔心:) – JoeP 2012-07-31 15:08:44