php錄入頁(yè)面中動(dòng)態(tài)從數(shù)據(jù)庫(kù)中提取數(shù)據(jù)的完成
發(fā)表時(shí)間:2024-06-17 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]摘要:用php制作動(dòng)態(tài)web頁(yè)面時(shí),在提交服務(wù)器之前,讓php根據(jù)用戶在當(dāng)前頁(yè)面上錄入的某字段的值立即從數(shù)據(jù)庫(kù)中取出相關(guān)的其它字段的值并顯示到當(dāng)前頁(yè)面上,是php程序開(kāi)發(fā)中的難點(diǎn)。本文以一個(gè)具體實(shí)例詳細(xì)介紹了怎樣將兩個(gè)html內(nèi)嵌式語(yǔ)言php和javascript巧妙結(jié)合起來(lái),解決這個(gè)難點(diǎn)的具體方...
摘要:用php制作動(dòng)態(tài)web頁(yè)面時(shí),在提交服務(wù)器之前,讓php根據(jù)用戶在當(dāng)前頁(yè)面上錄入的某字段的值立即從數(shù)據(jù)庫(kù)中取出相關(guān)的其它字段的值并顯示到當(dāng)前頁(yè)面上,是php程序開(kāi)發(fā)中的難點(diǎn)。本文以一個(gè)具體實(shí)例詳細(xì)介紹了怎樣將兩個(gè)html內(nèi)嵌式語(yǔ)言php和javascript巧妙結(jié)合起來(lái),解決這個(gè)難點(diǎn)的具體方法。
關(guān)鍵詞:php、動(dòng)態(tài)、html。
現(xiàn)在的網(wǎng)站已經(jīng)從以前提供靜態(tài)信息的形式發(fā)展到交互式的提供動(dòng)態(tài)信息業(yè)務(wù)的方式。web的信息服務(wù)形式可以概括為兩點(diǎn):向客戶提供信息;記錄客戶提交的信息。要提供這兩種服務(wù),需解決的問(wèn)題是:如何快速地讓用戶在自己網(wǎng)站大量的信息中快速提取他想要的信息,如何有效地記錄用戶提交的信息,以便于將來(lái)用戶查找。這些問(wèn)題都可以通過(guò)在網(wǎng)站中加入數(shù)據(jù)庫(kù)支持來(lái)解決。
因php對(duì)多種數(shù)據(jù)庫(kù)都能提供良好的支持,且php的腳本直接嵌入在html文檔中,使用非常方便。因此php是現(xiàn)在internet上最流行的一種server端嵌入語(yǔ)言之一。另外,與其它的server端腳本語(yǔ)言如asp相比,php免費(fèi)開(kāi)放源碼并且提供跨平臺(tái)的支持,這使它能夠輕易適應(yīng)當(dāng)今網(wǎng)絡(luò)中各種異質(zhì)的網(wǎng)絡(luò)環(huán)境;可讓網(wǎng)頁(yè)制作人員能夠非?旖荨⒎奖愕刂谱鞒龉δ軓(qiáng)大的動(dòng)態(tài)web頁(yè)面。但是,由于php是服務(wù)器端嵌入,更直觀的理解是php語(yǔ)句是在服務(wù)器上執(zhí)行,所以它只有提交時(shí)才將當(dāng)前頁(yè)面上的內(nèi)容接收和處理。而當(dāng)你需要的內(nèi)容是根據(jù)客戶當(dāng)前頁(yè)面上錄入的某字段的值,再動(dòng)態(tài)到庫(kù)中提取時(shí),php就無(wú)能為力了。例如:要向客戶提供一個(gè)“訂貨合同”的錄入頁(yè)面,其中包含一些“供貨商信息”的錄入,而各供貨商的詳細(xì)信息事先已在一個(gè)“商家”字典表中錄入,現(xiàn)在要求當(dāng)客戶在當(dāng)前頁(yè)面上選中某“供貨商”時(shí),立時(shí)從“商家”字典表中將該供貨商的某些信息如“開(kāi)戶行、帳號(hào)、地址、電話”等提取出來(lái)顯示到當(dāng)前頁(yè)面上供客戶直接使用或修改使用。這樣的要求若用可視化編程語(yǔ)言如pb、vb等實(shí)現(xiàn)是一件輕而易舉的事,但pb、vb不適合編寫(xiě)動(dòng)態(tài)web頁(yè)面;php適合編寫(xiě)動(dòng)態(tài)web頁(yè)面,但由于是服務(wù)器端嵌入,不能及時(shí)獲得提交前頁(yè)面上的變量值,所以實(shí)現(xiàn)上述要求就有一定的難度。在程序編寫(xiě)過(guò)程中,我將php與javascript巧妙結(jié)合起來(lái),解決了這個(gè)難點(diǎn)。
我們知道,同樣是嵌入語(yǔ)句,但是javascript 又不同于php語(yǔ)言。因?yàn)閜hp是服務(wù)器端嵌入,而javascript是客戶端嵌入,既javascript語(yǔ)句是在客戶的瀏覽器上執(zhí)行,這就決定了javascript可及時(shí)獲得當(dāng)前頁(yè)面上的變量值,但又無(wú)法對(duì)服務(wù)器端的數(shù)據(jù)庫(kù)直接操作。所以,將二者結(jié)合起來(lái)制作出功能強(qiáng)大的動(dòng)態(tài)web頁(yè)面,可謂是珠聯(lián)璧合。為了敘述方便,下面只以從字典表中取出選中供貨商的地址為例,說(shuō)明具體做法。當(dāng)需要取出多個(gè)字段時(shí),方法類(lèi)似,但利用javascript函數(shù)從字符串中逐個(gè)取出時(shí),要細(xì)心一些。
1.編寫(xiě)一個(gè)php函數(shù)
此函數(shù)的功能是將所有符合條件的“供貨商信息”從“商家”字典表中取出,并存放到一個(gè)字符串變量$khsz中。
function khqk_tq($questr){
global $dbconn;
$dbq_resl=sybase_query($questr,$dbconn); //送出一個(gè)query字符串供sybase執(zhí)行。
$dbq_rows=sybase_num_rows($dbq_resl); //獲得返回行的數(shù)目。
$j=0;
for ($i=0;$i<$dbq_rows;$i++){ //建循環(huán),將每行中所需字段取出,并放到數(shù)組$k[]中。
$k[]=sybase_result($dbq_resl,$i,"kh_id"); //取出用戶選擇的供貨商編號(hào)。
$add=sybase_result($dbq_resl,$i,"address"); //取出該供貨商地址。
if ($add==""):
$k[]="無(wú)";
else :
$k[]=sybase_result($dbq_resl,$i,"address");
endif;
$khsz=$khsz.$k[$j]." ".$k[$j+1]." "; //將各字段值以” ”為分隔符,連接到變量$khsz 中,形成一個(gè)長(zhǎng)字符串。
$j=$j+2;
}
return $khsz;
}
2.編寫(xiě)一個(gè)javascript函數(shù)
該函數(shù)的功能是從字符串中根據(jù)kh_id值找到該供貨商的地址,嵌入到html文件中。
<script language="javascript">
var khstr="<?=$k?>" //先將php變量轉(zhuǎn)變成javascript變量khstr。
function khxz_onclick(){
frm=document.frmplanfill;
ghstj=frm.kh_id.value; //獲得當(dāng)前頁(yè)面上剛剛選中的“供貨商”的kh_id值。
numkh=khstr.indexof(ghstj,0) ; //從khstr串中找到該kh_id值所在的位置。
addr=khstr.substring(khstr.indexof(" ",numkh)+1,khstr.indexof(" ",khstr.indexof(" ",numkh)+1)); //從 khstr串中取出與kh_id對(duì)應(yīng)的地址字段的值。
frm.address.value=addr; //將取出的值賦給當(dāng)前錄入頁(yè)面上的字段變量address。
}
</script>
3.在html中將二者結(jié)合起來(lái),互為所用
$khinfo="select kh_id,address from kh where co_id=$s_coid and type='g' order by kh_id";
//將取供貨商信息的sql語(yǔ)句放到變量$khinfo中。
$k=khqk_tq($khinfo); //調(diào)用php函數(shù),并將返回的字符串值放到變量$k中。
<meta name="generator" content="microsoft developer studio">
<meta http-equiv="content-type" content="text/html; charset=gb_2312-80">
<title>訂貨合同管理</title>
</head>
<body style="background-color: ivory">
<form name=frmplanfill method=post action="dhht_crt.php">
<table align=center border=1 cellpadding=0 cellspacing=0 width="90%" style="font-size: 10pt">
<tr>
<td>合同編號(hào)</td><td><input name=htbh size=15></td>
<td>合同概述</td><td colspan=5><input name=htgs size=53></td>
</tr>
<tr>
<td>供貨廠商</td>
<td><select name="kh_id" onchange="khxz_onclick()"> //當(dāng)每次改變所選供貨商時(shí),觸發(fā)上述javascript函數(shù)。
<?prt_sele("select convert(int,kh_id),name from kh where co_id=$s_coid and type='g'",0,1)?></select></td> //將符合條件的所有供貨商名稱(chēng)放到下拉列表框中供用戶選擇。其中prt_sele是自定義的 php函數(shù)。
<td>地 址</td>
<td colspan=3><input type=text name=address size=34 ></td> //觸發(fā)javascript函數(shù)的結(jié)果是使得adrress變量獲得值并顯示到頁(yè)面上。
以上代碼的系統(tǒng)環(huán)境是:linux操作系統(tǒng)、sybase數(shù)據(jù)庫(kù)、web server為apache、php4程序界面。以上將php和javascript相結(jié)合的程序開(kāi)發(fā)思想已成功地運(yùn)用到我們開(kāi)發(fā)的多個(gè)動(dòng)態(tài)web頁(yè)面中。