我正在构建系统的一部分,用户可以从mysql数据库中定义“视图”。
我想从数据中生成简单的HTML表格/报告,但不仅仅是sql查询的简单输出 - 简单的连接可能还不够。
有什么想法吗?
为了清楚:我非常清楚如何使用PHP / MySQL创建HTML表 - 这是一个简单的部分。我想做的是让我的USERS创建自己的表而不会暴露在这个过程中!
是的,我会提供更多详情 - 感谢所有回复:
目前,用户可以使用向导创建表,然后查看/编辑/删除这些表中的记录。由于表格可能会发生变化,因此很难给出示例。我希望客户输入的数据是租房子 - 房屋,租户,房间,维护问题等表。
我的目标是让用户能够创建特定视图的一些基本格式化输出,例如“显示当前所有房屋的租金周转率”或“显示过期租户”或“显示没有房间的房间”租户”。设置完成后,这些只会被查看,而不会被编辑,所以这个过程只需要设置就可以了。
这有意义吗?如果不可能,我只会对视图进行硬编码 - 只会使系统变得不那么灵活!
答案 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查询变量根据你的表