今回から簡単な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)については、こちらの記事から!
まとめ
- 「top1.png」は「お問い合わせページの作成」で使った画像
- DB準備に使ったSQLは「データは全部用意しました。SQLを練習してみよう!」で解説
- DB接続処理については「データベースに接続する処理を書いてみよう」で解説
次回:ログインページの作成