ホームページ >バックエンド開発 >PHPチュートリアル >PHP は、smarty と ADODB を使用してページ内のデータを読み取ります_PHP チュートリアル
定義('BASE_PATH',$_SERVER['DOCUMENT_ROOT']);
定義('SMARTY_PATH','smartTestSmarty\');
BASE_PATH.SMARTY_PATH.'Smarty.class.php' が必要です
/*$dir2 のパスがパフォーマンス ページに表示され、次の文字列が同じであるため、smarty がテンプレート パスを見つけることができません*/
//$dir2 = "../Smarty/テンプレート/";
クラス SmartyProject は Smarty を拡張します{
関数 SmartyProject(){
/*このparent::__construct();を追加する必要があります。追加しない場合、Smartyは構築されず、切り捨てなどが使用できません。
* これでは意味がわからないようですが、実際には
* これにより、truncate が使用できない問題が確実に解決されます*/
親::__construct();
$this->template_dir = BASE_PATH.SMARTY_PATH.'/templates/';
$this->compile_dir = BASE_PATH.SMARTY_PATH.'/templates_c/';
$this->config_dir = BASE_PATH.SMARTY_PATH.'/configs/';
$this->cache_dir = BASE_PATH.SMARTY_PATH.'/cache/';
}
}
クラス ConnDB{
変数 $dbtype
変数 $ホスト
var $user
var $pwd;
変数 $データベース名
var $デバッグ
var $conn;
関数 ConnDB($dbtype, $host, $user, $pwd, $dbname, $debug=FALSE){// コンストラクター
$this->dbtype=$dbtype;
$this->host=$host;
$this->user=$user;
$this->pwd=$pwd;
$this->dbname=$dbname;
$this->debug=$debug;
}
関数 GetConnId(){
require BASE_PATH.'/smartTest/adodb5/adodb.inc.php';//adodbのメインファイルを参照します
If($this->dbtype == 'mysql'){
$this->conn = NewADOConnection('mysql');
$this->conn->Connect($this->host, $this->user, $this->pwd, $this->dbname);
}else if($this->dbtype == 'mssql'){
$this->conn = NewADOConnection('mssql');
$this->conn->Connect($this->host, $this->user, $this->pwd, $this->dbname);
}else if($this->dbtype == 'access'){
$this->conn = NewADOConnection('access');
$this->conn->Connect("Driver={Microsoft Access Driver(*.mdb)};Dbq=".$this->dbname.";Uid=".$this->user." ;Pwd=".$this->pwd.";");
}
$this->conn->Execute("set names utf-8");
If($this->dbtype == 'mysql')
$this->conn->debug = $this->debug;
$this->conn を返す
}
関数 CloseConnId(){
$this->conn->Disconnect();
}
}
クラスAdminDB{
関数 ExecSQL($sqlstr, $conn){
$sqltype = strto lower(substr(trim($sqlstr), 0,6));// SQL ステートメントの最初の 6 文字を削除します
$rs = $conn->Execute($sqlstr);
If($sqltype == 'select'){
$array = $rs->GetRows();
If(count($array)==0 || $rs == false)
falseを返します。
それ以外
$array を返します。
}else if($sqltype == 'update'||$sqltype == 'insert'||$sqltype == 'delete'){
//これは結果セットを返さないか、空のセットを返します
もし($rs)
true を返します
それ以外
falseを返します。
}
}
}
クラス SepPage{
変数 $rs;
var $pagesize
var $nowpage
var $配列
var $conn;
var $sqlstr;
関数 ShowData($sqlstr,$conn,$pagesize,$nowpage){
If(!isset($nowpage)||$nowpage==""){
$this->nowpage = 1;
}その他{
$this->nowpage = $nowpage;
}
$this->pagesize = $pagesize;
$this->conn = $conn;
$this->sqlstr = $sqlstr;
//クエリ文を実行する
$this->rs = $this->conn->PageExecute($this->sqlstr,$this->pagesize,$this->nowpage);//ADODO クラスでこのメソッドを呼び出します
@$this->array = $this->rs->GetRows();
If(count($this->array)==0||$this->rs == false)
false を返します。
それ以外
$ this-> 配列を返します。
}
関数 ShowPage($contentname, $utits, $anotherserchstr, $anotherserchstrs, $class){
$allrs = $this->conn->Execute($this->sqlstr); //クエリ文を実行します
$record = count($allrs->GetRows());//統計レコードの総数
$pagecount = ceil($record/$this->pagesize);//ページ数を計算します
@$str.="Total ".$contentname." ".$record." ".$utits." 各ページには ".$this->pagesize." が表示されます。
".$utits." ".$this->rs->AbsolutePage()." ページ数/合計 ".$pagecount.";
$str.=" ";
If(!$this->rs->AtFirstPage())
$str.=" $anotherserchstrs."class=".$class.">首页";
その他
$str.="首页";
$str.=" ";
if (!$this->rs->AtFirstPage())
$str.="rs->AbsolutePage()-1)."¶meter1=".$anotherserchstr ."&パラメータ2="。
$anotherserchstrs."class=".$class.">上一页";
その他
$str.="上一页";
$str.=" ";
if(!$this->rs->AtLastPage())
$str.="rs->AbsolutePage()+1)."¶meter1=".$anotherserchstr ."&パラメータ2="。
$anotherserchstrs."class=".$class.">次の一页";
その他
$str.="次の一页";
$str.=" ";
if(!$this->rs->AtLastPage())
$str.="
$anotherserchstrs."class=".$class.">尾页";
その他
$str.="尾页";
if(count($this->array)== 0||$this->rs==false)
戻る "";
その他
$str を返します。
}
}
上記のコード定義には、データ レベルの接続、データ レベルの操作、実行、データ レベルの保存、およびスマート タイプのサブ タイプが含まれますが、このサブ タイプも特別な機能は実現しません。将その命名は
SmartyDAO.php またはそれに伴う任意の名前を取得することもできますが、もちろん、ここでの説明では、これらの経路については、大家が自分自身に関連する目標を設定していることに注意してください。
'smartyDao.php' が必要です。
//データー库类实例
$conobj = new ConnDB("mysql", "localhost", "root", "brave", "bank");
$conn = $conobj->GetConnId();
//データベース库操作类对オブジェクト
$admindb = 新しいAdminDB();
//Smartyモジュール配置类对象
$smarty = 新しい SmartyProject();
$seppage = new SepPage();//实例化分页类
このファイルは上記のファイルのクラスをインスタンス化したもので、smartyDaoImpl.php という名前を付けることもできます。関数は非常に単純です。
次に行うことは、ページング コードをテストするためのテスト ケースを作成することです。もちろん、このテストには 2 つのファイルも含まれています。1 つはコントローラーで、もう 1 つはビューです。
コントローラーのコードは次のとおりです。
include_once 'conn/smartyDaoImpl.php';
$arr_page = $seppage->ShowData("select * from localinfo", $conn, 5, $_GET['page']);// ページングクエリを実行
if(!$arr_page)
$smarty->assign('page',"F");
他 {
$smarty->assign('ページ','T');
$smarty->assign('showpage',$seppage->ShowPage("record", "a", "", "", "a1"));//割り当てページング テンプレート
$smarty->assign('arr_page',$arr_page);// クエリ レコードをテンプレートにコピーします
}
$smarty->display('view/fenyeShow.html');//データを表示するためのテンプレートを指定します
名前を付けて、smarty_ADODB_fenye.php と名付けましょう。ご覧のとおり、最初はこれを使用しました:
include_once 'conn/smartyDaoImpl.php';
ここで、前の2つのファイルはconnフォルダーに配置され、テストケースはconnと同じレベルのディレクトリに書かれていることを説明してください
次に、ビューファイルを間違った場所に置かないでください。最初に書いたクラスにそのようなステートメントがあることがわかります
。
$this->template_dir = BASE_PATH.SMARTY_PATH.'/templates/';
指定されたビュー ファイルの絶対パスは次のとおりです。
$smarty->display('view/fenyeShow.html');//データを表示するためのテンプレートを指定します
この文、
$smarty->display('view/fenyeShow.html');//データを表示するためのテンプレートを指定します
それで、私たちは
するつもりです
BASE_PATH.SMARTY_PATH.'/templates/
パスの下に view という名前のフォルダーを作成し、その後に fenyeShow.html という名前のファイルを作成します。もちろん、好きな名前を選択できますが、プログラムで指定されている一貫性を確保する必要があります
。
ビューテンプレートの内容は次のとおりです: