フリーランスのためのネットビジネス専門学校 ネットで独立開業を目指す人を応援
フリーランスのためのネットビジネス専門学校 ネットで独立開業を目指す人を応援

CakePHP2系サンプルコード:スコア登録アプリを作成

仕事で久しぶりにCakePHPを使うことになったので、DBの読み書きがある簡単なスコア登録アプリを作ってみました。

スコア登録アプリとは、
・名前と点数を入力して登録できる。
・登録したスコアを一覧表示できる。
というものです。

環境

CentOS7
MariaDB 5.5.60
PHP 7.2.9
CakePHP 2.10.11

サーバーIP:192.168.56.101
ドキュメントルート:/var/www/html/
CakePHPのファイル:/var/www/html/cakephp/

※ WindwosのVirtualBoxを使用。
※ 環境構築の手順は省略します。
※ 前提としてCakePHPの初期設定は終わっているものとします。

データベースの準備

スコア登録アプリで使うデータベースを作成します。

# MySQLにログイン
$ mysql -u root
-- DB作成
CREATE DATABASE cakedb;
USE cakedb;

-- テーブル作成
CREATE TABLE scores (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name TEXT,
  score INT
);

-- ユーザー作成
-- ユーザー名:cake_user パスワード:cake_20180903
CREATE USER 'cake_user'@'localhost' IDENTIFIED BY 'cake_20180903';

-- 権限付与
GRANT ALL ON cakedb.* TO cake_user;

CakePHPのデータベース設定

デフォルトの設定ファイルをコピーします。

cp /var/www/html/cakephp/Config/database.php.default /var/www/html/cakephp/Config/database.php

database.phpの接続先を編集します。

app/Config/database.php
        public $default = array(
                'datasource' => 'Database/Mysql',
                'persistent' => false,
                'host' => 'localhost',
                'login' => 'cake_user',
                'password' => 'cake_20180903',
                'database' => 'cakedb',
                'prefix' => '',
                'encoding' => 'utf8',
        );

スコア入力画面

スコア入力画面のコントローラーです。

app/Controller/InputController.php
<?php
App::uses('AppController', 'Controller');

class InputController extends AppController
{
    public function index()
    {
    }
}
?>

ビューを作成します。

app/View/Input/index.ctp
スコアを登録
<form action="/cakephp/insert" method="POST">
名前:
<input type="text" name="name">
点数:
<input type="text" name="score">
<input type="submit" value="登録">
</form>

URLにアクセスします。
http://192.168.56.101/cakephp/input/
cake_4.png

入力画面が表示されるので、名前と点数を入力して登録します。

スコア登録完了画面

スコア登録完了画面のコントローラーです。

app/Controller/InsertContr
<?php
App::uses('AppController', 'Controller');

class InsertController extends AppController
{
    public function index()
    {
        // formのデータを取得
        $name = $this->request->data('name');
        $score = $this->request->data('score');

        // パラメータがなければ入力画面にリダイレクト
        if (empty($name) || empty($score)) {
            $this->redirect('../input');
        }

        // モデルをロード
        $this->loadModel('Scores');

        // scoresテーブルに保存
        $this->Scores->save(array('name' => $name, 'score' => $score));
    }
}
?>

ビューを作成します。

app/View/Insert/index.ctp
スコアを登録しました。

ページが表示されます。
cake_2.png

スコア一覧画面

スコア一覧画面のコントローラーです。

app/Controller/ListController.php
<?php
App::uses('AppController', 'Controller');

class ListController extends AppController
{
    public function index()
    {
        $this->loadModel('Scores');

        // scoresのデータを全て取得
        $result = $this->Scores->find('all');

        // ビューにセット
        $this->set('result', $result);
    }
}
?>

ビューを作成します。

app/View/List/index.ctp
<?php foreach ($result as $data) { ?>
<?php echo $data['Scores']['name']; ?>さん:<?php echo $data['Scores']['score']; ?><br />
<?php } ?>

URLにアクセスします。
http://192.168.56.101/cakephp/list/
cake_5.png

登録したスコアが表示されました。

以上で終わりです。

[紹介元] PHPタグが付けられた新着投稿 – Qiita CakePHP2系サンプルコード:スコア登録アプリを作成

コメント

記事に戻る

コメントを残す