摘要:用php製作動態web頁面時,在提交伺服器之前,讓php根據使用者在目前頁面上錄入的某欄位的值立即從資料庫中取出相關的其它欄位的值並顯示到目前頁面上,是php程序開發中的難點。本文以一個具體實例詳細介紹如何將兩個html內嵌式語言php和javascript巧妙結合起來,解決這個難點的具體方法。
關鍵字:php、動態、html。
現在的網站已經從以前提供靜態資訊的形式發展到互動式的提供動態資訊業務的方式。 web的資訊服務形式可以概括為兩點:向客戶提供資訊;記錄客戶提交的資訊。要提供這兩種服務,需解決的問題是:如何快速地讓用戶在自己網站大量的信息中快速提取他想要的信息,如何有效地記錄用戶提交的信息,以便於將來用戶查找。這些問題都可以透過在網站中加入資料庫支援來解決。
因php對多種資料庫都能提供良好的支持,且php的腳本直接嵌入在html文件中,使用非常方便。因此php是現在internet上最受歡迎的一種server端嵌入語言之一。另外,與其它的server端腳本語言如asp相比,php免費開放源碼並且提供跨平台的支持,這使它能夠輕易適應當今網絡中各種異質的網絡環境;可讓網頁製作人員能夠非常快捷、方便地製作出功能強大的動態web頁面。但是,由於php是伺服器端嵌入,更直觀的理解是php語句是在伺服器上執行,所以它只有在提交時才將目前頁面上的內容接收和處理。而當你需要的內容是根據客戶目前頁面上輸入的某個欄位的值,再動態到庫中提取時,php就無能為力了。例如:要提供客戶一個「訂貨合約」的輸入頁面,其中包含一些「供貨商資訊」的錄入,而各供貨商的詳細資料事先已在一個「商家」字典表中錄入,現在要求當當客戶在目前頁面上選取某「供貨商」時,立時從「商家」字典表中將該供貨商的某些資訊如「開戶行、帳號、地址、電話」等提取出來顯示到目前頁面上供客戶直接使用或修改使用。這樣的要求若用視覺化程式語言如pb、vb等實作是一件輕而易舉的事,但pb、vb不適合寫動態web頁面;php適合寫動態web頁面,但由於是伺服器端嵌入,無法及時取得提交前頁的變數值,所以要實現上述要求就有一定的難度。在程式編寫過程中,我將php與javascript巧妙結合起來,解決了這個困難。
我們知道,同樣是嵌入語句,但javascript 又不同於php語言。因為php是伺服器端嵌入,而javascript是客戶端嵌入,既javascript語句是在客戶的瀏覽器上執行,這就決定了javascript可及時獲得當前頁面上的變數值,但又無法對伺服器端的資料庫直接操作。所以,將二者結合起來製作出功能強大的動態web頁面,可謂是珠聯璧合。為了敘述方便,以下只以從字典表中取出選取供貨商的地址為例,說明具體做法。當需要取出多個欄位時,方法類似,但利用javascript函數從字串中逐一取出時,要細心一點。
1.寫一個php函數
此函數的功能是將所有符合條件的「供貨商資訊」從「商家」字典表中取出,並存放到一個字串變數$khsz中。
function khqk_tq($questr){
global $dbconn;
$dbq_resl=sybase_query($questr> $dbq_resl=sybase_query($questr;
$dbq_rows=sybase_num_rows($dbq_resl); //取得回傳行的數目。
$j=0;
for ($i=0;$i $k[]=sybase_result($dbq_resl,$i,"kh_id"); //取出使用者所選的供貨商編號。
$add=sybase_result($dbq_resl,$i,"address"); //取出此供貨商地址。
if ($add==""):
$k[]="無";
dbq_resl,$i,"address") ;
endif;
$khsz=$khsz.$k[$j]."|".$k[$j+1]."|"; //將各欄位值以」|」為分隔符,連接到變數$khsz 中,形成一個長字串。
$j=$j+2;
}
return $khsz;
}
2.寫一個javascript函數
函數的功能是從字串中根據kh_id值找到該供貨商的位址,嵌入到html檔案中。
3.在html中將二者結合起來,互為所用
$khinfo="select kh_id,address from kh where co_id=$s_coid and type='g' order by kh_id";
//將取供貨商資訊的sql語句放到變數$khinfo。
$k=khqk_tq($khinfo); //呼叫php函數,並將傳回的字串值放到變數$k中。