【Todoアプリ】必要ファイルの準備

今回から簡単なTodoアプリを作っていきます。(全6回)

Todoアプリとは?なぜオススメなのかはこちらの記事で!

基本的なCRUD機能を作ってみる練習なので、

  • セッションの話
  • パスワードのハッシュ化
  • ユーザごとに投稿内容を振り分ける

等のちょっと複雑な機能は今回は省いています。

「パスワードのハッシュ化とは?」のような記事を別で作成するので、そこで今回作ったソースコードを元にして解説するつもりです。

必要なファイルを準備しよう

今回は「todo」と言う名前のフォルダの中にファイルを作成していきましょう。

todoフォルダの中身

db_connect.php

login.php

main.php

create.php

edit.php

edit_done.php

delete.php

<cssフォルダ>
style.css

<imgフォルダ>
top1.png

上手く作成できるとこんな感じになります。

imgフォルダの「top1.png」は何でも大丈夫です。

この例で使っていくのは、お問い合わせページの作成で使ったこの画像です。

DBを準備しよう

MySQLにログインしたら、とりあえずこれをコピーしてください。
今回必要なデータが作成できます。

DROP DATABASE IF EXISTS todo;CREATE DATABASE todo CHARACTER SET utf8;USE todo;
CREATE TABLE users (id int NOT NULL AUTO_INCREMENT PRIMARY KEY, name varchar(16), password varchar(8));
CREATE TABLE posts (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, title VARCHAR(50), content VARCHAR(255), time TIMESTAMP);
INSERT INTO users (name, password) VALUES('田中太郎', 'taro');
INSERT INTO posts(title, content) VALUES('買うもの', 'カレーの材料が必要。食器洗い洗剤も買わないと');
INSERT INTO posts(title, content) VALUES('やること', '部屋の掃除と郵便局に行かないと!');

一応、この2つで投入されたデータを確認することができます。

select * from posts;
select * from users;

データベース接続処理を関数化させておこう

データベースに接続するコードを書いてみようでやったのとほとんど形は同じ処理を使います。

<?php
    // DB名
    define('DB_DATABASE', 'todo');
    // MySQLのユーザー名
    define('DB_USERNAME', 'root');
    // MySQLのログインパスワード
    define('DB_PASSWORD', 'root');
    // DSN
    define('DSN', 'mysql:host=localhost;charset=utf8;dbname='.DB_DATABASE);

    // DB接続用の関数
    function db_connect() {
        try {
            // PDOインスタンスの作成
            $pdo = new PDO(DSN, DB_USERNAME, DB_PASSWORD);
            // エラー処理方法の設定
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            return $pdo;
        } catch(PDOException $e) {
            echo 'Error: ' . $e->getMessage();
            die();
        }
    }
?>

肝心のDBに接続をする箇所を「db_connect」と言う関数にしておきます。

db_connectメソッドを実行した箇所に、その結果を返したいので「return $pdo」となっています。

戻り値(return)については、こちらの記事から!

まとめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA