ZendFrameworkのZend_Dbでレコードの更新

前回は『ZendFrameworkのZend_Dbでレコードの新規追加』をしてみました。本日はその追加したレコードを更新してみたいと思います。ビューファイルを一から作るのは面倒ですので、add.phtmlファイルをコピーして、edit.phtmlファイルを作成します。

1) 『views/test』フォルダの『add.phml』ファイルを右クリック→編集→複製とクリックして、作成したファイル名をedit.phtmlに変更します。

2) レコードの追加を『レコードの更新』に変更したら、フォームを選択して、アクションの『add』を『edit』に変更します。

3) 『Title』のテキストフィールドをクリックしたら、初期値を<?=$this->result[‘title’]?>に変更します。次に、『Content』のテキストエリアをクリックしたら、初期値を<?=$this->result[‘content’]?>に変更します。つまり、ここに変更前の情報を初期値として表示します。

4) 『controllers/TestCotroller.php』ファイルを開き、下記のコードを追加します。

public function editAction()
 {
 //POSTデータが送信された場合の処理
 if($this->getRequest()->isPost()){
 //変数idに送信されたidを代入する
 $id=$this->getRequest()->getParam('id');
 //配列dataに送信されたデータを代入する
 $data=array(
 'title'=>$this->getRequest()->getParam('title'),
 'content'=>$this->getRequest()->getParam('content')
 );
 //idが一致するデータを更新する
 $this->db->update('dvd_collections',$data,"id={$id}");
 //indexにリダイレクトする
 $this->_redirect('test/indes');
 //POSTデータが送信されていない場合の処理
 }else{
 $id=$this->getRequest()->getParam('id')*1;
 if($id <= 0){
 throw new Zend_Exception('レコードが見つかりません');
 }
 //Zend_Db_Select構文でidの一致するデータを取得します
 $select=$this->db->select()->from('dvd_collections')->where("id={$id}");
 //fetchRowメソッドで最初の1レコードを取得します。
 $result=$this->db->fetchRow($select);
 //ビューにデータを配列で渡します
 $this->view->assign('result',$result);
 }
 }

5) それではブラウザで確認してみます。『http://zend.winroad.info/test/edit/42』と前回のテスト入力したデータのid番号を入力します。表示されたTitleとContentの内容を変更します。

6) データが更新されました。

本日は以上です。

このエントリーを含むはてなブックマーク Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録

トラックバック&コメント

この投稿のトラックバックURL:

コメントをどうぞ

このページの先頭へ