问候,
我将数据存储在mysql中,并在1个表中使用分隔符“,”。 我也有行和列存储在数据库中。 现在我必须使用存储在数据库中的行和列号输出数据来绘制表格。
行和列号是用户输入,因此可能会有所不同。
比方说,列上有3号,行上有3号。
我需要像显示那样做,
|___d1__|___d2__|___d3__|
|___d4__|___d5__|___d6__|
|___d7__|___d8__|___d9__|
其中d1-d9是存储在mysql数据库中的数据,在一个表中带有分隔符“,”。
感谢您的帮助。
答案 0 :(得分:6)
这不会帮助你解决这个问题,但是一句好建议:永远不要将逗号分隔值写入数据库字段。你不能明智地查询这样存储的信息,你的应用程序代码将会被丑陋的转换混乱。而是使用一个单独的表,其中包含对主表的引用和每个值的一行。
答案 1 :(得分:6)
您可以使用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 :(得分:0)
假设用户将表格大小设置为2行3列并输入6个单元格的数据,那么将转到数据库的数据将
2,3,D1,D2,D3,D4,D5,D6
当您从单元格中获取数据并在获取的字符串上进行爆炸时,您将获得包含8个元素的1维数组
$ r = $ e [0]行
$ c = $ e [1] cols
$ e [2-7]数据
它应该给你一个想法