フォームで入力した値をPHPでデータベースから取得・表示する方法を記しています。
PHPでデータベースを取得・表示するにはarticleを使う
MySQLのデータベースの内容をPHPで取得して表示するには「article要素」を使って、
- データベースに接続するPHP
- データベースに値を登録・表示するPHP
といったように、作業を分けてコードを作成します。
article要素とは「それ自体で自己完結しているコンテンツ」のことをさします。
今回はphpMyAdminに作成した「部品登録」テーブルへ
- フォームから受け取った値を
- テーブル登録・取得して
- 取得した値を画面表示する
といった手順で書いてみました。
入力フォームは「input.html」ファイルを作成し、以下HTMLを記載しています!
<main>
<h2>部品名を入力してください。</h2>
<form action="index.php" method="post">
<textarea name="buhin" cols="40" rows="3" placeholder="登録する部品名を入力"></textarea><br>
<button type="submit" name="button">登録する</button>
</form>
</main>
PHPでデータベースを取得・表示するサンプル
PHPでデータベースを取得して表示するサンプルを、3ステップで紹介します。
STEP1. PDO接続してデータベースへ登録。
最初にフォームで入力された値を、PDO接続したデータベースへ登録します。
// データーベースtestへ接続
try {
$db = new PDO('mysql:dbname=test;host=localhost;charset=utf8','root','root');
// 入力した値をデータベースへ登録
$count = $db->exec('INSERT INTO 部品登録 SET 部品名="'. $_POST['buhin'] .'",登録日 = NOW()');
// 登録した件数を表示
echo $count . "件のデータを登録しました!";
} catch (PDOException $e) {
// 接続できなかったらエラー表示
echo 'DB接続エラー!: ' . $e->getMessage();
}
STEP2. 登録した値を取得して変数へ格納。
次にデータベースへ登録した値を取得して、変数$entryへ格納します。
// 部品登録テーブルの部品名の値を降順に取得して$entryに格納
$entry = $db->query('SELECT * FROM 部品登録 ORDER BY 部品名 DESC');
STEP3. データーベースの値を取得して画面表示
最後に<article>タグの中で、格納された値を画面表示させるソースを記述。
<article>
<?php while($resister = $entry->fetch()): ?><!-- $entryの値をfetchで1件ずつ取得して$resistorへ格納 -->
<a href="#"><?php print(mb_substr($resister['部品名'],0,50)); ?></a>
<time><?php print($resister['登録日']); ?></time>
<hr size='3' color="#a9a9a9" width="450" align="left">
<?php endwhile; ?>
</article>
全部つなげるとこんな感じ↓
<main>
<h2>登録した部品名一覧</h2>
<?php
// データーベースtestへ接続
try {
$db = new PDO('mysql:dbname=test;host=localhost;charset=utf8','root','root');
// 入力した値をデータベースへ登録
$count = $db->exec('INSERT INTO 部品登録 SET 部品名="'. $_POST['buhin'] .'",登録日 = NOW()');
// 登録した件数を表示
echo $count . "件のデータを登録しました!";
} catch (PDOException $e) {
// 接続できなかったらエラー表示
echo 'DB接続エラー!: ' . $e->getMessage();
}
// 部品登録テーブルの部品名の値を降順に取得して$entryに格納
$entry = $db->query('SELECT * FROM 部品登録 ORDER BY 部品名 DESC');
?>
<article>
<?php while($resister = $entry->fetch()): ?><!-- $entryの値をfetchで1件ずつ取得して$resistorへ格納 -->
<a href="#"><?php print(mb_substr($resister['部品名'],0,50)); ?></a>
<time><?php print($resister['登録日']); ?></time>
<hr size='3' color="#a9a9a9" width="450" align="left">
<?php endwhile; ?>
</article>
</main>
今回はフォームに入力される値が長くなることも想定し、<pre>タグ(
<pre> </pre>
)は削除しました。フォーム入力からPHPで画面表示されるまでの様子
入力フォームに適当な値を入力して登録すると、
画面に登録した値が表示されました!
phpMyAdminの対象のテーブル「部品登録」をのぞいてみると、画面表示された値が登録されていることが確認できます↓
以下にhtml表示の際に利用した、体裁を整えるためのメソッドを記しておきます。
フォームの入力制限や表示画面の体裁を整える
フォームに入力される値に制限を設ける方法と、画面表示される値を見やすいように体裁を整えた内容を記します。
入力フォームの文字数を制限するにはmb_substrを使う
フォームの文字数を制限するには「mb_substr」を使います。
mb_substr — 文字列の一部を得る
mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding = mb_internal_encoding() ]] ) : string
参考:mb_substr
例として、変数$mojiのテキストを0番目〜3文字までの表示に制限してみます。
<?php
$moji = "おやくん";
echo mb_substr($moji,0,3);
?>
出力結果↓
上に区切り線を設けるときは<hr>を使う
「<hr>」(horizontal rule)を使って、画面上に水平の区切り線を設けることができます。
<hr>タグ
はsizeやwidthなどを指定することで、太さ・色・横幅などを変更することが可能です。
今回は分かりやすいように、太さが3px・色は#a9a9a9に指定してみました。
<hr size='3' color="#a9a9a9" width="450">
まとめ
入力フォームの値をPHPからデータベースへ登録し内容を画面表示する方法を記しました。
実はデーターベースの登録のところがうまくいかなくて、ちょっと手間取ってました 滝汗
でもデータベースへ登録した値が、すぐに画面上に表示されるのって嬉しいw
-
【MySQL】PHPでデータベースを表示したHTMLにリンクも埋め込む
PHPでデータベースに登録した値を画面表示して、さらに詳細ページのリンクを埋め込む方法を記してます。 補足 PHPでデー ...
続きを見る
関連記事:【MySQL】PHPでprepareを使って安全にデータベースへ登録する方法
関連記事:PHPでMySQLへ入力フォームからデータ登録する方法
関連記事:【MySQL】PHPでqueryを使ってデータベースの値を取得する方法