2013-01-03 75 views
0

我有一個小問題,推送到一個HTML表中的MySQL表。MYSQL PHP輸出排序,得到值之間的輸出

這裏是我的數據庫,選擇:

$result = mysql_query(" 

SELECT dat_eb_registrants.id, dat_eb_registrants.first_name, dat_eb_registrants.last_name, dat_eb_registrants.email, dat_eb_registrants.comment, dat_eb_registrants.amount, dat_eb_registrants.published, dat_eb_registrants.transaction_id, dat_eb_registrants.register_date, GROUP_CONCAT(dat_eb_field_values.field_value SEPARATOR '</td><td>') 
FROM dat_eb_registrants LEFT JOIN dat_eb_field_values ON dat_eb_registrants.id=dat_eb_field_values.registrant_id 
WHERE `event_id` >= 20 AND `event_id` <= 25 
GROUP BY dat_eb_registrants.id 
ORDER BY $sort $ascdsc 

"); 

被推到我的HTML表格使用此:

while ($row = mysql_fetch_row($result)) { 
echo "<tr>"; 
echo "<td>" . $row[9] . "</td>"; 
echo "<td>"; 

現在,我的問題是,這個充滿了我的表一中來自dat_eb_field_values.field_value的行很少,我不能在這些結果之間獲得其他行($ row [0]到$ row [8])。

例如,如果我的$值來自dat_eb_field_values.field_value,而我的$數據來自dat_eb_registants。這將是我的表格:

| header 1 | header 2 | header 3 | header 4 | header 5 | header 6 | 
------------------------------------------------------------------- 
| $value1 | $value2 | $data3 | $value4 | $data1 | $data2 | 
| $value1 | $value2 | $data3 | $value4 | $data1 | $data2 | 
| $value1 | $value2 | $data3 | $value4 | $data1 | $data2 | 

在此先感謝!洛朗

+0

只是一個問題,你爲什麼還在使用mysql_?你聽說過myqsqli_或PDO嗎? – user115422

+0

是的,我知道這是不好的... – Laurent

+0

我會建議使用PDO,因爲它有最廣泛的支持數據庫包括MySQL,SQLite和PostGreSQL。我希望這有助於,也準備好聲明將防止SQL注入攻擊。 – user115422

回答

0

相反呼應出$row[9]將它放在一個陣列中的數據,再吐出來,當你覺得有必要(和你已經檢查了其他元素之後)

例如更改此:

while ($row = mysql_fetch_row($result)) { 
echo "<tr>"; 
echo "<td>" . $row[9] . "</td>"; 
echo "<td>"; 

要這樣:

while ($row = mysql_fetch_row($result)) { 
$myArray[] ="<tr><td>" . $row[9] . "</td>""<td>"; 
+0

你能舉個例子嗎?因爲我不知道如何從數組中提取數值,因爲它來自一個數組... – Laurent

+0

肯定只是更新回答 – pzirkind

+0

?這給我一個解析錯誤?我怎麼能'吐'他們後來又回來了? (抱歉,所有的問題..) – Laurent

0

,而不是mysql_fetch_row使用mysql_fetch_array

ORDER BY $sort $ascdsc將其更改爲

ORDER BY '".$sort."', '".$ascdsc."' 

爲例: 使用mysql_fetch_array嘗試回聲這個

echo $row['dat_eb_registrants.id'] ; 

你的SQL是難以閱讀

使用本

SELECT dr.id, dr.first_name, dr.last_name, dr.email, dr.comment, dr.amount, dr.published, dr.transaction_id, dr.register_date, GROUP_CONCAT(df.field_value SEPARATOR '</td><td>') 
    FROM dat_eb_registrants dr 
    LEFT JOIN dat_eb_field_values df 
    ON dr.id=df.registrant_id 
    WHERE `event_id` >= 20 AND `event_id` <= 25 
    GROUP BY dr.id 
    ORDER BY '".$sort."', '".$ascdsc."' 

但你已經接受了答案here !!

+0

你能舉個例子嗎?因爲我沒有得到如何從MySQL數組中提取值... – Laurent

+0

什麼是差異? OP總是使用數字鍵,而fetch_row則返回數字和字符串鍵。你所做的只是減少返回數組的大小,但從根本上沒有改變任何東西。 –

+0

對不起,我不認爲這就是我的意思,我想要做的是將每個'field_value'表示爲一個新行,以便我可以單獨使用它們。現在它只是一次給我所有的東西。 – Laurent

0
while ($row = mysql_fetch_row($result)) { 
    echo "<tr>"; 
    foreach($row AS $val) 
     echo "<td>" . $val . "</td>"; 
    echo "<td>"; 
} 

應該做