1

问候,

我在 1 个表中使用分隔符“,”将数据存储在 mysql 上。我也有存储在数据库中的行和列。现在我必须使用存储在数据库中的行号和列号来输出数据来绘制表格。

行号和列号是用户输入的,因此可能会有所不同。

比方说,列上有数字 3,行上有 3。

我需要像显示一样做,

|___d1__|___d2__|___d3__|
|___d4__|___d5__|___d6__|
|___d7__|___d8__|___d9__|

其中 d1-d9 是存储在 mysql 数据库中的数据,其中一个表中带有分隔符“,”。

谢谢你帮助我。

4

3 回答 3

6

这不会帮助您解决这个问题,但有一个很好的建议:永远不要将逗号分隔的值写入数据库字段。您无法明智地查询像这样存储的信息,并且您的应用程序代码将被丑陋的转换弄得一团糟。相反,请使用一个单独的表,其中包含对主表的引用和每个值一行。

于 2008-11-16T13:04:12.237 回答
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>
于 2008-11-16T13:43:14.763 回答
0

假设用户为 2 行和 3 列设置表大小并输入 6 个单元格,将进入数据库的数据将是

2,3,d1,d2,d3,d4,d5,d6

当您从单元格中获取数据并在获取的字符串上进行爆炸时,您将获得包含 8 个元素的 1 维数组

$r = $e[0] 行

$c = $e[1] 列

$e[2-7] 数据

  • 写开<table>标签
  • 两个循环,一个接一个,
  • 第一个将生成行首代码
  • 写打开 <tr> 标签
  • 其中一个将为行生成代码。
  • 写开<td>标签
  • 写入数据 $e[1 + 从内部和外部循环计算的位置]
  • 写结束<td>标签
  • 内循环结束
  • 写结束 <tr> 标签
  • 外循环结束
  • 写结束 <table> 标签

它应该给你的想法

于 2008-11-16T12:08:18.167 回答