PHP MYSQL - 爆炸帮助

Joh*_*n C 1 php mysql explode

问候,

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

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

比方说,列上有3个,行上有3个.

我需要像显示一样做,

|___d1__|___d2__|___d3__|
|___d4__|___d5__|___d6__|
|___d7__|___d8__|___d9__|
Run Code Online (Sandbox Code Playgroud)

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

谢谢你的帮助.

Ale*_*ait 6

这不会帮助你解决这个问题,但是一句好建议:永远不要将逗号分隔值写入数据库字段.你不能明智地查询这样存储的信息,你的应用程序代码将会被丑陋的转换混乱.而是使用一个单独的表,其中包含对主表的引用和每个值的一行.


fox*_*oxy 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');
?>
Run Code Online (Sandbox Code Playgroud)

要显示表,您需要两个嵌套的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>
Run Code Online (Sandbox Code Playgroud)