2015-08-21 33 views
0

我通過PHP將所有的細節從我的MYSQL數據庫中提取出來,然後在一個簡單的while循環中循環來寫出HTML中的輸出。從php輸出分號分隔的行MySQL查詢

$queryDB = mysql_query("SELECT * FROM TABLEA") 

while($info = mysql_fetch_array($queryDB)) 

    echo " <tr> "; 
    echo "<td ".$td_color." > " . $info['column1'] . "</td> "; 
    echo "<td ".$td_color." > " . $info['column2'] . "</td> "; 
    echo "<td align='center' ".$td_color." > " . $info['column3'] . "</td> "; 
    echo "<td align='center' ".$td_color." > " . $info['column4'] . "</td> "; 
    echo "<td ".$td_color." > " . $info['column5'] . "</td> "; 
    echo "<td ".$td_color." > " . $info['column6'] . "</td> "; 
    echo "</tr> "; 

直到最近,這工作得很好,但發生了什麼事爲晚是其中一列已經從一個簡單的輸入的東西,包含由分隔的多個條目成長。

例如:

Column 1 | Column 2 | Column 3 | Column 4 | Column 5 | Column 6 | 
----------------------------------------------------------------- 

ABC  | DEF  | HIG  | 123; JKL | 324  | 345 | 

123  | GHK  | GHY  |1 ; 3; KL | 546  | 546 | 

不過審查,這是一個有點麻煩,所以我想我的代碼單獨列4的內容和​​repeate行有奇異項,如:

Column 1 | Column 2 | Column 3 | Column 4 | Column 5 | Column 6 | 
----------------------------------------------------------------- 
ABC  | DEF  | HIG  | 123  | 324  | 345 | 

ABC  | DEF  | HIG  | JKL  | 324  | 345 | 

123  | GHK  | GHY  |1   | 546  | 546 | 

123  | GHK  | GHY  |3   | 546  | 546 | 

123  | GHK  | GHY  |KL  | 546  | 546 | 

我知道我可能必須將第4列放入數組中,但我只是不理解或不具備將它們拼湊在一起的知識。

+1

所以,你想從其中一列(?或全部)多個子值相乘的結果'$行'?然後分割該條目並添加第二個「foreach」。 (或者用[[normalize](https://en.wikipedia.org/wiki/Database_normalization)所有的數據庫事物「) – mario

+0

我同意@mario,該列可以增長幷包含更多以分號分隔的值,這將會有一天難以維持。 – KaeL

回答

1

根據不同的列可能在哪裏,我只是爆炸列和循環的元素。像這樣的東西,如果你知道semicolumn總是要在第4列可能的工作:

$queryDB = mysql_query("SELECT * FROM TABLEA") 

while($info = mysql_fetch_array($queryDB)){ 
$elements = explode(";", $info['column4']); 
foreach($elements as $element){ 
    echo " <tr> "; 
    echo "<td ".$td_color." > " . $info['column1'] . "</td> "; 
    echo "<td ".$td_color." > " . $info['column2'] . "</td> "; 
    echo "<td align='center' ".$td_color." > " . $info['column3'] . "</td> "; 
    echo "<td align='center' ".$td_color." > " . $element . "</td> "; 
    echo "<td ".$td_color." > " . $info['column5'] . "</td> "; 
    echo "<td ".$td_color." > " . $info['column6'] . "</td> "; 
    echo "</tr> "; 
} 
} 
+0

即使字符串不包含分隔符,'explode()'仍然會返回字符串。在這種情況下,它將返回多個元素或一個元素(如果沒有分號)。但讓我只是說錯誤處理總是一件好事,而且做出假設總是一件壞事。 – Keven

+0

這對我所需要的非常完美。謝謝!!! – user2429563