FuelPHP

FuelPHPでデータの新規作成(実践編その1)

更新日:

CakePHPで実際にプログラムを書き始めてみると、FuelPHPで同じようなプログラムを書いたときにどちらが簡単か知りたくなり、同じようなプログラムを書きながら検証してみることにしました。CakePHPと同時並行で作業を進めていきたいと思います。

1. データベーステーブルの作成ですが、せっかくCakePHPでテーブルを作成していますので、同じテーブルを使って検証してみることにします。データベーステーブルの作成方法は、『CakePHP2.1でデータの新規作成(実践編その1)』を参照して下さい。

2. データベースへの接続方法は、『FuelPHPでデータベース接続』を参照して下さい。それでは、まずコントローラを作成し、addアクションを作成します。呼び出すビューを指定するために下記のように記述します。

app/classes/controller/collection.php

class Controller_Collection extends Controller{
 public function action_add(){
 //ビューの呼び出し
 $view=View::forge('collection/add');
 return $view;
 }

3. ビューファイルを作成します。FuelPHPはCakePHPと違ってDreamweaverとの相性がいいので、Dreamweaverで作成したフォームを使用します。

app/views/collection/add.php

<h2>新規作成</h2>
 <form name="form1" method="post" action="">
 <table width="100%" border="1">
 <tr>
 <th scope="row">タイトル</th>
 <td><input type="text" name="title" id="title"></td>
 </tr>
 <tr>
 <th scope="row">作成日</th>
 <td><label for="created"></label>
 <input name="created" type="text" id="created" value="<?php echo date("Y-m-d H:i:s")?>"></td>
 </tr>
 <tr>
 <th scope="row">コード番号</th>
 <td><label for="col_code"></label>
 <input type="text" name="col_code" id="col_code"></td>
 </tr>
 <tr>
 <th scope="row">保管場所</th>
 <td><label for="save_space"></label>
 <input type="text" name="save_space" id="save_space"></td>
 </tr>
 <tr>
 <th colspan="2" scope="row"><input type="submit" name="button" id="button" value="送信"></th>
 </tr>
 </table>
 </form>

4. http://ドメイン名/collection/addと入力すると、下記のように入力フォームが表示されます。

5. それでは、入力データを受け取るためにaddアクションを修正します。発行したSQLを見るためのコードも記述しておきました。

app/classes/controller/collection.php

public function action_add(){
 //もしPOST送信されたら
 if (Input::method() == 'POST'){
 //データの整理
 $title=Input::post('title');
 $created=Input::post('created');
 $col_code=Input::post('col_code');
 $save_space=Input::post('save_space');
 //連想配列にデータをセット
 $data=array(
 'title'=>$title,
 'created'=>$created,
 'col_code'=>$col_code,
 'save_space'=>$save_space,
 );
 //SQLの発行
 $query = DB::insert('collections')->set($data)->execute();
 //発行したSQLを表示してみます
 echo DB::last_query();
 }
 //ビューの呼び出し
 $view=View::forge('collection/add');
 return $view;
 }

6. ブラウザから入力して、送信ボタンを押してみます。

7. 発行されたSQLが表示されています。

8. phpMyAdminでデータが登録されているか確認してみます。

9. 私みたいにDreamweaverを重用する人にとっては、ビューファイルが簡単にDreamweaverで作成できるfuelPHPの方が使いやすいですね。

10. それではデータの入力後、indexページへ移動するように、indexアクションとビューファイルを作成してみます。

app/classes/controller/collection.php

public function action_index(){
 //Collectionsテーブルのデータ取得
 $query=DB::select()->from('collections')->execute();
 //ビューファイルの呼び出し
 $view=View::forge('collection/index');
 //データベース情報の引き渡し
 $view->set('query',$query->as_array());
 return $view;
 }

app/views/collection/index.php

<h2>コレクション一覧</h2>
 <table width="100%" border="1">
 <tr>
 <th scope="col">ID</th>
 <th scope="col">タイトル</th>
 <th scope="col">作成日</th>
 <th scope="col">コード</th>
 <th scope="col">保管場所</th>
 </tr>
 <?php foreach($query as $row):?>
 <tr>
 <td><?=$row['ID']?></td>
 <td><?=$row['title']?></td>
 <td><?=$row['created']?></td>
 <td><?=$row['col_code']?></td>
 <td><?=$row['save_space']?></td>
 </tr>
 <?php endforeach;?>
 </table>

11. addアクションも若干修正します。SQL発行後にindexアクションへ移動します。

app/classes/controller/collection.php

public function action_add(){
 //もしPOST送信されたら
 if (Input::method() == 'POST'){
 //データの整理
 $title=Input::post('title');
 $created=Input::post('created');
 $col_code=Input::post('col_code');
 $save_space=Input::post('save_space');
 //連想配列にデータをセット
 $data=array(
 'title'=>$title,
 'created'=>$created,
 'col_code'=>$col_code,
 'save_space'=>$save_space,
 );
 //SQLの発行
 $query = DB::insert('collections')->set($data)->execute();
 //indexページへ移動
 return Response::redirect('collection/index');
 }
 //ビューの呼び出し
 $view=View::forge('collection/add');
 return $view;
 }

12. ブラウザで確認してみます。新規にデータを作成してみます。

13. indexページへ移動して、データが新規作成されているのが分かります。

本日は以上です。

-FuelPHP
-

Copyright© WinRoad徒然草 , 2018 All Rights Reserved Powered by AFFINGER5.