网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > PHP > PHP技术进阶 > php录入页面中动态从数据库中提取数据的实现  

php录入页面中动态从数据库中提取数据的实现

2006-02-27  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

石家庄师范专科学校 计算中心  张书梅

网管u家www.bitscn.net

摘要:用PHP制作动态Web页面时,在提交服务器之前,让PHP根据用户在当前页面上录入的某字段的值立即从数据库中取出相关的其它字段的值并显示到当前页面上,是PHP程序开发中的难点。本文以一个具体实例详细介绍了怎样将两个HTML内嵌式语言PHP和JavaScript巧妙结合起来,解决这个难点的具体方法。

网管论坛bbs_bitsCN_com

关键词:PHP、动态、HTML。

网管联盟bitsCN_com

现在的网站已经从以前提供静态信息的形式发展到交互式的提供动态信息业务的方式。Web的信息服务形式可以概括为两点:向客户提供信息;记录客户提交的信息。要提供这两种服务,需解决的问题是:如何快速地让用户在自己网站大量的信息中快速提取他想要的信息,如何有效地记录用户提交的信息,以便于将来用户查找。这些问题都可以通过在网站中加入数据库支持来解决。

网管u家bitscn.net

因PHP对多种数据库都能提供良好的支持,且PHP的脚本直接嵌入在HTML文档中,使用非常方便。因此PHP是现在Internet上最流行的一种Server端嵌入语言之一。另外,与其它的Server端脚本语言如ASP相比,PHP免费开放源码并且提供跨平台的支持,这使它能够轻易适应当今网络中各种异质的网络环境;可让网页制作人员能够非常快捷、方便地制作出功能强大的动态Web页面。但是,由于PHP是服务器端嵌入,更直观的理解是PHP语句是在服务器上执行,所以它只有提交时才将当前页面上的内容接收和处理。而当你需要的内容是根据客户当前页面上录入的某字段的值,再动态到库中提取时,PHP就无能为力了。例如:要向客户提供一个“订货合同”的录入页面,其中包含一些“供货商信息”的录入,而各供货商的详细信息事先已在一个“商家”字典表中录入,现在要求当客户在当前页面上选中某“供货商”时,立时从“商家”字典表中将该供货商的某些信息如“开户行、帐号、地址、电话”等提取出来显示到当前页面上供客户直接使用或修改使用。这样的要求若用可视化编程语言如PB、VB等实现是一件轻而易举的事,但PB、VB不适合编写动态Web页面;PHP适合编写动态Web页面,但由于是服务器端嵌入,不能及时获得提交前页面上的变量值,所以实现上述要求就有一定的难度。在程序编写过程中,我将PHP与JavaScript巧妙结合起来,解决了这个难点。

网管u家www.bitscn.net

我们知道,同样是嵌入语句,但是JavaScript 又不同于PHP语言。因为PHP是服务器端嵌入,而JavaScript是客户端嵌入,既JavaScript语句是在客户的浏览器上执行,这就决定了JavaScript可及时获得当前页面上的变量值,但又无法对服务器端的数据库直接操作。所以,将二者结合起来制作出功能强大的动态Web页面,可谓是珠联璧合。为了叙述方便,下面只以从字典表中取出选中供货商的地址为例,说明具体做法。当需要取出多个字段时,方法类似,但利用JavaScript函数从字符串中逐个取出时,要细心一些。 网管朋友网www_bitscn_net

1.编写一个PHP函数

网管联盟bitsCN@com

此函数的功能是将所有符合条件的“供货商信息”从“商家”字典表中取出,并存放到一个字符串变量$khsz中。

网管论坛bbs_bitsCN_com

   function Khqk_Tq($questr){

网管朋友网www_bitscn_net

     global $dbconn; 网管u家www.bitscn.net

     $dbq_resl=sybase_query($questr,$dbconn);  //送出一个query字符串供Sybase执行。 网管u家bitscn.net

     $dbq_rows=sybase_num_rows($dbq_resl);    //获得返回行的数目。

网管联盟bitsCN@com

     $j=0;

中国网管论坛bbs.bitsCN.com

for ($i=0;$i<$dbq_rows;$i++){   //建循环,将每行中所需字段取出,并放到数组$k[]中。 网管bitscn_com

       $k[]=sybase_result($dbq_resl,$i,"kh_id");  //取出用户选择的供货商编号。 网管联盟bitsCN@com

       $add=sybase_result($dbq_resl,$i,"address");  //取出该供货商地址。

网管u家bitscn.net

       if ($add==""):

中国网管论坛bbs.bitsCN.com

          $k[]="无";

网管联盟bitsCN@com

       else :

网管u家www.bitscn.net

         $k[]=sybase_result($dbq_resl,$i,"address"); 网管u家www.bitscn.net

     endif; 网管有家bitscn.net

     $khsz=$khsz.$k[$j]."|".$k[$j+1]."|";  //将各字段值以”|”为分隔符,连接到变量$khsz 中,形成一个长字符串。 网管有家bitscn.net

       $j=$j+2;

网管u家u.bitsCN.com

   }

网管联盟bitsCN@com

  return $khsz; 网管bitscn_com

} 网管u家www.bitscn.net

