PHPからDBにある書籍情報を取得し、セッションへ保存 – カート追加画面

[ファイル] insertIntoCart.php

[挿入場所] <!DOCTYPE html>の前

<?php
    //セッション利用
    session_start();
 
    //データベース接続用ファイルを読み込む
    require_once("dbprocess.php");
 
    //GETデータを取得する
    $isbn = $_GET["isbn"];
 
    //ISBN番号の書籍情報を取得するSQL文を用意
    $sql = "SELECT * FROM bookinfo WHERE isbn = '{$isbn}'";
 
    //SQL文を発行し、結果セットを取得
    $result = executeQuery($sql);
 
    //結果セットから書籍情報を取得
    $row = mysqli_fetch_assoc($result);
 
    //セッションに書籍情報の追加
    $_SESSION['cartInfo'][] = $row;
?>

取得した情報をHTMLとして出力 – カート追加画面

[ファイル] insertIntoCart.php

[挿入場所] <table>タグと入れ替え

<table>
    <tr>
        <th>ISBN</th>
        <td><?php echo $row['isbn']; ?></td>
    </tr>
    <tr>
        <th>TITLE</th>
        <td><?php echo $row['title']; ?></td>
    </tr>
    <tr>
        <th>価格</th>
        <td><?php echo $row['price']; ?>円</td>
    </tr>
</table>

カート内容画面 完成ソースコード

[ファイル] showCart.php

[挿入場所] showCart.phpファイルのソースコードと入れ替え

<?php
    //セッション利用
    session_start();
 
    //削除行番号が押された場合
    if (isset($_GET['delno'])) {
        //指定の削除行番号のデータをセッションから削除する
        unset($_SESSION['cartInfo'][$_GET['delno']]);
    }
?>
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="css/reset.css">
    <link rel="stylesheet" type="text/css" href="css/main.css">
    <title>カート内容ページ | 書籍販売システム</title>
</head>
<body>
    <div id="container">
        <header class="clearfix">
            <div class="title">
                <h1>書籍販売システム</h1>
            </div>
            <div class="search">
                <form action="search.php">
                    <p class="keyword">
                        <input type="text" name="title" placeholder="検索したい書籍タイトルを入力" value="">
                    </p>
                    <p class="submit">
                        <input type="submit" value="検索">
                    </p>
                </form>
            </div>
        </header>
 
        <nav id="menu">
            <ul class="clearfix">
                <li><a href="list.php">書籍一覧</a></li>
                <li><a href="insert.php">書籍登録</a></li>
                <li class="active"><a href="showCart.php">カート内容を確認</a></li>
                <li><a href="orderStatus.php">購入状況確認</a></li>
            </ul>
        </nav>
 
        <h2>カート内容</h2>
        <div id="showCart">
            <table>
                <tr>
                    <th>ISBN</th>
                    <th>TITLE</th>
                    <th>価格</th>
                    <th></th>
                </tr>
                <?php
                //合計金額
                $total = 0;
                if (!empty($_SESSION['cartInfo'])) {
                    foreach($_SESSION['cartInfo'] as $key => $val){
                        $total += $val['price'];
                ?>
                <tr>
                    <td><?php echo $val['isbn']; ?></td>
                    <td> <?php echo $val['title']; ?></td>
                    <td><?php echo $val['price']; ?>円</td>
                    <td><a href="showCart.php?delno=<?php echo $key; ?>" class="delete">削除</a></td>
                </tr>
                <?php
                    } //foreach終わり
                } //if終わり
                ?>
            </table>
 
            <div class="sum">
                合計:<?php echo $total; ?>円
            </div>
 
            <form action="buyConfirm.php" method="post">
                <input type="submit" value="購入" class="button">
            </form>
        </div>
 
        <footer>
            <p class="copyright">Copyright © all rights reserved.</p>
        </footer>
    </div>
</body>
</html>

購入品確認画面 完成ソースコード

[ファイル] buyConfirm.php

[挿入場所] buyConfirm.phpファイルのソースコードと入れ替え

<?php
    //セッション利用
    session_start();
 
    //データベースプロセスファイルを読み込む
    require_once("dbprocess.php");
 
    //合計金額を求める変数を用意
    $total = 0;
 
    //セッションにあるデータ分だけ繰り返す
    foreach($_SESSION['cartInfo'] as $val){
        //ISBN番号を取得
        $isbn = $val['isbn'];
 
        //購入書籍情報を登録するSQL文を用意
        $sql = "INSERT INTO orderinfo values(null,'{$isbn}', now())";
 
        //SQL文を発行
        executeQuery($sql);
 
        //合計金額を求める
        $total += $val['price'];
    }
?>
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="css/reset.css">
    <link rel="stylesheet" type="text/css" href="css/main.css">
    <title>購入品確認ページ | 書籍販売システム</title>
</head>
<body>
    <div id="container">
        <header class="clearfix">
            <div class="title">
                <h1>書籍販売システム</h1>
            </div>
            <div class="search">
                <form action="search.php">
                    <p class="keyword">
                        <input type="text" name="title" placeholder="検索したい書籍タイトルを入力" value="">
                    </p>
                    <p class="submit">
                        <input type="submit" value="検索">
                    </p>
                </form>
            </div>
        </header>
 
        <nav id="menu">
            <ul class="clearfix">
                <li><a href="list.php">書籍一覧</a></li>
                <li><a href="insert.php">書籍登録</a></li>
                <li><a href="showCart.php">カート内容を確認</a></li>
                <li><a href="orderStatus.php">購入状況確認</a></li>
            </ul>
        </nav>
 
        <h2>購入品確認</h2>
        <div id="buyConfirm">
            <p>下記の書籍の購入が完了しました。</p>
            <table>
                <tr>
                    <th>ISBN</th>
                    <th>TITLE</th>
                    <th>価格</th>
                </tr>
                <?php
                foreach ($_SESSION['cartInfo'] as $val) {
                ?>
                <tr>
                    <td><?php echo $val['isbn']; ?></td>
                    <td><?php echo $val['title']; ?></td>
                    <td><?php echo $val['price']; ?>円</td>
                </tr>
                <?php
                }
                //カート情報を破棄
                unset($_SESSION['cartInfo']);
                ?>
            </table>
 
            <div class="sum">
                合計:<?php echo $total; ?>円
            </div>
        </div>
 
        <footer>
            <p class="copyright">Copyright © all rights reserved.</p>
        </footer>
    </div>
</body>
</html>

購入状況画面 完成ソースコード

[ファイル] orderStatus.php

[挿入場所] orderStatus.phpファイルのソースコードと入れ替え

<?php
    //データベース接続用ファイルを読み込む
    require_once("dbprocess.php");
 
    //購入書籍情報を全件取得するSQL文を用意
    $sql = "SELECT b.title, o.orderno, o.date FROM orderinfo o inner join bookinfo b on o.isbn = b.isbn";
 
    //SQL文を発行し、結果セットを取得
    $result = executeQuery($sql);
?>
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="css/reset.css">
    <link rel="stylesheet" type="text/css" href="css/main.css">
    <title>購入状況ページ | 書籍販売システム</title>
</head>
<body>
    <div id="container">
        <header class="clearfix">
            <div class="title">
                <h1>書籍販売システム</h1>
            </div>
            <div class="search">
                <form action="search.php">
                    <p class="keyword">
                        <input type="text" name="title" placeholder="検索したい書籍タイトルを入力" value="">
                    </p>
                    <p class="submit">
                        <input type="submit" value="検索">
                    </p>
                </form>
            </div>
        </header>
 
        <nav id="menu">
            <ul class="clearfix">
                <li><a href="list.php">書籍一覧</a></li>
                <li><a href="insert.php">書籍登録</a></li>
                <li><a href="showCart.php">カート内容を確認</a></li>
                <li class="active"><a href="orderStatus.php">購入状況確認</a></li>
            </ul>
        </nav>
 
        <h2>購入状況</h2>
        <div id="orderStatus">
            <table>
                <tr>
                    <th>オーダー番号</th>
                    <th>TITLE</th>
                    <th>日付</th>
                </tr>
                <?php
                    while ($row = mysqli_fetch_assoc($result)) {
                ?>
                <tr>
                    <td><?php echo $row['orderno']; ?></td>
                    <td><?php echo $row['title']; ?></td>
                    <td><?php echo $row['date']; ?></td>
                </tr>
                <?php
                    }
                ?>
            </table>
        </div>
 
        <footer>
            <p class="copyright">Copyright © all rights reserved.</p>
        </footer>
    </div>
</body>
</html>