ログイン画面を作っていくぞ、と(CakePHP修行 #011)

さてCakePHP。前回までのあらすじはこちら。 » CakePHP修行! アーカイブ | i d e a * i d e a 今回はログイン画面を作っていきます。参考にするのはここらへん。 » CakePHP Manual ■ /app/views/users/login.thtml まずはログイン画面を作ります。チュートリアルを参考にしながら作りこんでいきます。 前回のモックアップで作った画面のHTMLはこんな感じなのでここにコードを入れこんでいきます(テーブルタグかよー、とか言わないw)。 <form> <div id="sys_msg">email and password do not match!</div> <table border="0" cellspacing="2" cellpadding="2"> <tr><td width="40%" align="right">email</td><td><input type="text" size="30" name="email" value="" /></td></tr> <tr><td width="40%" align="right">password</td><td><input type="password" size="20" name="password" value="" /></td></tr> <tr><td width="40%">&nbsp;</td><td><input type="checkbox" name="save" value="" /> save my info?</td></tr> <tr><td width="40%">&nbsp;</td><td><input type="submit" value="Let me in!" /></td></tr> <tr><td width="40%">&nbsp;</td><td><a href="">forgot your password?</a></td></tr> </table> </form> チュートリアルによれば「$html->url」とか「$html->input」とかいれていけばいいらしい。あまり考えずにやってみます。 <form action="<?php echo $html->url(‘/users/login’); ?>" method="post"> <?if ($error): ?> <div id="sys_msg">email and password do not match!</div> <? endif; ?> <table border="0" cellspacing="2" cellpadding="2"> <tr><td width="40%" align="right">email</td><td><?php echo $html->input(‘User/email’, array(‘size’ => 30)); ?></td></tr> <tr><td width="40%" align="right">password</td><td><?php echo $html->input(‘User/pwd’, array(‘size’ => 20)); ?></td></tr> <tr><td width="40%">&nbsp;</td><td><input type="checkbox" name="save" value="" /> save my info?</td></tr> <tr><td width="40%">&nbsp;</td><td><?php echo $html->submit(‘Let me in!’); ?></td></tr> <tr><td width="40%">&nbsp;</td><td><a href="">forgot your password?</a></td></tr> </table> </form> うーん、と。「save my info?」のところをどう処理したらいいかわかりません。checkboxの表現もわからなければ、データとしてどう持つべきかもよくわかりません。そういうときは「ザ・後回し!」。とりあえずチェックボックスだけ表示させておいて機能はあとで作るようにします。 ■ /app/controllers/users_controller.php 次にControllerでlogin()を作ります。チュートリアルをコピーして適宜変えてみます。長くなるのでコード内のコメントは削除。 <?php class UsersController extends AppController {   function login()   {     $this->set(‘error’, false);     if (!empty($this->data))     {       $someone = $this->User->findByEmail($this->data[‘User’][’email’]);       if(!empty($someone[‘User’][‘pwd’]) && $someone[‘User’][‘pwd’] == $this->data[‘User’][‘pwd’])       {         $this->Session->write(‘User’, $someone[‘User’]);         $this->redirect(‘/’);       }       else       {         $this->set(‘error’, true);       }     }   }   function logout()   {     $this->Session->delete(‘User’);     $this->redirect(‘/’);   } } ?> えーと、これはこれでいいのかな。リダイレクト先をどうすべきかがいまいちわからん。あとpwdはまんまで比較しているのでいまいちですね。これはあとでやることにしましょう。 ■ /app/app_controller.php さて次はセッションをチェックして、ログインしていなかったらログイン画面に飛ばすロジックを作成(かな?)。 <?php class AppController extends Controller {   function checkSession()   {     if (!$this->Session->check(‘User’))     {       $this->redirect(‘/users/login’);       exit();     }   } } ?> ■ /app/controllers/users_controllers.php そんでもって、User関係のすべてのアクションの前にこのセッションチェックをしてみましょう。 <?php class UsersController extends AppController {   function beforeFilter()   {     $this->checkSession();   } } ■ テスト! さて、ここまで出来たらテストです!おもむろに http://www.codexcode.com/users/ …

モックアップ画面をいろいろ作る(CakePHP修行 #010)

さてCakePHPのお勉強。前回までのあらすじはこちら。 » CakePHP修行! アーカイブ | i d e a * i d e a それから前回までの記事への突っ込みありがとう>青い人! さて今回はモックアップ画面の作成です。最初は「デザインはチョーてきとーでー」と思ったのですが、開発する上でテンションをあげるにはやはりデザインから。CakePHPと直接関係ないですが、画面のモックアップを作っていきます。 今回とりあえず作るのは次の3画面。作っているうちに課題は見えてくるでしょう。 ログイン画面 自分の「ホーム」画面 友達の「ホーム」画面 ま、ちょろちょろと作るので本気度30%ぐらいで。シンプルかつミニマムがコンセプト。あと面倒なんでインターフェースはすべて英語にします(英語のタイポグラフィーのがきれいだから)。 つうわけでつくってみた画面。 ■ ログイン画面 ログインしていない状態では全部これが出るようにします。 ↑ とりあえず全表示状態なんでエラーメッセージも出しています。 ■ 自分のホーム画面 こんな感じじゃないすかね?(http://www.codexcode.com/かな) ↑ ま、のちのち足したい機能が出てくるかと思いますがそれはそのとき考えましょう。写真は拝借しても怒りそうにない人から拝借しました。 ■ 友達のホーム画面 自分のホーム画面のトップを残しつつ、その下を友達の画面に。わかりやすいかな・・・ま、いいです。ユーザビリティとかそういうのは。とりあえず。 URL的には http://www.codexcode.com/users/25 とかかな。 ↑ メニュー的にはこんなところでしょ。今思ったけど友達の日記は友達の友達の日記じゃなくて友達の日記一覧だな・・・。 ただのモックアップ画面なんで細かいところは突っ込まないように。設定画面とか日記投稿画面はあとからつくります。今思ったけど日記に対するコメント作りたいな・・・。ま、あとでやりましょう。 ■ 次回予告 で、全部つくると大変なんで、とりあえずログインしたら自分のホーム画面に行って自分のプロフィールが表示されるところまで作ってみたいと思います。

$scaffoldを試してみる(CakePHP修行 #009)

さてCakePHPのお勉強。前回までのあらすじはこちら。 » CakePHP修行! アーカイブ | i d e a * i d e a さて前回「bake.php=面倒」ということがわかったので(かなり個人的な主観)、今回は$scaffoldをControllerに足す方法を試します。 ■ 下準備 試しにやるだけなのでUsersモデルだけでやってみます。イメージでは作業は以下の通り。 /app/models/user.phpをつくる /app/controllers/users_controller.phpを作って$scaffoldを追加。 /users/にアクセスすれば追加・削除・編集の画面ができているはず!(かな?) では期待どおりになるかどうか・・・ドキドキしながらやってみます。 ■ Usersモデルを作成 /app/models/user.phpを次のように作成。モデルは単数か、覚えないと。まず一つを定義するから、とか覚えておこう。 <?php class User extends AppModel {     var $name = ‘User’; } ↑ こんな感じ。最後の「?>」は書かない派ですw。 ■ コントローラーをつくるぞ /app/controllers/users_controller.phpを作ります。こちらは複数ね。 <?php class UsersController extends AppController {     var $name = ‘Users’;     var $scaffold; } さぁ、これでいいのでしょうかねぇ・・・。できたのか試してみます。 ■ /usersにアクセスしてみる さて・・・と、http://www.codexcode.com/users/にアクセスしてみます。 ↑ キターーーーーーー・・・・Warningかよ・・・orz。 前回/app/tmpに777のPermissionを与えましたが、これ、下位フォルダもそうしないとだめっぽかったっすね(つか、当然ですね・・・)。「chmod -R 777 /app/tmp」で解決。 ↑ きれいになりました。 なーるほど、これは便利ですね。Viewを書く手間が一気に減りました。うーん、便利かも。 それからマニュアルによるとViewのカスタムも簡単なようです。しかもすべてのモデルに共通するViewも作れるみたい。 各モデルごとなら以下を追加。 /app/views/users/scaffold/index.scaffold.thtml /app/views/users/scaffold/edit.scaffold.thtml /app/views/users/scaffold/show.scaffold.thtml /app/views/users/scaffold/new.scaffold.thtml すべてのモデルに共通するViewなら以下を追加。 /app/views/scaffold/index.scaffold.thtml /app/views/scaffold/edit.scaffold.thtml /app/views/scaffold/show.scaffold.thtml /app/views/scaffold/new.scaffold.thtml ちょっと試してみようかと思いましたが、まぁ、将来的に必要になったらやればいいや、ということでScaffoldの実験はこれでおしまい。とりあえずuser_controller.phpから$scaffoldを外しておきます。 さて、やっぱりViewはカスタムで一つずつ作ってみたいので、次回はいよいよ画面のモックアップからViewの設計までいきたいと思います。

bake.phpを使ってみる(CakePHP修行 #008)

※ 今回からタイトルを変えました。 さてCakePHPのお勉強。前回までのあらすじはこちら。 » CakePHP修行! アーカイブ | i d e a * i d e a さてScaffoldっちゅうやつを使ってみたい。ちなみに以前Railsのデモ映像を見たときのScaffoldのイメージは「コマンドラインから自動的になんかアプリっぽいものを一発で作ってくれる!」というものです。さて、本当にそうなるのでしょうか・・・。 なお、コードの自動生成はいまいち好きではないので、本格的に作るときはScaffoldを使うつもりはゼロ。ただ、「どんだけ簡単か」は知っておきたいので調査の意味もかねてやってみます。 ■ scaffoldってなんだ? まずはScaffoldのやり方を調べるため、ざっくり検索します。わかったことは次の二つ。 Controllerに$scaffoldっていれればいいらしい。 bake.phpってやつを使えばなんかざっくり作ってくれるらしい(しかしこれがScaffoldという機能かどうかは不明。ま、簡単に作れる機能ということで)。 両方試してみたいのですが、まずは簡単そうな後者をやってみます。 ■ bake.phpってなんだ? ※ ここからUNIX初心者っぽい記述が続きます。みんな、僕のことを嫌いにならないでね! では次にbake.phpにて検索。次のサイトが参考になるっぽい。 » CakePHP Users in Japan Wiki – bake.phpの使用 ここで使用されているコマンドは次のとおり。 bake.php -project /home/user/baketest まずよくわからないのが、いきなりbake.phpで始まっている点。「php -f 」じゃないの? 次にわからないのは「/home/user/baketest」。ここには何をいれるべきなのだろう?でも「baketestフォルダも勝手に作ってくれます」とあるので、まずはこれでやってみましょう。 で、bake.phpがある/cake/scriptsに移動しておもむろにコマンドラインから次のように打ってみます。 [webadmin@100shiki scripts]$ bake.php -project /home/webadmin/codexcode.com/baketest bash: bake.php: command not found エラーがでました。そりゃそうです。 [webadmin@100shiki scripts]$ php -f bake.php -project /home/webadmin/codexcode.com/baketest Usage: php [options] [-f] <file> [–] [args…]        php [options] -r <code> [–] [args…] … またしてもエラー。これもまぁ、そうでしょう。bake.php自体のオプションをphp -fにかませる方法がよくわからん・・・(すみません、すみません)。 そこで気を取り直して、/usr/bin/phpにパスを通してみます。.bash_profileを書き直し、「. .bash_profile」で読み込みます。これでphp -fはつけなくてよいはず(なにか違う?)。 [webadmin@100shiki scripts]$ bake.php -project /home/webadmin/codexcode.com/baketest bash: ./bake.php: 許可がありません なぬ・・・「chmod 744 bake.php」で許可を与えます。そして再度実行。今度はうまくいきました!なんか次のような画面がでていろいろ出来た模様です。 ↑ なんかテンプレートファイルをつくってくれました。 ↑ Sambaで見たファイルの構成はこんな感じ。つまるところ、/appと同じものを作ってくれるというわけね。 そのあといろいろ調べたところ、再度以下のコマンドを実行するといろいろな設定をインタラクティブにやってくれるらしい。 [webadmin@100shiki scripts]$ bake.php -project /home/webadmin/codexcode.com/baketest DBの設定ができたり、MVCの設定ができたり、ということらしいです。最初にイメージしていたものとは大分違いますね・・・個人的に期待していたのは、「DBの設定を読み取って、/app以下のMVCを勝手に作ってくれる」だったのですが・・・。 というわけでここでbake.phpの設定は断念。インタラクティブでひとつひとつ設定できるのはいいですが、いまいち面倒すぎます(具体的にはここで説明されているような処理になります)。 というわけで、せっかく作った/home/webadmin/codexcode.com/baketestはさくっと削除しちゃいます。 では次のエントリーでは$scaffoldをControllerに足していく方法を試すことにしましょう。

CakePHPでSNSっぽいものを作ろうとして挫折するまでのコーディング日記(#007)

さてCakePHPのお勉強。前回までのあらすじはこちら。 » CakePHP修行! アーカイブ | i d e a * i d e a さていくつか進捗報告。 ■ ちょっと調べたこと ここまでで大枠はわかってきたので空き時間に勉強するように参考文献がないかあたってみました。いくつかの発見をシェア。 書籍は今のところ洋書しかなさそう。下の書籍が見つかりましたがまだそんな段階ではないので購入は保留。 » CakePHP Recipes。 ニュース記事は青い人の記事以外にもこれを発見。ただ、2ページ目から会員登録が必要だったので読んでいない。 » CodeZine:CakePHPフレームワークによる快速WEB開発(CakePHP, Cake, PHP, フレームワーク) ブログでは「CakePHPのおいしい食べ方」なるものが!これは良さそうですが、まだ自分のレベルが追い付いていない予感。数か月たったら(そして挫折してなかったら)読み返す。ちなみにこのブログも取り上げていただきました。感謝! » CakePHP のおいしい食べ方 あとPDFでCakePHPのさまざまな紹介資料をアップしているサイトも発見。こちらのPDFも読ませていただきました。 » CakePHPの何か あとはCakePHPはこんなに簡単!ということを示したムービーも発見。Railsの紹介ビデオ同様、インパクトがありますね。 » 10分で作るCakePHPアプリ for Windows – p4life そして最後にこれは忘れてはいけません。「レファレンスがPDFで読めないかなぁ」と思っていたら読者の方に教えていただきました(コメント欄で教えていただいた皆様感謝!)。これはすばらしいです!早速DLしました。 » hetimaの日記 – CakePHP ドキュメント日本語訳の pdf ■ 青い人からの突っ込みに関して 前回の記事に早速青い人から突っ込みがはいりました。 » Re: CakePHP日記 #006 ディレクトリ構成とDB設計 : akiyan.com いくつか。 まずはフォルダ構成。完璧に間違えていましたw。webadmin以下のcodexcode.comにCakePHPを入れたので正確には以下のとおりです。 /home/webadmin/codexcode.com     /app         /webroot ← DocumentRootに設定。     /cake     /vendors     .htaccess     index.php     VERSION.txt 次にDB設計。いろいろ突っ込みをいれてもらい、かなりテンションあがりました。プロにこんな指導受けて感謝感激!きっちりお礼しなくちゃ。いつものやつ(謎)でいいよね、青い人! 結局出来上がったSQLはこちら。 Users DROP TABLE IF EXISTS users; CREATE TABLE users (     id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,     name VARCHAR(50),     email VARCHAR(255) BINARY NOT NULL UNIQUE,     pwd VARCHAR(255),     profile TEXT,     created DATETIME DEFAULT NULL,     modified DATETIME DEFAULT NULL ); INSERT INTO users (name,email,pwd) values (‘taguchi’,’taguchi@foo.com’,’taguchipwd’); INSERT INTO users (name,email,pwd) values (‘akiyan’,’akiyan@foo.com’,’akiyanpwd’); BINARY属性とか知らんかった・・・。便利ね。UNIQUEもつけないと駄目ですな。ちなみにUNIQUEにはNOT NULLを入れたけどそれでいいよね? Posts DROP TABLE IF EXISTS posts; CREATE TABLE posts (     id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,     user_id INT UNSIGNED,     title TEXT,     body TEXT,     created DATETIME DEFAULT NULL,     modified DATETIME DEFAULT NULL,     KEY user_id_created (user_id, created) ); こちらは複合インデックスを追加。 Friends DROP TABLE IF EXISTS friends; CREATE TABLE friends (     id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,     user_id INT UNSIGNED,     friend_user_id INT UNSIGNED,     status INT UNSIGNED,     created DATETIME DEFAULT NULL,     modified DATETIME DEFAULT NULL,     UNIQUE KEY user_id_friend_user_id (user_id, friend_user_id),     KEY user_id_status_modified (user_id, status, modified) ); …

CakePHPでSNSっぽいものを作ろうとして挫折するまでのコーディング日記(#006)

前回までのあらすじ。 » CakePHP修行! アーカイブ | i d e a * i d e a さて今日もCakePHPのお勉強。 ■ 昨日のは練習ということでオールリセット 青い人に突っ込みをいれてもらったので前回までの作業は練習として全削除。最初からいろいろ設定しなおしました。 » 「CakePHPでSNSっぽいものをつくって挫折するまでのコーディング日記」へツッコミをいれていきます : akiyan.com 作業したことは以下のとおり。 ダウンロード、解凍 前回と同様にCakePHPをダウンロード、解凍しました。 フォルダ構成の変更 なんとなくフォルダ構成を変更しました。/home/webadmin/codexcode.com以下に全部いれて、/app/webrootをVirtualHostのDocumentRootに設定しました。 変更後のレイアウトはこんな感じ。 /home/webadmin/     /app         /webroot ← DocumentRootに設定。     /cake     /vendors     .htaccess     index.php     VERSION.txt DB設定(/app/config/database.php) あらためてDB設定。前回と同じ。 Permission設定。/app/tmpを777に。 ここは青い人もよく忘れるというポイントらしい。全部を777にするのはさすがに横暴だろうと思っていたらやっぱりそうでした。というわけで/app/tmpのみを777に。 ■ まずはDB設定 次にSNSっぽいアプリを考えたときの仕様を考えてTable Layoutを作ってみます。そのあとScaffoldをやってみたい(そのあと元に戻すと思うけど)。 では必要そうなテーブルを列挙してみます。とりあえず最小限のもので。 Users (ユーザー) まずはUsers。最小限な感じです。写真のアップ、ログイン時間とかはあとで考えよう。パスワードもとりあえず暗号化せずにいっときます。 DROP TABLE IF EXISTS users; CREATE TABLE users (     id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,     name VARCHAR(50),     email VARCHAR(255),     pwd VARCHAR(255),     profile TEXT,     created DATETIME DEFAULT NULL,     modified DATETIME DEFAULT NULL ); INSERT INTO users (name,email,pwd) values (‘taguchi’,’taguchi@foo.com’,’taguchipwd’); INSERT INTO users (name,email,pwd) values (‘akiyan’,’akiyan@foo.com’,’akiyanpwd’); Posts (← 日記。Diariesより語感がいいのでこちらに) ユーザーが書く日記。日記ごとにオーナーがいる感じで。 DROP TABLE IF EXISTS posts; CREATE TABLE posts (     id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,     user_id INT UNSIGNED,     title TEXT,     body TEXT,     created DATETIME DEFAULT NULL,     modified DATETIME DEFAULT NULL ); Friends (友達関係のJoinテーブル) ここは誰が誰の友達かを表すテーブル。ちょっとズルをして青い人に聞きながらつくってみました。 DROP TABLE IF EXISTS friends; CREATE TABLE friends (     id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,     user_id INT UNSIGNED,     friend_user_id INT UNSIGNED,     status INT UNSIGNED,     created DATETIME DEFAULT NULL,     modified DATETIME DEFAULT NULL ); まずはこれだけ作ってみました。 ちなみにこうして作ったSQL文はどこかに保存しておいてよいものだろうか?なんとなく/app/config/sqlに入れてもよいような・・・他に入れるべき適切な場所があれば教えてくれぃ → 青い人。 ■ 他にやったこと なんとなく本家サイトからチートシートをダウンロード&印刷。移動中に見て勉強することにします。あとPHPみたいにPDFで全レファレンスがDLできるとかないのだろうか? ■ 次回の予定 Scaffoldを試してみていろいろ画面を見たい。で、そのあとまたリセットして、画面のレイアウトを考えていきたいっす。 ・・・今日は以上。深夜にもうちょっとやるかも。あと明日、明後日はちょっと忙しいので次の更新は日曜日か月曜日あたりです。

CakePHPでSNSっぽいものを作ろうとして挫折するまでのコーディング日記(#005)

前回までのあらすじ。 » CakePHP修行! アーカイブ | i d e a * i d e a はまりそうもないところはかなりはしょっていきます。 さて続き。チュートリアルの続きをどんどん行います。付録Bまで進みました。 ここまでで行ったこと。 ↑ 日記の登録、削除、編集ができるようになりました。 ↑ Userモデルを導入し、日記の登録に関してはログインが必要になりました。 Userモデルは面倒なので「メールアドレス」「パスワード」「メモ」フィールドのみとしました。 ■ 今のところの疑問 さていい感じではありますが、個人的になんかいやな感じがするのは以下の点。 やっぱりレファレンスを流し読みしてみよう。全体像がわかりにくくなってきた。 インターフェースは手抜きで行こうと思ったけどそのままだとテンション落ちまくり。きれいな画面で作業したいので次の作業は見た目の改修をすることに。 見た目が終わったらログインの挙動を突っ込んで考えたい。パスワードの暗号化、「情報を保存する」オプション、ログイン後のとび先をなんとかしたい。 ■ レファレンスを読んでみる ここらへんにまずは目を通したいと思います。わからないところは基本すっとばしで。インターフェースの変更方法に気をつけてみてみます。 » CakePHP プログラマーズ リファレンスガイド

CakePHPでSNSっぽいものを作ろうとして挫折するまでのコーディング日記(#004)

前回までのあらすじ。 » CakePHP修行! アーカイブ | i d e a * i d e a 今回の顛末。 ・・・前回で「エラーキター!」と思ったらエラーじゃなかったです。Diaryモデルのテーブル名はDiariesでよかったみたい。 問題は単にViewがなかっただけでした・・・ちゃんとエラーメッセージ読めよ・・・。 ・・・というか、もちょっとはしょって書くようにします。これだとなんか1日10記事ぐらい書いちゃいそう。なんかうざいっすよね。 では次はもちょっと後で。

CakePHPでSNSっぽいものを作ろうとして挫折するまでのコーディング日記(#003)

DBの設定が終わりました。さて次!なお、前回までの様子はこちらから。 » CakePHP修行! アーカイブ | i d e a * i d e a ■ mode_rewriteの確認 mode_rewriteを確認せよ、とあったので確認。httpd.confに書いてあったので大丈夫なはず。 ■ Diaryモデルの作成 さてモデルを作り始めます。はたして「Diary」モデルで大丈夫なのか? /app/models/diary.phpを作成します。どうでもいいけど文字コードはUTF-8でいいのかな。ま、大丈夫でしょ。 <?php class Diary extends AppModel {     var $name = ‘Diary’; } これでいいのかな?次にコントローラー。一気にアクションまで追加します。これで動作確認できるはずー。 /app/controllers/diaries_controller.phpを次のように作成。 <?php class DiariesController extends AppController {     var $name = ‘Diaries’;     function index() {         $this->set(‘diaries’, $this->Diary->findAll());     } } ■ いよいよ・・・確認 さてここまでできたので、http://www.codexcode.com/diariesにアクセスします。どうなるやら・・・。 ↑ エラーでした・・・orz。 えー・・・つか、あれですな。なんか書き込みするんですな。面倒なんでpublic_html以下を全部777に(これって横暴かな?>教えて青い人)。気を取り直してもう一度アクセス! ↑ おっしゃーーーーーーーーーーーーーーーーーーーーーエラーだ! ちくしょー・・・きっとdiariesじゃだめなんだな。diarysだな、きっと。英語の複数形厳密にやっていたら大変だもんな、さすがに。 疲れたから休憩。次の記事を待て!(待たなくてもいいよ)。

CakePHPでSNSっぽいものをつくって挫折するまでのコーディング日記(#002)

前回で様子はわかったのでチュートリアルを見ながら、変えられるところは変えていきます。なお、前回までの様子はこちらをどうぞ。 » CakePHP修行! アーカイブ | i d e a * i d e a ■ DB準備 なんかDBが必要っぽいのでMySQLの設定を行います。SNSの日記を作っていきたいのでPostsではなくて、Diariesのテーブルを作ります。 ちなみにPostsはPostモデルと結びつくのは想像できますが、DiariesはDiaryモデルに紐づくのか?Diarysにした方がいいのか?Diariesでうまくいったら感動しそうだからこれでいってみます。 データベースはcodexcodeで。まずはDBの作成とユーザーの設定。 $ mysqladmin -uroot -pXXXXX create codexcode $ mysql -uroot -pXXXXX mysql> grant select,insert,update,drop,delete,create,index,alter on codexcode.* to (dbuser)@localhost identified by ‘(dbpasswd)’; 次にテーブルの作成&データのぶっこみ。 /* diaries テーブルを作成します: */ CREATE TABLE diaries (     id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,     title VARCHAR(50),     body TEXT,     created DATETIME DEFAULT NULL,     modified DATETIME DEFAULT NULL ); /* それから、テスト用に幾つかの post を挿入します: */ INSERT INTO diaries (title,body,created)     VALUES (‘Title 1’, ‘Body 1’, NOW()); INSERT INTO diaries (title,body,created)     VALUES (‘Title 2’, ‘Body 2’, NOW()); INSERT INTO diaries (title,body,created)     VALUES (‘Title 3’, ‘Body 3’, NOW()); 一応確認。 mysql> select * from diaries; +—-+———+——–+———————+———-+ | id | title   | body   | created             | modified | +—-+———+——–+———————+———-+ |  1 | Title 1 | Body 1 | 2007-06-20 12:49:52 | NULL     | |  2 | Title 2 | Body 2 | 2007-06-20 12:49:52 | NULL     | |  3 | Title 3 | Body 3 | 2007-06-20 12:49:54 | NULL     | +—-+———+——–+———————+———-+ 3 rows in set (0.00 sec) うまくいっているようです。 次にいよいよ/app/config/database.phpを作って設定します。   var $default = array(‘driver’ => ‘mysql’,                 ‘connect’ => ‘mysql_pconnect’,                 ‘host’ => ‘localhost’,                 ‘login’ => ‘XXXXXXXXXXXX’,                 ‘password’ => ‘XXXXXXXXXXX’,                 ‘database’ => ‘codexcode’,                 ‘prefix’ => ”); こんな感じかな?同じ設定ファイル内に$testがあったけどそれはそのままでいいのか?また’connect’は’mysql_pconnect’でいいのかな?いまいち違いがわかっていない・・・。 このあとhttp://www.codexcode.com/にアクセス。 ↑ 無事DBが見つかったようです。 さてここまででいいでしょう。次の作業はちょっと休憩のあと。もしかしたら今日はもうやらんかもしれんが。