PHP MYSQL - 爆炸帮助

时间:2008-11-16 11:26:41

标签: php mysql explode

问候,

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

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

比方说,列上有3号,行上有3号。

我需要像显示那样做,

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

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

感谢您的帮助。

3 个答案:

答案 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]数据

  • wrtite openning&lt;表&gt;标签
  • 两个循环,一个在另一个,
  • 第一个将生成行开始的代码
  • wrtite openning&lt; tr>标签
  • 里面会生成一行代码。
  • 写入开头&lt; td&gt;标签
  • 写入数据$ e [1 +从内部和外部循环计算的位置]
  • 写封闭&lt; td&gt;标签
  • 内循环结束
  • 关闭&lt; tr>标签
  • 外部循环结束
  • 关闭&lt;表&gt;标签

它应该给你一个想法