RadPHP XEでデータベースへデータを登録する方法を紹介します。
コンポーネントの設定
DatabaseコンポーネントとTableコンポーネントを配置します。
DatabaseコンポーネントのDatabaseNameプロパティ・Hostプロパティ・UserNameプロパティ・UserPasswordプロパティを設定してデータベースに接続できるようにします。
MySQLで文字化けする場合は、DatabaseコンポーネントのOnAfterConnectイベントに次の処理を追加します。
function Database1AfterConnect($sender, $params)
{
$this->Database1->execute('SET NAMES utf8;');
}
TableコンポーネントのDatabaseプロパティにDatabaseコンポーネントを、TableNameプロパティにテーブル名を設定します。
データの追加
Tableコンポーネントのopen()メソッドで、テーブルを開きます。
$this->BlogsTable1->open();
Tableコンポーネントのappend()メソッドで、新しいレコードを作成します。
$this->->BlogsTable1->append();
レコードのフィールドに値を設定します。
$this->BlogsTable1->Posted = date('YmdHis');
$this->BlogsTable1->Title = $this->Edit1->Text;
post()メソッドで、レコードを登録します。
$this->BlogsTable1->post();
テーブルを閉じます。
$this->BlogsTable1->close();
データの修正
修正するレコードを絞り込みます。
$this->BlogsTable1->Filter = "ID = '1'";
Tableコンポーネントのopen()メソッドで、テーブルを開きます。
$this->BlogsTable1->open();
以下は、追加処理と同じです。
$this->BlogsTable1->Posted = date('YmdHis');
$this->BlogsTable1->Title = $this->Edit1->Text;
$this->BlogsTable1->post();
$this->BlogsTable1->close();
RadPHP XEのデータ登録は、SQLのinsert文とupdate文を使い分ける必要もなくて簡単です。
仕様変更によるフィールドの増減にも簡単に対応できそうです。
テーブルのフィールド名が、Tableコンポーネントのプロパティと同名の時
テーブルのフィールド名がTableコンポーネントのプロパティと同名の時、レコードの値を設定したつもりが、コンポーネントのプロパティを設定しています。
// テーブルのレコードフィールドに値を設定したつもりが、
// コンポーネントのNameプロパティに値が設定されている。
$this->BlogsTable1->Name = $this->Edit1->Text;
このようなときはTableコンポーネントのfieldset()メソッドを使用します。
$this->BlogsTable1->fieldset('Name', $this->Edit1->Text);
普段から、レコードへの値の設定はfieldset()メソッドを使用してもいいでしょう。
Pingback: 山本隆の開発日誌