LoginSignup
0
2

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-09-05

仕事で久しぶりに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/

※ Windowsの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

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

以上で終わりです。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2