Php 如何从MySQL创建HTML表?
我正在构建一个系统的一部分,用户可以从mysql数据库中定义“视图” 我想要一些从数据生成简单HTML表/报告的方法,但不仅仅是简单的sql查询输出-简单的连接可能是不够的 有什么想法吗Php 如何从MySQL创建HTML表?,php,mysql,report,Php,Mysql,Report,我正在构建一个系统的一部分,用户可以从mysql数据库中定义“视图” 我想要一些从数据生成简单HTML表/报告的方法,但不仅仅是简单的sql查询输出-简单的连接可能是不够的 有什么想法吗 只是想澄清一下:我非常清楚如何使用PHP/MySQL创建HTML表-这是最简单的部分。我想做的是允许我的用户创建他们自己的表,而不必暴露在流程中 好的,我会提供更多细节-感谢所有回复: 目前,用户可以使用向导创建表,然后查看/编辑/删除这些表中的记录。由于表格可能会发生变化,因此很难给出示例。我希望客户输入
只是想澄清一下:我非常清楚如何使用PHP/MySQL创建HTML表-这是最简单的部分。我想做的是允许我的用户创建他们自己的表,而不必暴露在流程中
好的,我会提供更多细节-感谢所有回复: 目前,用户可以使用向导创建表,然后查看/编辑/删除这些表中的记录。由于表格可能会发生变化,因此很难给出示例。我希望客户输入的数据是关于出租房屋的——房屋、租户、房间、维护问题等的表格 我的目标是让用户能够创建特定视图的一些基本格式化输出,例如“显示所有房屋当月的租金周转率”或“显示逾期租户”或“显示没有租户的房间”。一旦设置,这些将只被查看,而不是编辑,所以这个过程必须能够进行设置 这有意义吗?如果不可能的话,我会硬编码视图-只是让系统不那么灵活 您可以使用在漂亮的表中显示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语句的表单。大约100%的网站执行相同的任务:从SQL数据库创建HTML表。
所以,你可以买一些PHP/Mysql的书来了解一下。 尽管所有的表都是由程序员硬编码的
至于用户定义的视图,它可能有点复杂。但也有可能您必须定义用户创建这些HTML表的方式。他们是否设置了许多行和列,然后手动输入表格 曾经,我们不得不做一个模板系统,其中包含所有图像、css属性、各种html块的定位等。整个系统是5或6个mysql表,用于存储模板属性,但如果只是一个表,则可以简化过程 设想一个mysql表用于表格式和属性(行计数、列计数、列宽度、颜色等),另一个mysql表用于放入数据。第二个表应该有用于存储日期、行和列位置的列
其余的都是让非技术用户可以访问表单,以配置和提供表,并使用一些PHP循环和查询呈现表。您必须让用户了解部分过程,因为他们必须以某种方式描述表和表关系。您可以从Crystal Reports、Visual Studio和phpMyAdmin等公司获取一个页面,并创建一个可视化表设计器。表格表示为矩形,带有显示表格名称和字段列表的标题栏。这些表位于画布上,可以放置在画布上的任何位置。外键表示为连接字段的线 您可以使用与查询创建者相同的界面:用户通过将表列表拖到画布来指定要查询的表、他们感兴趣的字段(可能在每列旁边包含一个复选框)以及通过将字段与行连接来连接的字段。要将表连接到自身,可以允许将表多次添加到查询中,或者允许表中的字段连接到同一表中的其他字段
如果没有,抓取、安装、打开数据库并转到“设计器”选项卡查看其工作原理。你也可以看看一些这就是你要找的吗?它将从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;
}
100%的工作刚刚改变。
$query变量根据您的表重点是我不想让用户暴露在这个过程中!您不是,在执行此操作之后,用户只能看到HTML。没有办法对用户隐藏HTML。是的,但我希望用户能够为这些表创建视图,而不仅仅是查看输出!我可以自己手动完成,但这不是我想要做的。用户定义的视图是我想要的——我得到了第一个!你关心的不是输出,而是输入。查询生成向导。而输出是最简单的部分。只需从关联数组或表架构中获取字段名,然后绘制一个表。请举个例子。@Chris:创建他们自己的表,或者合并预先存在的表?就是这样-我已经有很多元表存储其他用户生成的数据库表等的信息,所以当然也可以对html表执行同样的操作。用户应该指定列和行的数量,然后使用某种简化的SQL指定每个列中的数据。美好的谢谢您的用户需要自己查询数据吗?
echo createTable($result);
<?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>";
?>