Delphi For php 使用嵌入html網頁範本问题 |
答題得分者是:timv0215
|
cogi
一般會員 ![]() ![]() 發表:3 回覆:10 積分:2 註冊:2009-03-08 發送簡訊給我 |
||||
timv0215
一般會員 ![]() ![]() 發表:2 回覆:13 積分:8 註冊:2008-10-21 發送簡訊給我 |
我的作法是
在FORM->事件(OnTemplate)建一個Function [code php] requere_once("footer.inc.php"); function { global $footer; // 對應你footer.inc.php裡的$footer template = $params['template']; $template->_smarty->assign("myFooter", $footer); } [/code] footer.inc.php裡 把要加在最底的HTML碼都宣告成$footer字串 最後, 在你的TEMPLATE FILE裡的最底 加上 {%$myFooter%},對應我在function裡assign 的 myFooter 範例:http://www.megaupload.com/?d=ZM9VZQYL 第一個範例=>是教,如果套TEMPLATE然後,可以套入自訂的HEADER 及FOOTER 有些時候我們的每一個頁面的HEADER或FOOTER都是一樣的,但頁面有可能有很多,故會把HEADER或FOOTER獨立出來寫再套回去 這樣要改時,只要改獨立出來的檔案就好了!不會每個頁面都改 我在第一個範例只放了 YOU GOT IT 只是不要讓頁面看起來什麼都沒有! 重點不在頁面上的字樣效果,重點在用D4P套HEADER及FOOTER的作法 --------------------------- 解決SCROLL出不來的問題 我是在TERMPLATE 裡加上DIV在外層,再設overflow:auto 再來用JAVASCRIPT去取BROWSER的高,設回DIV D4P他好像把高度都設死了,沒套TEMPLATE時,他只會出現你在設FORM的大小時那點大! 範例:http://www.megaupload.com/?d=WLJI3P9G 第二個範例=>是教,如何用DIV去作頁面右邊的SCROLL,因為D4P在套入某些VIEW(TREEVIEW或LISTVIEW等) 萬一內容超過BROWSER的高時,右邊的SCROLL不會出現的問題 這個的重點,在TEMPLATE裡的JAVASCRIPT上,不在D4P上 補充:我測了FIREFOX,IE跟CHROME,IE上不能用。如果有人測出IE的方法,麻煩告訴我一下 |
|||
cogi
一般會員 ![]() ![]() 發表:3 回覆:10 積分:2 註冊:2009-03-08 發送簡訊給我 |
||||
timv0215
一般會員 ![]() ![]() 發表:2 回覆:13 積分:8 註冊:2008-10-21 發送簡訊給我 |
|
|||
cogi
一般會員 ![]() ![]() 發表:3 回覆:10 積分:2 註冊:2009-03-08 發送簡訊給我 |
那個連接我這邊下載不了,能發到我郵箱嗎(tang-cogi@tom.com)
|
|||
cogi
一般會員 ![]() ![]() 發表:3 回覆:10 積分:2 註冊:2009-03-08 發送簡訊給我 |
||||
timv0215
一般會員 ![]() ![]() 發表:2 回覆:13 積分:8 註冊:2008-10-21 發送簡訊給我 |
||||
cogi
一般會員 ![]() ![]() 發表:3 回覆:10 積分:2 註冊:2009-03-08 發送簡訊給我 |
||||
easy1201
一般會員 ![]() ![]() 發表:1 回覆:10 積分:2 註冊:2009-02-28 發送簡訊給我 |
||||
timv0215
一般會員 ![]() ![]() 發表:2 回覆:13 積分:8 註冊:2008-10-21 發送簡訊給我 |
2個問題,我都各自寫成一個D4P的範例
自己看看,還有問題的話再,問吧! http://www.megaupload.com/?d=ZM9VZQYL http://www.megaupload.com/?d=WLJI3P9G
編輯記錄
timv0215 重新編輯於 2009-03-16 08:16:33, 註解 無‧
|
|||
easy1201
一般會員 ![]() ![]() 發表:1 回覆:10 積分:2 註冊:2009-02-28 發送簡訊給我 |
||||
timv0215
一般會員 ![]() ![]() 發表:2 回覆:13 積分:8 註冊:2008-10-21 發送簡訊給我 |
第一個範例=>是教,如果套TEMPLATE然後,可以套入自訂的HEADER 及FOOTER
有些時候我們的每一個頁面的HEADER或FOOTER都是一樣的,但頁面有可能有很多,故會把HEADER或FOOTER獨立出來寫再套回去 這樣要改時,只要改獨立出來的檔案就好了!不會每個頁面都改 我在第一個範例只放了 YOU GOT IT 只是不要讓頁面看起來什麼都沒有! 重點不在頁面上的字樣效果,重點在用D4P套HEADER及FOOTER的作法 --------------------------- 第二個範例=>是教,如何用DIV去作頁面右邊的SCROLL,因為D4P在套入某些VIEW(TREEVIEW或LISTVIEW等) 萬一內容超過BROWSER的高時,右邊的SCROLL不會出現的問題 這個的重點,在TEMPLATE裡的JAVASCRIPT上,不在D4P上 補充:我方法,我測了FIREFOX,IE跟CHROME,IE上不能用。如果有人測出IE的方法,麻煩告訴我一下 |
|||
timv0215
一般會員 ![]() ![]() 發表:2 回覆:13 積分:8 註冊:2008-10-21 發送簡訊給我 |
===================引 用 easy1201 文 章=================== 奇怪 我兩個檔案都已下載 但是都沒看到效果 第一個檔案 只跑出 YOU GOT IT !? 而且哪段文字是打在 FORM 不是崁入的 崁入的是{%$myFooter%}那個 請看一下我最上面的說明 第二個檔案 跑出來是空白頁面 我的系統:VISTA 64BIT DELPHI FOR PHP 2.0 這因該跟作業系統沒關西吧 理論上應該是沒關係 我沒有VISTA。XP上我沒有問題 我測了3個BROWSER只有IE不能用 備注:我上傳的是D4P的專案檔,不是已包含VCL元件的完成品喔!
編輯記錄
timv0215 重新編輯於 2009-03-16 22:45:33, 註解 無‧
|
|||
cogi
一般會員 ![]() ![]() 發表:3 回覆:10 積分:2 註冊:2009-03-08 發送簡訊給我 |
兩個範例都可以用的,謝謝! 再請教第三個問題: 我的unit1裡有一個DBRepeater1(DBRepeater1的DataSource屬性有連接資料庫控制項), Table1的Limitcount屬性設為5, 還有一個Label6也在DBRepeater1控制項上,在Label6 的BeforeShow事件代碼如下: [code php] //for ($i=1;i<=5;$i ) //加上這句代碼出錯,所以注釋掉 $sender->Link = $this->tbsoftware1->download; //這句只能讓那個連接顯示在第5個記錄上 [/code] 現在問題是流覽網頁時會從資料庫裡面的記錄顯示5條在DBRepeater1上,但是那代碼只能讓那個連接顯示在第5個記錄上,我想讓前面4個記錄也顯示超級連接,
這種效果應該怎樣實現。(我表述的可能不是很好,但是這種效果在網站上很常見的) |
|||
timv0215
一般會員 ![]() ![]() 發表:2 回覆:13 積分:8 註冊:2008-10-21 發送簡訊給我 |
||||
cogi
一般會員 ![]() ![]() 發表:3 回覆:10 積分:2 註冊:2009-03-08 發送簡訊給我 |
||||
cogi
一般會員 ![]() ![]() 發表:3 回覆:10 積分:2 註冊:2009-03-08 發送簡訊給我 |
||||
timv0215
一般會員 ![]() ![]() 發表:2 回覆:13 積分:8 註冊:2008-10-21 發送簡訊給我 |
我是用PEAR的套件MDB2,來寫DB的部份!
不知道你是否熟悉這套件!~ 詳情及安裝請上他的官網,自己看看 http://pear.php.net/package/MDB2 寫法就是用傳統PHP作法,你要有CLIENT - SERVER的概念 D4P的作法,有點是不要分得那麼清楚 重點不是在PEAR的套件,因為那只是一個連結DB的方法 你用PHP 本身的套件來連也可以,像MYSQL_CONNET之類的 |
|||
cogi
一般會員 ![]() ![]() 發表:3 回覆:10 積分:2 註冊:2009-03-08 發送簡訊給我 |
DB文件源碼如下:
[code php] <?php /*============================================================================================*\ IP签名图片程序数据表: CREATE TABLE `ip` ( `id` int(10) NOT NULL auto_increment, `ip` varchar(15) NOT NULL default '', `count` int(10) NOT NULL default '0', `firsttime` datetime NOT NULL default '0000-00-00 00:00:00', `lasttime` datetime NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (`id`), KEY `ip` (`ip`) ) TYPE=MyISAM AUTO_INCREMENT=1 ; \*============================================================================================*/ $ip = $_SERVER["REMOTE_ADDR"]; // $_SERVER["REMOTE_ADDR"]表示当前访问者的IP $nowtime = date("Y-m-d H:i:s"); // 当前的时间 $link = mysql_connect("localhost","root","810458"); // 连接本地数据库,用户为root,密码为123456 $flag = mysql_select_db('phpzt'); // 选择我们使用的phpzt数据库 $result = mysql_query("SELECT * FROM ip WHERE ip='$ip'"); // 查询当前IP在数据库的信息 $row = mysql_fetch_array($result); // 读取上一步的查询结果 if($row) // 如果查询到当前IP的信息,则执行以下代码 { $id = $row['id']; // 读取当前IP的序号 $count = $row['count'] 1; // 读取当前IP的访问次数并加1表示这次的访问次数 $firsttime = $row['firsttime']; // 读取第一次的访问时间 $lasttime = $row['lasttime']; // 读取上一次的访问时间 mysql_query("UPDATE ip SET count=count 1,lasttime=NOW() WHERE ip='$ip'"); // 更新访问次数 } else // 如果没有查询到当前IP的信息,则执行以下代码 { mysql_query("INSERT INTO ip VALUES (NULL,'$ip','1',NOW(),NOW())"); // 将当前IP记录到数据库 $id = mysql_insert_id(); // 读取当前IP的序号 $count = 1; // 因为第一次访问,所以访问次数为1 $firsttime = date("Y-m-d H:i:s"); // 设置当前时间 $lasttime = date("Y-m-d H:i:s"); // 设置上一次访问时间 } mysql_close($link); // 关闭数据库连接 ?> [/code] |
|||
timv0215
一般會員 ![]() ![]() 發表:2 回覆:13 積分:8 註冊:2008-10-21 發送簡訊給我 |
如果依你這樣寫的話~
你REQUERE就放在外面就好LA~不用在FUNCTION有宣告 放在FUNCTION裡,你就在另外在UNIT1的事件裡的ONCREATEFORM或 BEFORCREATEFORM 那裡把你的FUNCTION 在網頁構成前先 叫出來,不然你的IP.php不會被叫出來 如果你是在function外REQUERE 你的IP.PHP FUNCTION裡要用IP.PHP的變數,用GLOBAL 把變數叫進來用就好了 [code php] require_once("ip.php"); function indexShow($sender, $params) { global $link; $result = mysql_query("SELECT * FROM ip WHERE ip='$ip'"); // 查詢當前IP在數據庫的信息 $row = mysql_fetch_array($result); // 讀取上一步的查詢結果 if($row) // 如果查詢到當前IP的信息,則執行以下代碼 { $id = $row['id']; // 讀取當前IP的序號 $count = $row['count'] 1; // 讀取當前IP的訪問次數並加1表示這次的訪問次數 $firsttime = $row['firsttime']; // 讀取第一次的訪問時間 $lasttime = $row['lasttime']; // 讀取上一次的訪問時間 mysql_query("UPDATE ip SET count=count 1,lasttime=NOW() WHERE ip='$ip'"); // 更新訪問次數 } else // 如果沒有查詢到當前IP的信息,則執行以下代碼 { mysql_query("INSERT INTO ip VALUES (NULL,'$ip','1',NOW(),NOW())"); // 將當前IP記錄到數據庫 $id = mysql_insert_id(); // 讀取當前IP的序號 $count = 1; // 因為第一次訪問,所以訪問次數為1 $firsttime = date("Y-m-d H:i:s"); // 設置當前時間 $lasttime = date("Y-m-d H:i:s"); // 設置上一次訪問時間 } mysql_close($link); // 關閉數據庫連接 [/code] mysql_connet 改用 pconnet 要不,如果要正規一點,把你的IP.PHP裡的MYSQL連接寫作CLASS |
|||
cogi
一般會員 ![]() ![]() 發表:3 回覆:10 積分:2 註冊:2009-03-08 發送簡訊給我 |
||||
timv0215
一般會員 ![]() ![]() 發表:2 回覆:13 積分:8 註冊:2008-10-21 發送簡訊給我 |
不知道你有沒有學過JAVA 或 其他程式語言!
寫成CLASS的好處,我不說太多,你上GOOGLE 找一下應該在很多地方,很多大大們都說過了 我就只說我為什麼會去把某些功能寫成CLASS CLASS基本上是去定義一個架構出來, 建立一個程式功能用的邏輯 把一些功能的流程預先寫在裡面 當你宣告他時,他就會把預先設定好的流程,自動的跑一遍 我覺得他跟FUNCTION很像,但他更可以說是FUNCTION的集合 另外他也提供一些變數上的隱密性,可以把過程中有些你不想流出的變數封在裡面 我會叫你寫成CLASS,只是出於個人習慣,當然不用麻煩到去寫CLASS,連結DB的功能還是可以出來! ===================引 用 cogi 文 章=================== CLASSDelphiunit檔) |
|||
easy1201
一般會員 ![]() ![]() 發表:1 回覆:10 積分:2 註冊:2009-02-28 發送簡訊給我 |
||||
easy1201
一般會員 ![]() ![]() 發表:1 回覆:10 積分:2 註冊:2009-02-28 發送簡訊給我 |
感謝
我終於頓悟了
剩下這個問題 就是如何在 我分別崁入三個PHP header.php top.php footer.php 崁入後 在 HEADER 建立連結 崁入到 top.php哪個位置 我看到ASP崁入後 1.ASP 在網址列顯示 http://xxx.xxx/? XX=1 好像把整個都串在一起 單獨改個別檔案就好 D4P 能這樣嗎 請大大賜教
編輯記錄
easy1201 重新編輯於 2009-03-26 17:47:44, 註解 無‧
|
|||
timv0215
一般會員 ![]() ![]() 發表:2 回覆:13 積分:8 註冊:2008-10-21 發送簡訊給我 |
||||
easy1201
一般會員 ![]() ![]() 發表:1 回覆:10 積分:2 註冊:2009-02-28 發送簡訊給我 |
||||
cogi
一般會員 ![]() ![]() 發表:3 回覆:10 積分:2 註冊:2009-03-08 發送簡訊給我 |
||||
easy1201
一般會員 ![]() ![]() 發表:1 回覆:10 積分:2 註冊:2009-02-28 發送簡訊給我 |
||||
timv0215
一般會員 ![]() ![]() 發表:2 回覆:13 積分:8 註冊:2008-10-21 發送簡訊給我 |
你的問題在我看來,只是JAVAS CRIPT的問題,跟一些HTML的概念
如果你要讓網址的連結變成 http://www.xxx.xxx/xx.php?xx=xx 那只要連結上你自己寫上去就好LA~! 你要寫http://www.xxx.xxx/xx.php?xx=xx 或 http://www.xxx.xxx/xx.php?xx=yy 來作連結都可以 對PHP,ASP,JSP來說,”?XX=XX”只是用來傳遞GET的值,跟POST一樣 我在後端只要寫個接收就好了! 我的理解你要的是, http://www.xxx.xxx/xx.php?xx=xx1 ==>出現1畫面 http://www.xxx.xxx/xx.php?xx=xx2 ==>出現2畫面 http://www.xxx.xxx/xx.php?xx=xx3 ==>出現3畫面 http://www.xxx.xxx/xx.php?xx=xx4 ==>出現4畫面 那你就只要在XX.php裡加寫一個 [code php] switch($_GET['xx']){ case "xx1": requere_once('top1.php'); break; case "xx2": requere_once('top2.php'); break; case "xx3": requere_once('top3.php'); break; case "xx4": requere_once('top4.php'); break; } [/code] 根據不同的變數,去套不同的TOP ===================引 用 easy1201 文 章=================== 就只能 套用版頭 改變主體 套用版尾 每頁都只能這樣做嗎~? 哪如何改變聯結 就像http://xxx.xxx/?XX=XX 部要直接秀出XX.php |
|||
easy1201
一般會員 ![]() ![]() 發表:1 回覆:10 積分:2 註冊:2009-02-28 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |