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


Posted in PHP onOctober 09, 2006

摘要:用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,$dbconn);  //送出一个query字符串供sybase执行。

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

     $j=0;

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

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

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

       if ($add==""):

          $k[]="无";

       else :

         $k[]=sybase_result($dbq_resl,$i,"address");

     endif;

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

       $j=$j+2;

   }  

  return $khsz;

}

2.编写一个javascript函数

该函数的功能是从字符串中根据kh_id值找到该供货商的地址,嵌入到html文件中。

<script language="javascript">

  var  khstr="<?=$k?>"               //先将php变量转变成javascript变量khstr。

function khxz_onclick(){

   frm=document.frmplanfill;

   ghstj=frm.kh_id.value;          //获得当前页面上刚刚选中的“供货商”的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对应的地址字段的值。

   frm.address.value=addr;  //将取出的值赋给当前录入页面上的字段变量address。

}

</script>

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中。

<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>合同编号</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()"> //当每次改变所选供货商时,触发上述javascript函数。

        <?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函数。

    <td>地   址</td>

    <td colspan=3><input type=text name=address size=34 ></td>  //触发javascript函数的结果是使得adrress变量获得值并显示到页面上。

    以上代码的系统环境是:linux操作系统、sybase数据库、web server为apache、php4程序界面。以上将php和javascript相结合的程序开发思想已成功地运用到我们开发的多个动态web页面中。

PHP 相关文章推荐
4.与数据库的连接
Oct 09 PHP
php桌面中心(二) 数据库写入
Mar 11 PHP
用PHP读取和编写XML DOM的实现代码
Feb 03 PHP
基于PHP服务端图片生成缩略图的方法详解
Jun 20 PHP
PHP 5.3和PHP 5.4出现FastCGI Error解决方法
Feb 12 PHP
php中file_exists函数使用详解
May 08 PHP
PHP扩展框架之Yaf框架的安装与使用
May 18 PHP
浅谈mysql_query()函数的返回值问题
Sep 05 PHP
简单谈谈PHP面向对象之标识对象
Jun 27 PHP
php实现微信分享朋友链接功能
Feb 18 PHP
PHP使用HTML5 FormData对象提交表单操作示例
Jul 02 PHP
PHP实现文件上传与下载
Aug 28 PHP
使用字符串函数输出整数化的PHP版本号
Oct 09 #PHP
树型结构列出指定目录里所有文件的PHP类
Oct 09 #PHP
搜索和替换文件或目录的一个好类--很实用
Oct 09 #PHP
非常好的php目录导航文件代码
Oct 09 #PHP
PHP4.04简明安装
Oct 09 #PHP
利用 window_onload 实现select默认选择
Oct 09 #PHP
将RTF格式的文件转成HTML并在网页中显示的代码
Oct 09 #PHP
You might like
PHP的简单跳转提示的实现详解
2019/03/14 PHP
PHP进阶学习之Geo的地图定位算法详解
2019/06/19 PHP
简单的js分页脚本
2009/05/21 Javascript
JS input文本框禁用右键和复制粘贴功能的代码
2010/04/15 Javascript
如何用js控制frame的隐藏或显示的解决办法
2013/03/20 Javascript
javascripit实现密码强度检测代码分享
2013/12/12 Javascript
node.js使用cluster实现多进程
2016/03/17 Javascript
详解JavaScript中基于原型prototype的继承特性
2016/05/05 Javascript
将input框中输入内容显示在相应的div中【三种方法可选】
2017/05/08 Javascript
vue2.0中click点击当前li实现动态切换class
2017/06/21 Javascript
JS实现身份证输入框的输入效果
2017/08/21 Javascript
js Date()日期函数浏览器兼容问题解决方法
2017/09/12 Javascript
Angular中管道操作符(|)的使用方法
2017/12/15 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(下)
2018/04/18 Javascript
webpack 代码分离优化快速指北
2019/05/18 Javascript
微信小程序判断页面是否从其他页面返回的实例代码
2019/07/03 Javascript
kafka调试中遇到Connection to node -1 could not be established. Broker may not be available.
2019/09/17 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
2019/10/10 jQuery
在webstorm中配置less的方法详解
2020/09/25 Javascript
利用JS判断元素是否为数组的方法示例
2021/01/08 Javascript
Python内置函数dir详解
2015/04/14 Python
Python的Bottle框架中获取制定cookie的教程
2015/04/24 Python
python实现判断数组是否包含指定元素的方法
2015/07/15 Python
python3 动态模块导入与全局变量使用实例
2019/12/22 Python
日本网路线上商品代购服务:转送JAPAN
2016/08/05 全球购物
请写出 BOOL flag 与"零值"比较的 if 语句
2016/02/29 面试题
金融专业应届生求职信
2013/11/02 职场文书
区域总监的岗位职责
2013/11/21 职场文书
职业培训师职业生涯规划
2014/02/18 职场文书
法人代表证明书
2014/09/18 职场文书
“六查”、“三学”、“三干”查摆问题整改措施
2014/09/27 职场文书
护士节慰问信
2015/02/15 职场文书
无犯罪记录证明样本
2015/06/16 职场文书
单位车辆管理制度
2015/08/05 职场文书
MySQL 外键约束和表关系相关总结
2021/06/20 MySQL
JS轻量级函数式编程实现XDM三
2022/06/16 Javascript