データグリッドに表示させるデータを取得するには、SQL 文を bind() メソッドに渡します。
SQL クエリをデータソースとして使用する
<?php
require 'Structures/DataGrid.php';
// DataGrid のインスタンスを作成します
$datagrid =& new Structures_DataGrid();
// データベース接続を設定します
$options = array('dsn' => 'mysql://user:password@host/db_name');
// 基本的な SQL 文をデータソースとしてバインドします
$test = $datagrid->bind('SELECT * FROM my_table', $options);
// バインド時に発生したエラーを表示します
if (PEAR::isError($test)) {
echo $test->getMessage();
}
// DataGrid の内容を、デフォルトのレンダラ (HTML テーブル) で表示します
$test = $datagrid->render();
// レンダリング時のエラーを表示します
if (PEAR::isError($test)) {
echo $test->getMessage();
}
?>
SQL 言語になじみのある方なら、上の例を改良し、 より複雑なクエリを使用して自分の必要なデータを表示させることができるでしょう。
以下に示すように、データセットに対して自動的にページ処理機能を追加することもできます。 この機能は、SQL 文に透過的に LIMIT 句を追加し、 データベースへのアクセスを最適化します。
自動ページ処理
<?php
require 'Structures/DataGrid.php';
// 1 ページあたりのレコード数を 10 件にします
$datagrid =& new Structures_DataGrid(10);
// データソースを設定します
$options = array('dsn' => 'mysql://user:password@host/db_name');
$test = $datagrid->bind("SELECT * FROM my_table", $options);
if (PEAR::isError($test)) {
echo $test->getMessage();
}
// DataGrid の内容を、デフォルトのレンダラ (HTML テーブル) で表示します
$test = $datagrid->render();
if (PEAR::isError($test)) {
echo $test->getMessage();
}
// ページ処理用の HTML リンクを表示します
$test = $datagrid->render(DATAGRID_RENDER_PAGER);
if (PEAR::isError($test)) {
echo $test->getMessage();
}
?>