DBのデータを表示させたい
こんにちは
PHPは今まで他人様の作成したスクリプトをそのまま使用したりちょこっと改造するだけでしたが、
現在必要としているスクリプトが探してもなさそうなので
自分で作成しようと決めて勉強を始めましたが
どうしても悩んでいる部分があるのでご教授いただけると助かります。
環境は以下の通りです
apache 1.3.37
PHP 5.25
MySQL 5.0
現在の状況なのですが
`uid` mediumint(8) NOT NULL auto_increment,
`user` varchar(25) NOT NULL,
`pass` varchar(32) NOT NULL,
`place` varchar(32),
`sev` varchar(32),
`date` varchar(25) NOT NULL,
`regdate` datetime,
`gate` varchar(25),
`statue` varchar(25),
PRIMARY KEY (`uid`),
KEY `user` (`user`),
KEY `date` (`date`),
KEY `gate` (`gate`),
KEY `statue` (`statue`)
このようなテーブルが作成してありユーザーがフォームから登録したものをDBに保存していき、
1ページに数件分ずつの表示で何ページにもわたって
全件を表示するようなページをです。
フォームからDBへのデータの保存はできるようになりましたが
表示をする際に何件もの表示をするのにどういった手法で行うのがいいのかで悩んでいます。
現在は最新の1件だけ表示されるようなページになっています。
<?php
include ("config.php");
$con = mysql_connect($dbhost, $dbuser, $dbpasswd);
$selectdb = mysql_select_db($dbname, $con);
$sql = "SELECT * FROM testdata ORDER BY regdate DESC";
$rst = mysql_query($sql, $con);
$datanum = mysql_num_rows($rst);
if ($datanum < 1) {
print("データがありません。<br>\n");
print("登録は <a href=\"regist.php\">こちら</a> から");
mysql_close($con);
exit;
}
$data = mysql_fetch_array($rst)
?>
<table width="95%" border="0" cellspacing="1">
<tr>
<td><table width="100%" border="0">
<tr
<td colspan="6">登録情報</td>
</tr>
<tr>
<td width="13%">登録者名</td>
<td width="20%">
<?=$data['user']?>
</td>
<td width="13%">場所</td>
<td width="20%">
<?=$data['place']?>
</td>
<td width="13%">サーバー</td>
<td width="20%">
<?=$data['sev']?>
</td>
</tr>
<tr>
<td>登録日時</td>
<td>
<?=$data['regdate']?>
</td>
<td>日時</td>
<td>
<?=$data['date']?>
</td>
<td colspan="2"> </td>
</tr>
</table></td>
</tr>
<tr>
<td><table width="100%" border="0">
<tr>
<td colspan="5">状態</td>
</tr>
<tr>
<td width="16%">ゲート</td>
<td width="30%"><?=$data['gate']?></td>
<td> </td>
<td width="16%">statue</td>
<td width="30%"><?=$data['statue']?></td>
</tr>
</table></td>
</tr>
</table>
DBから何件分もの表示をするにはDBのデータを連想配列にするのかなと思っているのですが
いまいちどんな手法が良いのかわかりません。よろしければご教授くださいませ。
お礼
早速のご回答ありがとうございます。 私も最初は日付用テーブルを作成すれば実現可能だとは思いましたが、日付の為だけにテーブルを作ることに抵抗があったので、もしかして別な方法があればと思い投稿しました。 でもnandarou-1011さんのSQLの方がシンプルでベストなのかもしれませんね。もう少し考えたいと思います。