2010-04-22 83 views
2

我正在構建一個系統的一部分,用戶可以從mysql數據庫中定義「視圖」。如何從MySQL創建HTML表格?

我想要一些從數據生成簡單HTML表格/報告的方式,但不是簡單的sql查詢輸出 - 簡單的連接可能是不夠的。

任何想法?


只是要清楚:我完全知道如何創建一個HTML表使用PHP/MySQL的 - 這是一個簡單的部分。我想要做的是讓我的用戶創建他們自己的桌子,而不會暴露在這個過程中!


吧,我會給一些詳情 - 感謝所有的答覆:

目前用戶可以使用嚮導創建表,然後查看這些表中/編輯/刪除記錄。這使得很難舉例說明,因爲表格可能會改變。我希望客戶輸入的數據是租賃房屋 - 房屋,租戶,房間,維護等問題的表格。

我的目標是讓用戶做的是創建一些特定視圖的基本格式輸出例如「顯示所有房屋當月的房租成交量」或「顯示過期的租戶」或「沒有租戶的展示房間」。一旦建立,這些只會被查看,而不會被編輯,所以這個過程必須是可以忍受的。

這有道理嗎?如果這不可能,我只是硬編碼的意見,只是使系統更不靈活!

+0

那麼,你的關注應該不輸出,但輸入。查詢構建嚮導。輸出是最簡單的部分。只需從關聯數組或表模式中獲取字段名稱,然後繪製一個表。 – 2010-04-22 12:42:47

+0

一個例子將不勝感激。 – 2010-04-22 12:44:55

+0

@Chris:創建自己的表格,還是合併現有的表格? – outis 2010-04-22 21:26:10

回答

0

您必須定義用戶將創建這些HTML表格的方式。他們是否設置了許多行和列,然後手動提供表格?

一旦我們不得不做一個模板系統,其中所有圖像,CSS屬性,各種html塊的位置等。整個系統是5或6個mysql表格只是爲了存儲模板屬性,但如果它只是一張表可以緩解這一過程。

想象一下,用於表格格式和屬性(行數,列數,列寬,顏色等)的一個mysql表格以及用於放入數據的另一個mysql表格。這第二張表應該有用於存儲日期,行和列位置的列。

剩下的工作都是讓非技術用戶可以訪問的表格,以及一些PHP循環和查詢來渲染表格。

+0

就是這樣 - 我已經有很多元表存儲其他用戶生成的數據庫表等信息,所以肯定可以爲html表完成同樣的工作。 用戶應該指定列數和行數,然後使用某種簡化的SQL進行數據分析。尼斯。謝謝! – Chris 2010-04-23 01:53:18

+0

您的用戶需要自行查詢數據? – Benoit 2010-04-23 07:12:51

3

您可以使用phpMyAdmin顯示MySQL的尼斯表,或者如果你想自己的代碼,你可以使用PHP和HTML做的工作:

<table> 
<?php 
mysql_connect("localhost", "mysql_user", "mysql_password") or 
    die("Could not connect: " . mysql_error()); 
mysql_select_db("mydb"); 

$result = mysql_query("SELECT id, name FROM mytable"); 

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
    ?> 
<tr> 
    <td><?=$row['id']; ?></td> 
    <td><?=$row['name']; ?></td> 
</tr>  
<? 
} 

mysql_free_result($result); 
?> 
</table> 

編輯:看了您的修改後,也可以不成爲讓用戶「創建自己的桌子」的最佳主意,而是給他們一些選項和排序順序,以創造更好的用戶體驗。否則,它只是一個帶有一些輸入元素和一些if語句的表單。

+0

問題是,我不想讓用戶知道這個過程! – Chris 2010-04-22 12:27:37

+0

你不行,這個執行完後所有用戶都可以看到的就是HTML。而且無法從用戶隱藏HTML。 – Sam152 2010-04-22 12:29:41

+0

是的,但我希望用戶能夠爲這些表創建視圖,而不僅僅是查看輸出!我可以自己手動完成,但這不是我想要做的。 – Chris 2010-04-22 12:34:21

0

大約100%的網站執行相同的任務:從SQL數據庫創建HTML表格。
所以,你可以得到一些PHP/Mysql書來獲得一個想法。 儘管所有表都由程序員硬編碼。

至於用戶定義的視圖可能會更復雜一點。但也有可能

+0

用戶定義的視圖就是我所追求的位 - 我得到了第一位! – Chris 2010-04-22 12:37:38

1

您必須將用戶公開到流程的一部分,因爲他們必須以某種方式描述表和表關係。您可以從Crystal Reports,Visual Studio和phpMyAdmin等頁面中創建一個可視化表設計器。一個表格被表示爲一個帶有標題欄的矩形,該標題欄顯示了表格的名稱和字段列表。這些表格位於畫布上,可以放置在該畫布的任何位置。外鍵表示爲連接字段的行。

您可以使用與查詢創建者相同的界面:用戶通過將他們從表列表拖到畫布中,指定他們感興趣的字段(可能包括每列旁邊的複選框)以及哪些字段通過連接字段來加入。要將表連接到自己,您可以允許將表添加到查詢中,或者允許將表中的字段連接到同一表中的其他字段。

如果你沒有它,抓住phpMyAdmin,安裝它,打開一個數據庫,並轉到「設計器」選項卡,看看它是如何工作的。你也可以看看一些screenshots

4

這是你在找什麼?它會動態地從mysql結果生成一個html表格,不管結果有多大或多大。

//this function dynamically outputs a basic HTML table from any mysql result 
function createTable($result) { 
    $table = '<table><tr>'; 
    for ($x=0;$x<mysql_num_fields($result);$x++) $table .= '<th>'.mysql_field_name($result,$x).'</th>'; 
    $table .= '</tr>'; 
    while ($rows = mysql_fetch_assoc($result)) { 
    $table .= '<tr>'; 
    foreach ($rows as $row) $table .= '<td>'.$row.'</td>'; 
    $table .= '</tr>'; 
    } 
    $table .= '<table>'; 
    //mysql_data_seek($result,0); //if we need to reset the mysql result pointer to 0 
    return $table; 
} 

這是你如何打印表格:

echo createTable($result); 
0
<?php 
    $query="SELECT * FROM table_name"; 
    $result=mysql_query($query); 
    $numfields = mysql_num_fields($result); 
    echo "<table border=1><tr>"; 

    for ($i=0; $i < $numfields; $i++) // Header 
    { echo '<th>'.mysql_field_name($result, $i).'</th>'; } 

    echo "</tr>"; 

    while 
    ($res=mysql_fetch_row($result)) //you may use mysql_fatch_array($result) which can hendel both $res[name] and $res[1] 
    { 
    echo" 
    <tr> 
    <td> $res[0]</td> 
    <td> $res[1]</td> 
    <td> $res[2]</td> 
    . 
    . 
    . 
    </tr>"; 
    } 

    echo"</table>"; 
?> 

100%的工作只是改變。 $查詢變量根據你的表