この記事を読む前に、「PHP を使用した MySql データベースへのアクセス - 初級」を読むことをお勧めします。
Smarty は PHP 言語で書かれたテンプレート エンジンで、現在業界で最も有名な PHP テンプレート エンジンの 1 つです。ロジック コードと外部コンテンツを分離し、元々 HTML コードと混在していた PHP コードを分離します。これにより、PHP プログラマーは Web サイトのフロントエンド プログラマーと適切な分業を実現できます。PHP プログラマーによるプログラムの論理コンテンツの変更は、フロントエンド スタッフのページ デザインには影響せず、フロントエンド スタッフによるページの再変更には影響しません。ページ スタイルはプログラムのパフォーマンスに影響を与えないため、複数人によるコラボレーション プロジェクトの管理と保守が特に容易になります。 Smarty には多くの利点があるため、国内の大手企業は Web サイトをプログラミングする際にこのプログラミング方法を採用しています。 Smarty のマニュアルには、http://www.smarty.net/docs/en/index.tpl からアクセスできます。
以下は、Smarty プログラムの小さな例です。機能的には最初の章と同じで、MySql テスト データベースの t_student からデータを読み取り、それを表示します。プログラムは、smarty2.php、smarty2.html、smarty2_head.php、smarty2.js、smarty2.css の 5 つのファイルに分かれています。さらに、プログラムは Smarty および JQuery ライブラリ ファイルを参照する必要があります。
1. Smarty2_head.php ファイル
// 投稿者 MoreWindows( http://www.BkJia.com )
定義(DB_HOST, 'ローカルホスト');
定義(DB_USER, 'ルート');
定義(DB_PASS, '111111');
定義(DB_DATABASENAME, 'テスト');
定義(DB_TABLENAME, 't_student');
$dbcolarray = array('id', 'name', 'age');
?>
// By MoreWindows( http://www.BkJia.com )
定義(DB_HOST, 'ローカルホスト');
定義(DB_USER, 'ルート');
定義(DB_PASS, '111111');
定義(DB_DATABASENAME, 'テスト');
定義(DB_TABLENAME, 't_student');
$dbcolarray = array('id', 'name', 'age');
?>
2. Smarty2.php ファイル
// 投稿者 MoreWindows( http://www.BkJia.com )
header("Content-Type: text/html; charset=utf-8");
require('../../smart_libs/Smarty.class.php');
require_once('smarty2_head.php');
date_default_timezone_set("中国");
$conn = mysql_connect(DB_HOST, DB_USER, DB_PASS) または die("接続に失敗しました" . mysql_error());
mysql_select_db(DB_DATABASENAME, $conn);
//テーブル内のレコード数
{
$dbcount = mysql_fetch_row($result);
$tpl_db_count = $dbcount[0];
}
それ以外は
{
Die(「クエリが失敗しました」);
}
//ヘッダー
$tpl_db_coltitle = $dbcolarray
//テーブルの内容
$tpl_db_rows = 配列();
$sql = sprintf("%s から %s を選択", implode(",",$dbcolarray), DB_TABLENAME);
$result = mysql_query($sql, $conn);
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))// $row=mysql_fetch_assoc($result) と同等
$tpl_db_rows[] = $行
;
mysql_free_result($result);
mysql_close($conn);
$tpl = 新しいスマーティ
$tpl->assign('db_count', $tpl_db_count);
$tpl->assign('db_coltitle', $tpl_db_coltitle);
$tpl->assign('db_rows', $tpl_db_rows);
$tpl->display('smarty2.html');
?>
// By MoreWindows( http://www.BkJia.com )
header("Content-Type: text/html; charset=utf-8");
require('../../smart_libs/Smarty.class.php');
require_once('smarty2_head.php');
date_default_timezone_set("中国");
//mysql_connect
$conn = mysql_connect(DB_HOST, DB_USER, DB_PASS) または die("接続に失敗しました" . mysql_error());
mysql_select_db(DB_DATABASENAME, $conn);
//テーブル内のレコード数
$sql = sprintf("select count(*) from %s", DB_TABLENAME);
$result = mysql_query($sql, $conn);
if ($result)
{
$dbcount = mysql_fetch_row($result);
$tpl_db_count = $dbcount[0];
}
それ以外
{
die("クエリが失敗しました");
}
//ヘッダー
$tpl_db_coltitle = $dbcolarray;
//表中の内容
$tpl_db_rows = array();
$sql = sprintf("select %s from %s", implode(",",$dbcolarray), DB_TABLENAME);
$result = mysql_query($sql, $conn);
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))// 与$row=mysql_fetch_assoc($result)等价
$tpl_db_rows[] = $row;
mysql_free_result($result);
mysql_close($conn);
$tpl = 新しい Smarty;
$tpl->assign('db_count', $tpl_db_count);
$tpl->assign('db_coltitle', $tpl_db_coltitle);
$tpl->assign('db_rows', $tpl_db_rows);
$tpl->display('smarty2.html');
?>
3.smarty2.htmlファイル
{$col} |
---|
{$val} |
{$col} |
---|
{$val} |