広告

PHPでデータベースを取得して画面表示する方法

2019年9月25日

フォームで入力した値をPHPでデータベースから取得・表示する方法を記しています。

入力フォームの値をPHPでDBへ登録し画面上へ表示

補足
PHP・prepareで安全にDBへ登録する手順を読んでおくと、この記事の理解も捗ります!!

PHPでデータベースを取得・表示するにはarticleを使う

MySQLのデータベースの内容をPHPで取得して表示するには「article要素」を使って、

  • データベースに接続するPHP
  • データベースに値を登録・表示するPHP

といったように、作業を分けてコードを作成します。

article要素とは「それ自体で自己完結しているコンテンツ」のことをさします。

すぐにサンプルコードを見る↓

今回はphpMyAdminに作成した「部品登録」テーブルへ

  1. フォームから受け取った値を
  2. テーブル登録・取得して
  3. 取得した値を画面表示する

といった手順で書いてみました。

フォームの値をPHPから登録するためのテーブル

補足
入力フォームは「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の対象のテーブル「部品登録」をのぞいてみると、画面表示された値が登録されていることが確認できます↓

入力した値がPHPでデーターベースへ登録された

以下に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);
?>

出力結果↓mb_substrの実行結果

OYAKUN
OYAKUN
moji変数の文字列0番目〜3文字までが、切り出されて表示されてますね。

上に区切り線を設けるときは<hr>を使う

<hr>」(horizontal rule)を使って、画面上に水平の区切り線を設けることができます

<hr>で表示された水平線

<hr>タグ はsizeやwidthなどを指定することで、太さ・色・横幅などを変更することが可能です。

今回は分かりやすいように、太さが3px・色は#a9a9a9に指定してみました。

<hr size='3' color="#a9a9a9" width="450">

まとめ

入力フォームの値をPHPからデータベースへ登録し内容を画面表示する方法を記しました。

実はデーターベースの登録のところがうまくいかなくて、ちょっと手間取ってました 滝汗

でもデータベースへ登録した値が、すぐに画面上に表示されるのって嬉しいw

OYAKUN
OYAKUN
次回は画面表示したデータ(テキストリンク)の詳細画面を作成する方法を紹介します!
詳細画面の作成
php-mysql-db-html
【MySQL】PHPでデータベースを表示したHTMLにリンクも埋め込む

PHPでデータベースに登録した値を画面表示して、さらに詳細ページのリンクを埋め込む方法を記してます。 補足 PHPでデー ...

続きを見る

関連記事:【MySQL】PHPでprepareを使って安全にデータベースへ登録する方法
関連記事:PHPでMySQLへ入力フォームからデータ登録する方法
関連記事:【MySQL】PHPでqueryを使ってデータベースの値を取得する方法