题
问候,
我将数据存储在 mysql 上,并在 1 个表中使用分隔符“,”。我也有行和列存储在数据库中。现在我必须使用数据库中存储的行号和列号输出数据来绘制表格。
行数和列数是用户输入的,因此可能会有所不同。
假设列上有数字 3,行上有数字 3。
我需要像显示一样,
|___d1__|___d2__|___d3__|
|___d4__|___d5__|___d6__|
|___d7__|___d8__|___d9__|
其中d1-d9是存储在mysql数据库中的数据,在一张表中以“,”分隔。
谢谢你帮助我。
解决方案
您可以使用explode()函数将逗号分隔值从数据列转换为数组:
<?php
$result = mysql_query('SELECT rows, columns, data from table_name where id=1');
$record = mysql_fetch_assoc($result);
$rows = $record['rows'];
$columns = $record['columns'];
$data = explode(',' , $record['data']);
if (sizeof($data) != $rows * $columns) die('invalid data');
?>
要显示表格,您需要两个嵌套的for循环:
<table>
<?php for ($row = 0; $row < $rows; $row++) : ?>
<tr>
<?php for ($column = 0; $column < $columns; $column++) : ?>
<td>
<?php echo $data[$row * $columns + $column]; ?>
</td>
<?php endfor ?>
</tr>
<?php endfor ?>
</table>
其他提示
这不会帮助你解决这个问题,但是一句好建议:永远不要将逗号分隔值写入数据库字段。你不能明智地查询这样存储的信息,你的应用程序代码将会被丑陋的转换混乱。而是使用一个单独的表,其中包含对主表的引用和每个值的一行。
假设用户将表格大小设置为 2 行和 3 列,并为 6 个单元格进行一些输入,则将进入数据库的数据将是
2,3,d1,d2,d3,d4,d5,d6
当您从单元格中获取数据并对获取的字符串进行爆炸时,您将获得包含 8 个元素的 1 维数组
$r = $e[0] 行
$c = $e[1] 列
$e[2-7]数据
- wrtite open <table> 标签
- 两个循环,一个循环,一个循环,
- 第一个将生成行开头的代码
- 写入开头<tr>标签
- 其中一个将为行生成代码。
- 写入开始<td>标签
- 写入数据 $e[1 + 从内部和外部循环计算的位置]
- 写入结束<td>标签
- 内循环结束
- wrtite 结束 <tr> 标签
- 外循环结束
- wrtite 结束 <table> 标签
它应该给你这个想法
不隶属于 StackOverflow