- 更新日: 2017年04月04日
- 公開日: 2015年12月08日
ゼロから始めるPHP講座Vol28 DB操作の使用例
ゼロから始めるPHP講座 DB操作の使用例
DB操作の使用例(PHP + HTML)
既に説明している通りDBは様々なところで利用されています。mysql_select.phpではデータを取得して表示するだけでしたが、もう少し実用的なページを作ってみましょう。 ファイル名:mysql_sample.php
<?php
$goods_data = array();
$order = 'ASC';
if (isset($_GET['order']) === TRUE) {
$order = $_GET['order'];
}
$host = 'localhost'; // データベースのホスト名又はIPアドレス
$username = 'username'; // MySQLのユーザ名
$passwd = 'passwd'; // MySQLのパスワード
$dbname = 'dbname'; // データベース名
$link = mysqli_connect($host, $username, $passwd, $dbname);
// 接続成功した場合
if ($link) {
// 文字化け防止
mysqli_set_charset($link, 'utf8');
$query = 'SELECT goods_name, price FROM goods_table ORDER BY price ' . $order;
// クエリを実行します
$result = mysqli_query($link, $query);
// 1行ずつ結果を配列で取得します
while ($row = mysqli_fetch_array($result)) {
$goods_data[] = $row;
}
// 結果セットを開放します
mysqli_free_result($result);
// 接続を閉じます
mysqli_close($link);
// 接続失敗した場合
} else {
print 'DB接続失敗';
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>サンプル</title>
<style type="text/css">
table, td, th {
border: solid black 1px;
}
table {
width: 200px;
}
</style>
</head>
<body>
<h1>商品一覧</h1>
<form>
<input type="radio" name="order" value="ASC" <?php if ($order === 'ASC') {print 'checked';} ?>>昇順
<input type="radio" name="order" value="DESC" <?php if ($order === 'DESC') {print 'checked';} ?>>降順
<input type="submit" value="表示">
</form>
<table>
<tr>
<th>商品名</th>
<th>値段</th>
</tr>
<?php
foreach ($goods_data as $value) {
?>
<tr>
<td><?php print htmlspecialchars($value['goods_name'], ENT_QUOTES, 'UTF-8'); ?></td>
<td><?php print htmlspecialchars($value['price'], ENT_QUOTES, 'UTF-8'); ?></td>
</tr>
<?php
}
?>
</table>
</body>
</html>
商品の一覧を表示するページで、表示順を価格で昇順・降順と選べます。
ECサイトなどでは必ずある機能で、商品情報を格納しているテーブルからデータをSELECTし表示しています。
phpMyAdminを使っていたときから、SELECTしたデータの表示順番は不規則だったと思いますが、カラムを指定し昇順又は降順で並び替えをすることが可能です。
このようにORDER BY句を指定することで、昇順(ASC)又は降順(DESC)で、レコードの並び替えができます。
mysql_sample.phpでは、商品の価格順に並び替えをしたデータを取得しています。
goods_tableのgoods_name、priceをprice降順で取得 SELECT goods_name, price FROM goods_table ORDER BY price DESC
なお昇順(ASC)で並び替えを行う場合は、下記のように省略も可能です。
goods_tableのgoods_name、priceをprice昇順で取得(ASC省略) SELECT goods_name, price FROM goods_table ORDER BY price
NEXT LESSON ☛ PHPによるDB操作〜応用〜
PREV LESSON ☛ PHPによるDB操作〜基礎〜
- この記事を書いた人
- CodeCampus編集部