準備
サブドメインを作る
- お名前.comのレンタルサーバーの管理パネル(cPanelやRental Server管理画面)にログイン
- 「サブドメイン設定」メニューを探す
kakeiboなどのサブドメイン名を入力して追加- 公開フォルダ(例:
/kakeibo/や/public_html/kakeibo/)が自動生成される
データベースを作る
- 管理パネルの「MySQL設定」または「データベース作成」を開く
- 新しいデータベース名を決める(例:
wrgjj_kakeibo) - データベース用のユーザーを作成し、パスワードを設定
- そのユーザーにこのデータベースへの全権限を付与
- DB名・ユーザー名・パスワード・ホスト名(大抵は
localhost)をメモしておく(後でPHPから接続する時に使う)
PHPが動くか確認
- サブドメインの公開フォルダに
test.phpというファイルを作り、中身を<?php phpinfo(); ?>にしてアップロード - ブラウザで
kakeibo.example.com/test.phpを開いてPHP情報が表示されればOK - 確認できたら
test.phpは削除(セキュリティのため)
ファイルをアップロードする方法を決める
- お名前.comは大抵FTP/SFTPに対応しているので、FileZillaなどのFTPソフトを使う
- または管理パネルのファイルマネージャーから直接アップロードも可能
phpMyAdminでテーブルを作る
1. phpMyAdminにアクセス
お名前.comの管理パネルから「phpMyAdmin」を探して開いてください(データベース管理メニューの中にあることが多いです)。ログイン画面が出たら、さっき作った
- ユーザー名:
wrgjj_kakeibo_tantou - パスワード:
password1
でログインします。
2. 対象のデータベースを選ぶ
左側のメニューに wrgjj_kakeibo というデータベースが表示されているはずなので、それをクリックして選択してください。
3. SQLタブを開く
画面上部に「SQL」というタブがあります。それをクリックすると、SQL文を直接入力できる画面が出てきます。
4. 以下のSQLをコピペして実行
sql
CREATE TABLE accounts (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL
);
CREATE TABLE categories (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL
);
CREATE TABLE transactions (
id INT AUTO_INCREMENT PRIMARY KEY,
no VARCHAR(20) NULL,
date DATETIME NOT NULL,
account_id INT NOT NULL,
category_id INT,
content VARCHAR(255),
memo TEXT,
is_transfer TINYINT(1) DEFAULT 0,
transfer_to_account_id INT NULL,
amount DECIMAL(12,2) NOT NULL,
FOREIGN KEY (account_id) REFERENCES accounts(id),
FOREIGN KEY (category_id) REFERENCES categories(id),
FOREIGN KEY (transfer_to_account_id) REFERENCES accounts(id)
);
貼り付けたら下にある「実行」ボタンを押してください。
5. 確認
左側のメニューに accounts, categories, transactions の3つのテーブルが表示されていればOKです。
phpMyAdmin画面の左側メニューで、データベース wrgjj_kakeibo の左にある矢印(▶)をクリックして展開してみてください。
wrgjj_kakeibo
├─ accounts
├─ categories
└─ transactions
この3つのテーブルが表示されていればOKです。
次のステップ: 口座と項目の初期データを登録
テーブルの箱ができたので、まず中身(口座名・項目名)を最初にいくつか入れておきましょう。これも同じSQLタブから実行できます
口座データを登録
phpMyAdminのSQLタブで以下を実行してください。
sql
INSERT INTO accounts (name) VALUES
('現金'),
('貯金'),
('イオン銀行'),
('楽天銀行'),
('M.Suica'),
('nanaco'),
('WAON'),
('PayPay'),
('楽天カード');
項目(カテゴリ)データを登録
続けて、同じSQLタブでこちらも実行してください。
sql
INSERT INTO categories (name) VALUES
('ギフト'),
('入金'),
('CFNJ'),
('副業'),
('返済'),
('夫婦'),
('食費'),
('おかし'),
('外食費'),
('日用品'),
('交通費'),
('プレゼント'),
('To Me'),
('医療費'),
('ヘルスケア'),
('交際費'),
('娯楽費'),
('美容費'),
('服飾費'),
('献金'),
('その他'),
('旅費'),
('生活雑貨'),
('会費'),
('スマホ'),
('不明'),
('貸し');
※SQLタブに2つのSQL文を同時に貼り付けて一度に実行しても大丈夫です。分けて実行しても問題ありません。
確認方法
実行後、左メニューの accounts テーブルをクリックして「表示」タブを開くと、9件のデータが入っているのが見えるはずです。同様に categories テーブルも27件入っているか確認してください。
次は、いよいよPHPからデータベースに接続する db.php ファイルを作って、実際にアップロードする作業に進みます。
db.php を作る(データベース接続ファイル)
このファイルは「PHPがどのデータベースに繋げばいいか」を教えるための共通ファイルです。これから作る他の全ページ(入力フォームや一覧ページなど)が、このファイルを読み込んで使います。
ファイルの中身
以下をテキストエディタ(メモ帳やVSCodeなど)にコピーして、db.php という名前で保存してください。
php
<?php
// データベース接続情報
$db_host = 'localhost';
$db_name = 'wrgjj_kakeibo';
$db_user = 'wrgjj_kakeibo_tantou';
$db_pass = 'password1';
try {
$pdo = new PDO(
"mysql:host={$db_host};dbname={$db_name};charset=utf8mb4",
$db_user,
$db_pass,
[
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
]
);
} catch (PDOException $e) {
die('データベース接続エラー: ' . $e->getMessage());
}
補足説明
PDOという仕組みを使ってDBに接続しています。これはPHPで最も標準的で安全なDB接続方法です$pdoという変数に接続情報が入り、これを他のファイルから使い回します$db_hostのところは、お名前ドットコムの場合、00000.onamae.ne.jpの場合もあります。ATTR_ERRMODE => ERRMODE_EXCEPTIONは、エラーが起きた時にちゃんとエラーメッセージが出るようにする設定です
アップロード方法
- お名前.comのファイルマネージャーを開く
kakeibo.example.comの公開フォルダ(test.phpをアップロードしたのと同じ場所)に移動db.phpをアップロード
動作確認用の一時ファイル
接続がうまくいくか確認するため、以下の内容で check.php というファイルも作って、同じ場所にアップロードしてください。
php
<?php
require 'db.php';
echo "データベース接続成功!";
$stmt = $pdo->query("SELECT COUNT(*) AS cnt FROM accounts");
$result = $stmt->fetch();
echo "<br>登録されている口座数: " . $result['cnt'] . "件";
ブラウザで kakeibo.example.com/check.php を開いてみてください。
「データベース接続成功!登録されている口座数: 〇件」と表示されればOKです。
これが確認できたら教えてください。確認できたら check.php は削除してもらって、次はいよいよ入力フォーム(1件ずつ取引を登録するページ)を作っていきます。