やること
昨日の復習
1.bbs2をbk.bbs2にリネームしてバックアップ
mv bbs2 bk.bbs2
2.front backend mypage
各アプリケーション作成およびdefaultモジュール作成。
3.backendとmypageで/区切りのURLでアクセス
4.frontアプリケーションのレイアウトを変更。
2時間目
1時間目続き。
30分から復習
3時間目
mypageは出るがbackendが出ない。はて。
/bbs2/web/backend/backend.phpの
../../にiが入ってた_| ̄|○
直った。
ちなみにでらっちが/web/main.cssと/apps/front/templates/layout.phpの
中身メールでくれてるよ。昨日とおとといのおいらの記事にもあるけど。
でらっちのみてね~。
member_addはいいのかなあ・・・・・・。
4時間目
retrieveByPK(1);のKは基本
困ったときのデバッグとシンボリックリンク
http://www.shonanbbs.com/front_dev.php
画面が真っ白のときはここを見ればエラーが書いてある。
で、デバッグバーの画像がまだ引っ張れてないので関連付け
bbs2/webで下記実行
ln -s /usr/share/pear/data/symfony/web/sf ./sf
sf -> /usr/share/pear/data/symfony/web/sf
が出ていればデバッグページでF5で出てくるよ。
backendやmypageなどのほかのページには、各ディレクトリへ移動してから
各_dev.phpの../を2個にしておくよ。
ln -s ../sf sf
上の階層(web)からsfを引っ張ってくるよ。
CSSも同じスタイルでよければ
ln -s ../CSS CSS
でつくよ。
セキュリティ上非常に危険なため、リリース前には必ず_dev.phpは削除する。
5時間目
Criteria(クライテリア)による条件指定
WHEREの代わりに使う。
$c = new Criteria();
$c->add(テーブル名Peer::カラム大文字, 指定する値, 条件)
条件を書かない場合はカラム=値と等しい場合となる。
SQL文だとこうなるけど
select * from member whwre id =1;
Symfonyではこうなる
//最初に必ずセット select * from member;と同じ。 $c = new Criteria(); //IDが1のデータ //$c->add(MemberPeer::ID, 1); //member+sで複数にする。1行分のデータを引き出す。 $members =MemberPeer::doSelectOne($c); //指定したIDのみ1行だけ引き出す。 $member = MemberPeer::retrieveByPK(2); //$memberを表示させる。 //print $member->getNickname(); print_r ($members);
ソース出すとこうなる。データは配列で受け取る。
Member Object ( [id:protected] => 1 [nickname:protected] => yamazaki [mailaddress:protected] => ****@gmail.com [password:protected] => [created_at:protected] => [alreadyInSave:protected] => [alreadyInValidation:protected] => [validationFailures:protected] => Array ( ) [_new:private] => [_deleted:private] => [modifiedColumns:protected] => Array ( ) )
☆DBから名前のデータを引き出す。
action.class.php //最初に必ずセット select * from member;と同じ。 $c = new Criteria(); //$member+sで複数にする。テーブルのすべてのデータを引き出す。 $this->members = MemberPeer::doSelect($c); indexSuccess.php {を使うとわかりにくいので、:と<?php endforeach;?>で囲う。 <?php foreach ($members as $member):?> <?php echo $member->getNickname();?><br> <?php endforeach;?>
☆練習問題
名前とメールアドレスをテーブルに出力+CSSで整形
indexSuccessのソース <div class="tblData"> <table> <tr> <th>名前</th> <th>メールアドレス</th> </tr> <?php foreach ($members as $member):?> <tr> <td><?php echo $member->getNickname();?></td> <td><?php echo $member->getMailaddress();?></td> </tr> <?php endforeach;?> </table> </div> MAINCSS .tblData table { border-collapse:collapse; font-size:93%; margin:5px 0; } .tblData th { background:none repeat scroll 0 0 #EEEEEE; color:#333333; font-weight:bold; padding:5px; width:120px; } .tblData th, .tblData td { border:1px solid #ddd; paddig: 5px 10px; }
6時間目
☆Criteria(クライテリア)による条件指定
条件
Criteria::EQUAL
Criteria::NOT_EQUAL
//最初に必ずセット select * from member;と同じ。 $c = new Criteria(); //IDが1のデータ //$c->add(MemberPeer::ID, 1); //IDがyamazakiのデータ select * from member where nickname ; //$c->add(MemberPeer::NICKNAME, 'yamazaki', Criteria::NOT_EQUAL); //like指定 //$c->add(MemberPeer::NICKNAME, "%yama%", Criteria::LIKE); //日付指定検索 //$c->add(MemberPeer::CREATED_AT, "2011-03-01", Criteria::GREATER_THAN); //複数条件 //$c1 = $c->getNewCriterion(MemberPeer::CREATED_AT, "2011-03-01", Criteria::GREATER_THAN); //$c2 = $c->getNewCriterion(MemberPeer::NICKNAME, "ya%", Criteria::LIKE); //$c1->addOr($c2); //$c->add($c2); //$member+sで複数にする。テーブルのすべてのデータを引き出す。 $this->members = MemberPeer::doSelect($c);
忘れてたUPDATE
日付修正ID指定込み
update member set created_at ='2011-03-25' where id =2;
名前文字化け修正ID指定込み
update member set nickname =('名前') WHERE id =2;
☆練習問題 テーブルの上に検索欄追加。余裕のある人はcommentも呼び出して。
indexSuccess側 <form action="/" method="POST"> 名前:<input type="text" name="keyword"> <input type="submit" name="send" value="送信"></form> action側 //最初に必ずセット select * from member;と同じ。 $c = new Criteria(); //シンプルなlike検索機能 $keyword = $this->getRequestParameter("keyword"); if($keyword !=""){ $c->add(MemberPeer::NICKNAME, "%".$keyword."%", Criteria::LIKE); } //$member+sで複数にする。テーブルのすべてのデータを引き出す。 $this->members = MemberPeer::doSelect($c);
commentに何も入れてなかった。サンプルに残そー。
insert into comment (nickname,content,created_at) values ('山崎','腰が痛い','2011-03-25');
insert into comment (nickname,content,created_at) values ('みっくみく','ボカロボカロ','2011-03-25');
insert into comment (nickname,content,created_at) values ('サンレッド','コードナンバー046','2011-03-25');
insert into comment (nickname,content,created_at) values ('ウサコッツ','アニマル怪人','2011-03-25');