RadPHP XEでデータベースへデータを登録する方法

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()メソッドを使用してもいいでしょう。

コメント

  1. Pingback: 山本隆の開発日誌

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください