http://www.phpe.net/
里面搜索一下就可以找到。

解决方案 »

  1.   

    PHPLib 安裝及使用說明轉載自 pigo 的文章!!1.         簡介與安裝說明 2.         DB Class 的介紹 3.         Template Class 的介紹    1-1         PHPLIB 的簡介 PHPLIB 提供了很多物件可以處理一些網站常用的功能 , 例如早期 PHP3 並不支援 Session , 而使用 PHPLIB 則可以模擬 Session , 最重要的是 PHPLIB 本身提供的 Database Class 可以很輕易的撰寫與資料庫溝通的程式 , 使用 PHPLIB 來寫資料庫的網站可以說是很簡單的 , 而最近 PHPLIB 所提供的 Template 功能可以把網頁與程式分開獨立 , 以避免未來修改網頁時 , 必須經常依賴程式人員 , 通常使用 Template 物件時 , 若非程式功能上的修改 , 否則一般網頁人員皆可以很輕易的來對網站修改畫面而不必擔心程式運作問題。1-2         目錄結構 將 PHPLIB 壓縮檔解開後 , 可以發現四個目錄 :doc : 說明文件。pages :一些 Demo 程式。php : 所有的物件程式都放在這個目錄。stuff : 如果使用到 PHPLIB 的 Session 或使用者管理功能時 , 需要建立的資料庫結構都放在此。1-3         安裝方式 (1)    將 PHPLIB 檔案解開後 , 把 php 這個目錄放置到您認為方便存取編輯的地方 , 但最好不要放在可以直接在瀏覽器上可以存取的目錄。如果真的要把 php 這個目錄擺在瀏覽器可以直接讀取到的地方 , 那麼最好在 Apache 的 httpd.conf 將 .inc 設定成 php 的程式 , 以避免資料庫設定檔的帳號與密碼外洩。(2)    php 目錄下有兩個檔案需要設定 , 分別是 prepend.php3 與 local.inc , 後面再說明如何設定。(3)    為了方便性 , 不需要每支程式要使用 PHPLIB 功能時 , 可以在 php.in (Linux 放在 /etc/php.ini ,Windows 則是放在 $Windows/php.ini )的 auto_prepend_file 設定載入 php/prepend.php3 , 例如將 php 目錄擺在 /home/test/php/ 下 , 那麼就設定 auto_prepend_file=/home/test/php/prepend.php3 , 這樣設定則每支程式開始執行時會先載入 prepend.php3(4)    修改 prepend.php3 , 如果要使用 mysql 的 db 功能 , 請把 require($_PHPLIB["libdir"] . "db_mysql.inc"); 的 # 拿掉 , 如果要使用 Template 功能 , 請把 require($_PHPLIB["libdir"] . "template.inc"); 的 # 拿掉 , 補充說明 , db_mysql.inc 只是 mysql 的資料庫程式 , 如果未來程式想改成 ODBC , 只要把 db_odbc.inc 載入就行了 , 想改成其他的以此類推 , 因為每種資料庫程式的語法與名稱都一樣 , 要轉換資料庫其實還蠻方便的。(5)    修改 local.inc , 這裡只介紹 DB Class 的用法 , 如果要建立一個 DB 物件連接到某資料庫 , 例如 : 資料庫名稱叫 mytest , 帳號 : test , 密碼 : test , 資料庫主機 : localhost , 則設定方式如下 : class DB_mytest extends DB_Sql {
      var $Host     = "localhost";
      var $Database = " mytest ";
      var $User     = " test ";
      var $Password = " test ";
    };     記得要有個 mytest 這個資料庫如果您想建立多個 DB 物件提供使用 , 那麼請注意 , 因為 PHPLIB 撰寫本程式連接資料庫是以 pconnect() 的方式連接 , 所以最好每個資料庫物件有不同的帳號與密碼 , 否則 pconnect() 傳回來的連接碼(link) 都會是一樣的。2-1  DB Class 的常用的方法
        以下都是最常用的指令 , 沒列出來代表真的很少用 , 可能一輩子都用不到(1)   query($query_string) : 執行 SQL 指令(2)   next_record() : 將指標移動到下一筆資料 , 如果傳回值為 false , 代表指標已經到結尾了 (3)   num_rows(), nf() : 兩個指令相同 , 傳回這次的 SQL 抓回有幾筆資料(4)   affected_rows() : 傳回因為 INSERT , UPDATE 或 DELTE 影響有幾筆資料(5)   num_fields() : 傳回這次 SQL 指令抓回的欄位數(6)   f($field) : 傳回欄位名稱為 $field 的資料(7)   seek($pos) : 將資料指標移動 , 類似檔案處理的 seek()(8)   link_id() : 傳回與資料庫連接的代碼2-2  DB Class範例     要抓回資料有三個步驟 :(1)    宣告物件 , 例如 : $db = new DB_mytest;(2)    執行 SQL , 例如 : $db->query(“SELECT * FROM TABLENAME”);(3)    使用 $db->next_record() 來將指標移動到下一筆(4)    使用 $db->f(“xxx”) 來將欄位內的資料抓出範例 :先建個測試的 table# phpMyAdmin MySQL-Dump
    # http://phpwizard.net/phpMyAdmin/
    #
    # 主機: localhost 資料庫 : mytest
    # --------------------------------------------------------#
    # 資料表格的結構 'test'
    #DROP TABLE IF EXISTS test;
    CREATE TABLE test (
       id int(10) unsigned NOT NULL auto_increment,
       name varchar(50),
       email varchar(50),
       message text,
       PRIMARY KEY (id)
    );#
    # 導出下面的資料庫內容 'test'
    #INSERT INTO test VALUES( '1', 'aaa', '[email protected]', 'aaaaaaaaaaaaaaaaa');
    INSERT INTO test VALUES( '2', 'bbb', '[email protected]', 'bbbbbbbbbbbbbbbbb');
      

  2.   

    再寫個小程式試試 ( demo1.php )<?  $db = new DB_mytest;
      $db->query("SELECT * FROM test");
      while($db->next_record())
      {
        echo "欄位 email : " . $db->f("email");
        echo "<br>";  }  $db->seek(1);
      $db->next_record();
      echo $db->f("email");
    ?> 然後用 http://localhost/demo1.php 看看結果,將資料庫裡的 e-mail 抓出來!!     Q: 如何判斷此次 SQL 是否有抓回資料 ?    A: 使用 nf() 方法即可 , 例如 if(!$db->nf()) echo “No data”;    Q: 如何將指標移動到最前端 ?    A: 使用 seek() 方法即可 , 例如 $db->seek(0);3-1  Template Class 的簡單介紹     做過網站都知道,如果網頁內有非常多的程式 , 那不是一般網頁人員能夠處理的,我們經常為了改一個留言板或討論區的畫面而每次都需要動用到程式人員,或者程式人員有時候自己看程式都會覺得很亂,因此有沒有辦法像 VB 一樣先設計 Form 再來寫程式呢?    有的,這就是 Template 用意,Template 的目的是為了把程式與網頁分開來處理,以達到一支程式可以不用大幅修改就能輕易達到畫面的變換,其實這個概念在 Java 的領域裡就很多人有使用了,在 Perl 與 PHP 上面也有同名的 FastTemplate 有人使用,而 PHPLIB 所提供的 Template 也具有相同的效果。3-2  Template Class 常用的方法介紹 (1)   Template($root = ".", $unknowns = "remove") : 建立 Template 物件。(2)   set_root($root) : 設定 Template 網頁的根目錄。(3)   set_unknowns($unknowns = "keep") : 設定沒有使用到的變數名稱該怎麼處理 , 預設的 keep 是保留該變數名稱 , comment 則是以 html 來標記為註解 , remove 則是清除掉。(4)   set_file($handle, $filename = "") : 設定 $filename 的檔案是一個 Template , 並且給予一個 $handle 的變數名稱。(5)   set_block($parent, $handle, $name = "") : 設定某區塊當成一個變數可以處理 , 其中 $parent 是 set_file() 指定的 $handle, 而 $handle 則是 HTML 檔案理標記的區塊名稱 , $name 則是將此區塊指定後給予的名稱。(6)   set_var($varname, $value = "") : 設定 $varname 這個變數 , 以 $value 值來取代。(7)   parse($target, $handle, $append = false) : 將 $handle 的資料解析後存入 $target 變數 , 而 $append 則是指定是否加在後面。(8)   get_var($varname) : 取得 $varname 變數的資料。(9)   get($varname) : 取得 $varname 變數的資料。(10)   p($varname) : 將 $varname 的資料顯示。3-3  Template Class使用範例     範例一 : 將一個留言板的資料內容列出來
        假設有姓名 , Email , 留言 3 個欄位分別是 name , email , message
        步驟一 : 先製作留言板的樣板    先做一網頁 , 內容如下 :http://localhost/test.html<html><head>
      <meta http-equiv="Content-Language" content="zh-tw">
      <meta http-equiv="Content-Type" content="text/html; charset=big5">
      <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
      <meta name="ProgId" content="FrontPage.Editor.Document">
      <title>姓名</title>
    </head><body><table border="0" width="100%">
      <!-- BEGIN row -->
        <tr>
          <td width="100%" colspan="2"><hr></td>
        </tr>
        <tr>
          <td width="16%"><font color="#0000FF">姓名</font></td>
          <td width="84%"><font color="#0000FF">{NAME}</font></td>
        </tr>
        <tr>
          <td width="16%">郵件</td>
          <td width="84%">{EMAIL}</td>
        </tr>
        <tr>
          <td width="100%" colspan="2"><font color="#008000">留言訊息 : {MESSAGE}</font></td>
        </tr>
      <!-- END row -->
    </table></body></html>
      

  3.   


    另外再寫 http://localhost/demo2.php<?
      $db = new DB_mytest;                     // 建立 DB Class
      $template = new Template("./","keep");   // 建立 Template
      $template->set_file("main","test.html"); // 設定 test.html 為 main
      $db->query("SELECT * FROM test");        // 下 SQL  $template->set_block("main","row","rows"); 
      while($db->next_record())                //指標移動至下一筆
      {                                        // 設定 {XXX} 內的變數將其取代
        $template->set_var(    array(
              "NAME" => $db->f("name"),
              "EMAIL" => $db->f("email"),
              "MESSAGE" => $db->f("message")
             )                      );
        $template->parse("rows","row",true);   // 將 row 的資料增加到 rows
      }
    // if(!$db->nf()) $template->set_var("rows","沒有資料");$template->parse("out", "main"); // 將 main 解析後存入 out
    $template->p("out"); // 將 out 印出?>
         透過 Browser 看到的結果為  這就將版面跟資料給分離開來了!!另外再試試標準的九九乘法表!!http://localhost/test2.html<html><head>
      <meta http-equiv="Content-Language" content="zh-tw">
      <meta http-equiv="Content-Type" content="text/html; charset=big5">
      <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
      <meta name="ProgId" content="FrontPage.Editor.Document">
      <title>姓名</title>
    </head><body><table border="1">
      <!-- BEGIN row1 -->
      <tr>
        <!-- BEGIN row2 -->
        <td width="100%"><b>{N1}</b>*{N2}=<i>{R}</i></td>
        <!-- END row2 -->
      </tr>
      <!-- END row1 -->
    </table></body></html>
     透過 Browser 看到的畫面是 
    只有簡簡單單的畫面,好像跟九九乘法表沒啥關係!!另外再加上程式 http://localhost/demo3.php<?
      $db = new DB_mytest;                      // 建立 DB Class
      $template = new Template("./","keep");    // 建立 Template
      $template->set_file("main","test2.html"); // 設定 test.html 為 main  $template->set_block("main","row2","rows2");
      $template->set_block("main","row1","rows1");   for($i=1;$i<10;$i++)
      {    for($j=1;$j<10;$j++)
        {                                       // 設定 {XXX} 內的變數將其取代
          $template->set_var(                   array(
                             "N1" => $i,
                             "N2" => $j,
                             "R" => $i*$j
                            )                        );
          $template->parse("rows2","row2",true); // 將 row 的資料增加到 rows
        }  $template->parse("rows1","row1",true); // 將 row 的資料增加到 rows
      $template->set_var("rows2","");
      }$template->parse("out", "main"); // 將 main 解析後存入 out
    $template->p("out"); // 將 out 印出?>  透過 Browser 看到的畫面是  這就完成了!!比起過去的寫法容易的多吧!!Good luck!!
      

  4.   

    erldy.多谢你 ..
    怎么给你分啊...