MySQL

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

フォームで入力した値を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
moji変数の文字列0番目〜3文字までが、切り出されて表示されてますね。

 

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

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

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

 

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

 

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

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

 

まとめ

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

 

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

 

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

 

oyakun
次回は画面表示したデータ(テキストリンク)の詳細画面を作成する方法を紹介します!

>【MySQL】PHPでprepareを使って安全にデータベースへ登録する方法

>PHPでMySQLへ入力フォームからデータ登録する方法

>【MySQL】PHPでqueryを使ってデータベースの値を取得する方法



  • この記事を書いた人
  • 最新記事
oyakun

oyakun

30代半ば♂妻・子3人の5人で日々激戦中。Google app script&VBA初心者が自分の備忘録を兼ねて「スプレッドシート、Excel、WordPress、plugin」の設定等、主にブログやアフィリエイト周辺のtipsを背伸びしながらご紹介しています。

Copyright© OYAKUDACHI.XYZ , 2019 All Rights Reserved.