2.编写一个JavaScript函数

网管下载dl.bitscn.com

该函数的功能是从字符串中根据kh_id值找到该供货商的地址,嵌入到HTML文件中。 网管联盟bitsCN@com

<script language="javascript">

网管网www_bitscn_com

  var  khstr="<?=$k?>"               //先将PHP变量转变成JavaScript变量khstr。 网管联盟bitsCN@com

 function khxz_onclick(){ 中国网管论坛bbs.bitsCN.com

   frm=document.frmplanfill;

中国网管论坛bbs.bitsCN.com

   ghstj=frm.kh_id.value;          //获得当前页面上刚刚选中的“供货商”的kh_id值。

网管朋友网www_bitscn_net

   numkh=khstr.indexOf(ghstj,0) ; //从khstr串中找到该kh_id值所在的位置。 网管u家www.bitscn.net

addr=khstr.substring(khstr.indexOf("|",numkh)+1,khstr.indexOf("|",khstr.indexOf("|",numkh)+1));           //从 khstr串中取出与kh_id对应的地址字段的值。 网管论坛bbs_bitsCN_com

   frm.address.value=addr;  //将取出的值赋给当前录入页面上的字段变量address。 网管联盟bitsCN@com

} 网管有家bitscn.net

</script>

网管网www_bitscn_com

3.在HTML中将二者结合起来,互为所用

网管下载dl.bitscn.com

 $khinfo="select kh_id,address from kh where co_id=$s_coid and type='G' order by kh_id";

网管下载dl.bitscn.com

//将取供货商信息的SQL语句放到变量$khinfo中。 网管u家u.bitscn@com

  $k=Khqk_Tq($khinfo);    //调用PHP函数,并将返回的字符串值放到变量$k中。

网管u家u.bitsCN.com

<META NAME="GENERATOR" Content="Microsoft Developer Studio"> 网管有家bitscn.net

<META HTTP-EQUIV="Content-Type" content="text/html; charset=gb_2312-80"> 网管朋友网www_bitscn_net

<TITLE>订货合同管理</TITLE>

网管论坛bbs_bitsCN_com

</HEAD>

网管有家www.bitscn.net

<BODY style="background-color: ivory"> 网管u家bitscn.net

<form name=frmplanfill method=post action="dhht_crt.php">

中国网管论坛bbs.bitsCN.com

  中国网管论坛bbs.bitsCN.com

<TABLE align=center border=1 cellPadding=0 cellSpacing=0 width="90%" style="FONT-SIZE: 10pt">

网管有家www.bitscn.net

 

网管u家bitscn.net

  <TR> 网管网www.bitscn.com

    <TD>合同编号</TD><TD><INPUT name=htbh size=15></TD> 网管联盟bitsCN_com

    <TD>合同概述</TD><TD colspan=5><INPUT name=htgs size=53></TD>

网管u家u.bitsCN.com

  </TR>

网管u家u.bitsCN.com

  <TR> 中国网管论坛bbs.bitsCN.com

    <TD>供货厂商</TD>

网管u家u.bitsCN.com

<TD><select name="kh_id" onchange="khxz_onclick()"> //当每次改变所选供货商时,触发上述JavaScript函数。

网管u家www.bitscn.net

        <?Prt_Sele("select convert(int,kh_id),name from kh where co_id=$s_coid and type='G'",0,1)?></select></TD>   //将符合条件的所有供货商名称放到下拉列表框中供用户选择。其中Prt_Sele是自定义的 PHP函数。

网管有家bitscn.net

    <TD>地   址</TD>

网管bitscn_com

    <TD colspan=3><INPUT type=text name=address size=34 ></td>  //触发JavaScript函数的结果是使得adrress变量获得值并显示到页面上。 网管u家u.bitsCN.com

    以上代码的系统环境是:Linux操作系统、Sybase数据库、Web Server为Apache、PHP4程序界面。以上将PHP和JavaScript相结合的程序开发思想已成功地运用到我们开发的多个动态Web页面中。

网管联盟bitsCN@com

TAGs   提取   数据   实现   数据库   动态   页面   PHP   //   信息   供货商      
 上一篇:用PHP增强UNIX/LINUX网站功能   下一篇:PHP&Java
php录入页面中动态从数据库中提取数据的实现 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: