山傘のプログラミング勉強日記

プログラミングに関する日記とどうでもよい雑記からなるブログです。

PHP 学習 part. 11

Web アプリケーション

掲示板の続きです。

ひとこと掲示

DB にアクセスして投稿された内容を表示させます。

<body>
    <h1>ひとこと掲示板</h1>
    <form action="bbs.php" method="post">
        名前: <input type="text" name="name" /><br />
        ひとこと: <input type="text" name="comment" size="60" /><br />
        <input type="submit" name="submit" value="送信" />
    </form>
    <?php require("print_content.php") ?>
</body>
print_content.php
<?php

// phpMyAdmin に接続
$url = "localhost";
$user = "root";
$pass = "";
$db = "online_bbs";
$mysqli = new mysqli($url, $user, $pass, $db);
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}
$mysqli->set_charset('utf8');

$sql = "SELECT * FROM `post` ORDER BY `created_at` DESC";
$result = $mysqli->query($sql);

if ($result !== false && mysqli_num_rows($result)) {
    echo "<ul>";
    while ($post = mysqli_fetch_assoc($result)) {
        echo "<li>";
        echo htmlspecialchars($post["name"], ENT_QUOTES, "UTF-8"), ": ";
        echo htmlspecialchars($post["comment"], ENT_QUOTES, "UTF-8"), " - ";
        echo htmlspecialchars($post["created_at"], ENT_QUOTES, "UTF-8");
        echo "</li>";
    }
    echo "</ul>";
}

// 取得結果を解放し、接続を閉じる
mysqli_free_result($result);
$mysqli->close();

f:id:yamakasa3:20191015165927p:plain

更新するとフォームの再送信とかで同じ内容が投稿されてしまいますが、まあいいでしょう。

フレームワークによる開発

MVC もでる

Model, View, Controller という3つの役割に分けて開発を行うアーキテクチャです。Web 系の言語で良く見かけると思います。

モデルでは、データベースにアクセスしてデータのやり取りを行う機能を記述します。ビューは、HTML の組み立てを行い出力します。コントローラは、ユーザのリクエストを制御します。

パーフェクトPHP

パーフェクトPHP

感想

フレームワークによる勉強は、この本が終わったあとに Laravel をやろうと思います。