如何从MySQL创建HTML表?

时间:2010-04-22 12:20:39

标签: php mysql report

我正在构建系统的一部分,用户可以从mysql数据库中定义“视图”。

我想从数据中生成简单的HTML表格/报告,但不仅仅是sql查询的简单输出 - 简单的连接可能还不够。

有什么想法吗?


为了清楚:我非常清楚如何使用PHP / MySQL创建HTML表 - 这是一个简单的部分。我想做的是让我的USERS创建自己的表而不会暴露在这个过程中!


是的,我会提供更多详情 - 感谢所有回复:

目前,用户可以使用向导创建表,然后查看/编辑/删除这些表中的记录。由于表格可能会发生变化,因此很难给出示例。我希望客户输入的数据是租房子 - 房屋,租户,房间,维护问题等表。

我的目标是让用户能够创建特定视图的一些基本格式化输出,例如“显示当前所有房屋的租金周转率”或“显示过期租户”或“显示没有房间的房间”租户”。设置完成后,这些只会被查看,而不会被编辑,所以这个过程只需要设置就可以了。

这有意义吗?如果不可能,我只会对视图进行硬编码 - 只会使系统变得不那么灵活!

6 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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语句的表单。

答案 2 :(得分:1)

您必须将用户暴露给流程的一部分,因为他们必须以某种方式描述表和表关系。您可以从Crystal Reports,Visual Studio和phpMyAdmin等页面中获取页面,并创建可视表设计器。表格表示为一个矩形,标题栏显示表格的名称和字段列表。这些表位于画布上,可以放在该画布上的任何位置。外键表示为连接字段的行。

您可以使用与查询创建者相同的界面:用户通过将它们从表格列表拖动到画布来指定要查询的表格,以及他们感兴趣的字段(可能包括每列旁边的复选框)以及通过用线连接字段来加入哪些字段。要将表连接到自身,您可以允许将表多次添加到查询中,或允许表中的字段连接到同一表中的其他字段。

如果您没有,请抓住phpMyAdmin,安装它,打开数据库并转到“Designer”选项卡以查看其工作原理。您还可以查看一些screenshots

答案 3 :(得分:0)

大约100%的网站执行相同的任务:从SQL数据库创建HTML表 所以,你可以给自己一些PHP / Mysql书来获得一个想法。 虽然所有表都是由程序员硬编码的。

对于用户定义的视图,它可能会更复杂一些。但也可能

答案 4 :(得分:0)

您必须定义用户创建这些HTML表的方式。他们是否设置了多个行和列,然后手动提供表格?

一旦我们不得不做一个模板系统,其中所有图像,css属性,各种html块的位置等等。整个系统只有5或6个mysql表来存储模板属性,但如果它只是一个表,你可以简化过程。

想象一下,一个mysql表用于表格式和属性(行数,列数,列宽,颜色等)和另一个用于放入数据的mysql表。第二个表应该有用于存储日期,行和列位置的列。

剩下的就是让非技术用户可以访问表格来配置和提供表格,并使用一些PHP循环和查询来渲染表格。

答案 5 :(得分: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%工作刚改变。 $ query查询变量根据你的表