質問

ご挨拶、

区切り文字<!> quot;、<!> quot;でmysqlにデータが保存されています。 1つのテーブルに。 データベースにも行と列が保存されています。 ここで、テーブルを描画するためにデータベースに保存されている行と列番号を使用してデータを出力する必要があります。

行と列番号はユーザー入力であるため、異なる場合があります。

たとえば、列に3番、行に3番があります。

表示のように行う必要があります

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

d1-d9は、区切り文字<!> quot;、<!> quot;でmysqlデータベースに保存されるデータです。 1つのテーブルに。

手伝ってくれてありがとう。

役に立ちましたか?

解決

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');
?>

テーブルを表示するには、2つのネストされた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>

他のヒント

これはこの問題を解決するのに役立ちませんが、良いアドバイスの一言です。データベースフィールドにコンマ区切りの値を決して書き込まないでください。このように保存された情報を賢明にクエリすることはできず、アプリケーションコードはcodeい変換で混乱します。代わりに、メインテーブルへの参照と値ごとに1行の別々のテーブルを使用します。

ユーザーが2行3列のテーブルサイズを設定し、6セルに入力を行うと仮定すると、データベースに送られるデータは

  

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

セルからデータを取得し、取得した文字列を分解すると、8要素の1次元配列が取得されます

$ r = $ e [0]行

$ c = $ e [1] cols

$ e [2-7]データ

  • wrtiteオープニング<!> lt;テーブル<!> gt;タグ
  • 2つのループ、1つずつ、
  • 最初のものは行の始まりのコードを生成します
  • wrtiteオープニング<!> lt; tr <!> gt;タグ
  • 内部で行のコードを生成します。
  • 書き込み開始<!> lt; td <!> gt;タグ
  • データ$ e [1 +ループの内側と外側から計算された位置]を書き込む
  • 書き込み<!> lt; td <!> gt;タグ
  • 内部ループの終わり
  • wrtiteを閉じる<!> lt; tr <!> gt;タグ
  • 外部ループの終わり
  • wrtiteを閉じる<!> lt;テーブル<!> gt;タグ

アイデアがわかるはず

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top