2011-11-09 56 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

相关问题