ホームページ  >  記事  >  バックエンド開発  >  PHP+smarty ページング原理とページング コード共有

PHP+smarty ページング原理とページング コード共有

WBOY
WBOYオリジナル
2016-07-25 08:52:41958ブラウズ
  • $ this->config_dir="smarty/smarty/config_file.class.php";
    $this->caching=false;
    $this->template_dir = "smarty/templates/";
      $this-> ache_dir = "smarty/smarty_cache/";
    1. $this->left_delimiter = "{";
    2. $this->right_delimiter = "}";
    3. }
    4. }
    5. ?>

    6. コード
    7. 2、adodb、接続データベース クラスをコピーします。
    8. class conndb
    {
    var $dbtype;var $host;var $user;
    var $pwd;

    var $dbname;

    var $debug;//false はデバッグ情報を表示しません。それ以外の場合は、 , 表示
    var $conn;
    function __construct($dbtype,$host,$user,$pwd,$dbname,$debug=false)
      {
    1. $this->dbtype = $dbtype;
    2. $this->construct($dbtype,$host,$user,$pwd,$dbname,$debug=false) host = $host;
    3. $this->user = $user;
    4. $this->pwd = $pwd;
    5. $this->dbname = $dbname;
    6. $this->debug = $debug;
    7. }
    8. //データベース接続を実装し、接続オブジェクトを返します(個人的な理解ではadodbオブジェクトを返すと言えます)
    9. function getconnid()
    10. {
    11. include_once('adodb5/adodb.inc.php');
    12. if($ this->dbtype == "mysql" || $this->dbtype == "mssql")
    13. {
    14. if($this->dbtype == "mysql")
    15. {
    16. $this->conn = newadoconnection(" mysql");// adodb オブジェクトを作成し、データベース タイプを mysql として宣言します
    17. }
    18. else
    19. {
    20. $this->conn = newadoconnection("mssql");
    21. }
    22. $this->conn ->connect( $this->host,$this->user,$this->pwd,$this->dbname);
    23. }
    24. else if($this->dbtype == " access")
    25. {
    26. $this->conn = newadoconnection("access");
    27. $this->conn->connect("driver={microsoft access driver (*.mdb)};dbq=". $this->dbname.";uid=".$this->user.";pwd=".$this->pwd.";");
    28. }
    29. $this->conn-> ;execute("set names utf-8");
    30. if($this->dbtype == "mysql")
    31. {
    32. $this->conn->debug = $this->debug;
    33. }
    34. return $this ->conn;
    35. }
    36. function closeconnid()//データベースへの接続を閉じます
    37. {
    38. $this->conn->disconnection();
    39. }
    40. }
    41. Copyコード
    42. 3、データベース操作クラス:
    43. class admindb
    {
    var $sqlstr; var $conn; var $sqltype;
    var $rs;

    var $array;

    function execsql($sqlstr,$conn)
    {
    $rs = $conn->execute($sqlstr);
      $sqltype = strto lower(substr(trim($sqlstr),0,6)); //strto lower() 関数は文字列を小文字に変換します。
    1. if($sqltype = "select")
    2. {
    3. $array = $rs->getrows(); // mysql_fetch_array 関数によって返される配列と同様
    4. if(count($array) == 0 || $ rs == false)
    5. {
    6. return false;
    7. }
    8. else
    9. {
    10. return $array;
    11. }
    12. }
    13. else if($sqltype = "update"||$sqltype = "insert"||$sqltype = " delete")
    14. {
    15. if($rs)
    16. {
    17. return true;
    18. }
    19. else
    20. {
    21. return false;
    22. }
    23. }
    24. }
    25. }
    26. コードをコピー
    27. 4、分页类:

      1. class seppage

      2. {
      3. var $rs;
      4. var $pagesize;
      5. var $nowpage;
      6. var $array;
      7. var $conn;
      8. var $sqlstr;
      9. function showdate($ sqlstr,$conn,$pagesize,$nowpage)
      10. {
      11. if(!isset($nowpage)||$nowpage=="")
      12. {
      13. $nowpage = 1 ;
      14. }
      15. else
      16. {
      17. $this-> ;nowpage = $nowpage;
      18. }
      19. $this->pagesize = $pagesize;
      20. $this->conn = $conn;
      21. $this->sqlstr = $sqlstr;
      22. $this->rs = $ this->conn->pageexecute($this->sqlstr,$this->pagesize,$this->nowpage);
      23. //pageexecute($sql, $nrows, $page, $inputarr=false ) 资料集のコード機能を使用し、数 $page は 1 を使用します
      24. $this->array = $this->rs->getrows();
      25. if(count($this->配列) == 0 || $this->rs == false)
      26. {
      27. return false;
      28. }
      29. else
      30. {
      31. return $this->array;
      32. }
      33. }

      34. < ;p>関数 showpage($contentname,$utits,$anothersearchstr,$class)
      35. {

      36. $allrs=$this->conn->execute($this->sqlstr);

      37. $record=count($allrs->getrows());
      38. $pagecount=ceil($record/$this->pagesize);

      39. $str.="共有".$contentname." ".$record."  ".$utits." 每页显示 ".$this->pagesize." ".$utits." 第 ".$this->rs->absolutepage() ." 页/共 ".$pagecount." 页";

      40. $str.="    ";

      41. if(!$this->rs->atfirstpage())

      42. {
      43. $str.="首页";
      44. }
      45. else
      46. {
      47. $str.="首页";
      48. }
      49. $str.=" ";

      50. if(!$this->rs->atfirstpage())

      51. {
      52. $str.="上一页";
      53. }
      54. else
      55. {
      56. $str.="< font color='#555555'>上一页";
      57. }
      58. $str.=" ";

      59. if(!$this->rs->atlastpage())

      60. {
      61. $str.="次の一页";
      62. }
      63. else
      64. {
      65. $str.="< font color='#555555'>下一页";
      66. }
      67. $str.=" ";
      68. if(!$this->rs->atlastpage())

      69. {
      70. $str.="尾页";
      71. }
      72. else
      73. {
      74. $str.="尾页
      75. }
      76. if(count($this->array)==0 || $this->rs==false)
      77. {
      78. return "";
      79. }
      80. else
      81. {
      82. return $str;
      83. }
      84. }
      85. }

      复制帽

      5. 記事文字変換処理用のクラス:

      1. class usefun

      2. {
      3. function unhtml($text)
      4. {
      5. $content=(nl2br(htmlspecialchars($text))));//htmlspecialchars() 関数は、いくつかの事前定義されたものを結合します文字は HTML エンティティに変換され、nl2br() 関数は文字列内の各改行 (/n) の前に HTML 改行文字 (
        ) を挿入します。

      6. $content=str_replace("[strong]","",$content);

      7. $content=str_replace("[/strong]"," ;",$content);
      8. $content=str_replace("[em]","",$content);
      9. $content=str_replace("[/em]","" ,$content);
      10. $content=str_replace("[u]","",$content);
      11. $content=str_replace("[/u]","",$ content);
      12. $content=str_replace("[font color=#ff0000]","",$content);
      13. $content=str_replace("[font color=#00ff00] ","",$content);
      14. $content=str_replace("[font color=#0000ff]","",$content);
      15. $content=str_replace("[font face=混体_gb2312]","",$content);
      16. $content=str_replace("[font face=混体_gb2312]","< ; font face=新宋体>",$content);
      17. $content=str_replace("[font face=公式スクリプト]","",$content);
      18. $content=str_replace (" [/font]","",$content);
      19. //$content=str_replace(chr(32)," ",$content);
      20. $content=str_replace("[フォント サイズ=1 ]","",$content);
      21. $content=str_replace("[font size=2]","",$content);
      22. $ content= str_replace("[font size=3]","",$content);
      23. $content=str_replace("[font size=4]",") ", $content);
      24. $content=str_replace("[font size=5]","",$content);
      25. $content=str_replace("[font size=6]", "",$content);

      26. $content=str_replace("[フィールドセット][凡例]","<フィールドセット><凡例>",$ content) ;

      27. $content=str_replace("[/legend]","",$content);
      28. $content=str_replace("[/fieldset]","",$ content) ;
      29. return $content;
      30. }
      31. }

      コードをコピー
      上記の 4 つのクラスをすべて 1 つのクラス ファイル system.class.inc.php.

      に配置します。

      さらにいくつかのファイル: 1.system.inc.php:

      1. session_start();

      2. include_once("smarty_inc.php");
      3. include_once("system.class.inc.php");
      4. //データベース接続クラスインスタンス化
      5. $connobj = new conndb("mysql","localhost","root","vertrigo","db_fenye",false);
      6. $conn = $connobj->getconnid();
      7. //データベース操作クラスインスタンス化
      8. $admindb = new admindb();
      9. //ページングクラスのインスタンス化
      10. $seppage=new seppage();
      11. //共通関数クラスのインスタンス化を使用
      12. $usefun=new usefun();
      13. //smartyテンプレートを呼び出す
      14. $ Smarty=new Smartyproject();
      15. function unhtml($params)
      16. {
      17. extract($params);
      18. $text=$content;
      19. global $usefun;
      20. return $usefun->unhtml($text );
      21. }

      22. $smarty->register_function("unhtml","unhtml");

      23. ?>

      コードをコピーします

      2、実行文書、index.php:

      1. include_once("system.inc.php");
      2. $arraybbstell = $admindb->execsql("select * from tb_bookinfo",$conn);
      3. if(!$arraybbstell )
      4. {
      5. $smarty->assign("isbbstell","t");
      6. }
      7. else
      8. {
      9. $smarty->assign("isbbstell","t);
      10. $smarty->assign(" arraybbstell",$arraybbstell);
      11. }
      12. $arraybbs = $seppage->showdate("select * from tb_bookinfo",$conn,1,$_get["page"]);
      13. if(!$arraybbs)
      14. {
      15. $smarty->assign("isbbs",f);
      16. }
      17. else
      18. {
      19. $smarty->assign("isbbs",t);
      20. $smarty->assign("showpage",$ seppage->showpage("帖子","条","","a1"));
      21. $smarty->assign("arraybbs",$arraybbs);
      22. }
      23. $smarty->display(" index.html");
      24. ?>
      复制代

      3、解析文件,index.html:

      1. 页模
      2. < ;/tr>
      3. {if $isbbs=="t"}
      4. {php}
      5. $i=1;
      6. {/php}
      7. {section name=bbsid loop=$arraybbs}
      8. {php}
      9. $i++;
      10. {/php}
      11. {/section}
      12. 图书名称
        图书内容
        出版日期
        图书作者
        {unhtml content=$arraybbs[bbsid].bookname}
        {$arraybbs[bbsid].bookintro}
        {$arraybbs[bbsid].booktime}
        {$arraybbs[bbsid].bookauthor}
      13. < ;/table>
      14. < td bgcolor="#ffffff"><表幅="100%" 高さ="23" border="0" align="center" cellpadding="0" cellpacing="1" bgcolor="#ffffff"> ;
      15. <表の幅="100%" 高さ="22" border="0" align="center" cellpadding="0" cellpacing=" 0">
      16.  {$showpage}
      17. {/if}
      18. {if $isbbstell=="f" && $isbbs=="f" }
      19. {ldelim}暂時間なし内容{rdelim}
      20. {/if}
  •  
  • 复制代

    总结: adodb ファイルの導入に関連するいくつかのパスの問題を考慮する必要があります。 実行文書index.html 内の css 経路、図片背景経路都は、index.php に対応するこの実行文書のもの (css/css.cs とindex.php は同じ階層にあります)、導入方法は次のとおりです:

    (理解) $_server['php_self']:現在実行中のファイル。 Smarty の register_function() 参考文献。

    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    前の記事:PHP 静的変数をキャッシュとして使用するチュートリアルの例次の記事:PHP 静的変数をキャッシュとして使用するチュートリアルの例

    関連記事

    続きを見る