質問
ご挨拶、
区切り文字<!> 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;タグ
アイデアがわかるはず
所属していません StackOverflow