2011-11-09 121 views
-2

請幫忙, 我在函數中調用數據庫中的數據,並希望以表格格式將其顯示給用戶。是我的目標實現的是讓所有的名字在我的數據庫看起來是這樣的:在使用PHP輸出數據庫中的數據時遇到困難

John Peter James Steven 
Jess Syndey Monique Lynda 

但什麼我得到是這樣的:

John John John John 
Peter Peter Peter Peter 
James James James James 
etc etc etc etc 

這裏是我的代碼:

function public_navigation($sel_subject, $sel_page, $public = true) { 
    $output = "<table border=\"1\">"; 
    $subject_set = get_all_subjects($public); 
    $column_count = mysql_num_fields($subject_set); 
    while ($subject = mysql_fetch_array($subject_set)) { 
    $output .= "<tr>"; 
    for($column_num = 0; $column_num < $column_count; $column_num++) { 
     $output .= "<td><a href=\"index.php?subj=" . urlencode($subject["id"]) . 
       "\">{$subject["menu_name"]}</a></td>"; 
    }   
    } 
    $output .= "</tr></table>"; 
    return $output; 
} 
+0

這是由for循環引起的。你想在那裏迭代什麼? – chchrist

+0

我想顯示我的網站上的數據庫中的所有名稱,例如。 1 2 3 4,然後移動到下一行5 6 7 8,但我得到的是1 1 1 1和下一行2 2 2 2等等等等,我做錯了什麼。 – user1002749

+0

請添加更多示例代碼,以顯示您在數據庫中擁有什麼,以及您的實際查詢的樣子。 –

回答

0

當遇到數據庫查詢問題時,您應該始終發送查詢。它很好,如果你掩飾字段名稱等,但很難找到問題沒有更多的細節。

對於初學者來說,看起來你是按姓名排序,即使你不想。從查詢中刪除「ORDER BY [FIELDNAME]」應該解決這個問題。其次,看起來你正在'分組'某種東西,或者'加入'某種東西,而不會濾除雙重結果。至少,當您看到多次彈出相同的行時,這是最常見的問題。這可以通過在查詢中使用「DISTINCT([FIELDNAME])」來解決。

而且,在旁註中,爲什麼要使用get_all_subjects()和mysql_num_fields()而不是mysql_query()?事實上,我甚至不知道什麼get_all_subjects()不,php.net沒有它,它絕對不是一個標準的PHP函數...

function public_navigation($sel_subject, $sel_page, $public = true) { 
    $RowCount = 1; 
    $SQL = mysql_query("YOUR QUERY"); 
    while ($Row = mysql_fetch_array($SQL) { 
    $RowHTML = '<td>[CONTENTS OF CELL]</td>'.(($RowCount % 4) ? '</tr><tr>' : ''); 
    $RowCount++; 
    } 

return eregi_replace('<tr></tr>','','<table><tr>'.$output.'</tr></table>'); 
} 
+0

對不起,從我身邊這個愚蠢的,謝謝你的時間和幫助,它現在的作品。 – user1002749

0

你有兩個嵌套循環, while總是讀取一個新行,而for則像輸出行一樣經常輸出。打開

<tr> 

之前的一段時間後關閉它。然後設置

$i=0; 

之前。

在同時做到這一點:

if ($i%5 == 0) 
{ 
    echo "</tr><tr>"; 
} 
$i++; 

這應該這樣做。

+0

謝謝弗洛,代碼終於起作用 – user1002749

1

嘗試:

function public_navigation ($sel_subject, $sel_page, $public = true, $column_count = 4) { 
    $output = '<table border="1">'; // Start table element 
    $subject_set = get_all_subjects($public); // Get data 
    for ($i = 1; $subject = mysql_fetch_array($subject_set); $i++) { // Loop data witha counter 
    if ($i == 1) { 
     // Start of a new row 
     $output .= '<tr>'; 
    } 
    // Cell for this record 
    $output .= '<td><a href="index.php?subj='.htmlspecialchars(urlencode($subject["id"])).'">'.htmlspecialchars($subject["menu_name"]).'</a></td>'; 
    if ($i >= $column_count) { 
     // End of this row 
     $i = 0; 
     $output .= '</tr>'; 
    } 
    } 
    if ($i > 1 && $i <= $column_count) { 
    // Pad with an empty cell if needed 
    $colspan = ($column_count + 1) - $i; 
    $output .= "<td colspan=\"$colspan\" /></tr>"; 
    } 
    $output .= '</table>'; // End of table 
    return $output; // Return output 
} 
+0

非常感謝你,先生,它的作品,你只是讓我的一天。 – user1002749

+0

哇這個建築是一個聰明的,從來沒有見過之前,爲+1,但我喜歡我的內心的東西與%更好 – Flo

+0

嘿,也許你們可以幫助我在我遇到的另一個問題,我是隻有這個初學者,你是親。我發佈我的問題在這個鏈接(http://stackoverflow.com/questions/8064170/sending-a-variable-in-php-with-a-form-to-the-same-page-but-i-am-越來越錯誤)你能幫我解決這個問題嗎? – user1002749

相關問題