问候,

我将数据存储在 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> 标签

它应该给你这个想法

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top