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 相关文章推荐
PHP无限分类代码,支持数组格式化、直接输出菜单两种方式
May 18 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
Mar 05 PHP
php用正则表达式匹配URL的简单方法
Nov 12 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
Feb 02 PHP
php多文件上传实现代码
Feb 20 PHP
phpword插件导出word文件时中文乱码问题处理方案
Aug 19 PHP
php+mysqli使用面向对象方式查询数据库实例
Jan 29 PHP
浅谈PHP中new self()和new static()的区别
Aug 11 PHP
kindeditor 加入七牛云上传的实例讲解
Nov 12 PHP
PHP实现上传图片到数据库并显示输出的方法
May 31 PHP
ThinkPHP 3使用OSS的方法
Jul 19 PHP
thinkphp5+layui实现的分页样式示例
Oct 08 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生成带有雪花背景的验证码
2008/09/28 PHP
php判断是否为json格式的方法
2014/03/04 PHP
destoon实现VIP排名一直在前面排序的方法
2014/08/21 PHP
老版本PHP转义Json里的特殊字符的函数
2015/06/08 PHP
PHP用户注册邮件激活账户的实现代码
2017/05/31 PHP
JavaScript 代码压缩工具小结
2012/02/27 Javascript
Jquery index()方法 获取相应元素索引值
2012/10/12 Javascript
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
对比分析json及XML
2014/11/28 Javascript
javascript中hasOwnProperty() 方法使用指南
2015/03/09 Javascript
JavaScript保存并运算页面中数字类型变量的写法
2015/07/06 Javascript
JS函数的定义与调用方法推荐
2016/05/12 Javascript
nodejs入门教程六:express模块用法示例
2017/04/24 NodeJs
浅谈VUE单页应用首屏加载速度优化方案
2018/08/28 Javascript
vue-cli 2.*中导入公共less文件的方法步骤
2018/11/22 Javascript
Vue动态修改网页标题的方法及遇到问题
2019/06/09 Javascript
Vue的data、computed、watch源码浅谈
2020/04/04 Javascript
微信小程序实现时间戳格式转换
2020/07/20 Javascript
约瑟夫问题的Python和C++求解方法
2015/08/20 Python
python将秒数转化为时间格式的实例
2018/09/16 Python
Django保护敏感信息的方法示例
2019/05/09 Python
利用Python模拟登录pastebin.com的实现方法
2019/07/12 Python
Django如何批量创建Model
2020/09/01 Python
Python实现Kerberos用户的增删改查操作
2020/12/14 Python
Python自动化测试基础必备知识点总结
2021/02/07 Python
HTML5使用DOM进行自定义控制示例代码
2013/06/08 HTML / CSS
Spartoo英国:欧洲最大的网上鞋店
2016/09/13 全球购物
美国家居装饰网上商店:Lulu & Georgia
2019/09/14 全球购物
Pandora西班牙官方商店:PandoraShop.es
2020/10/05 全球购物
集中整治工作方案
2014/05/01 职场文书
化学专业自荐信
2014/05/28 职场文书
公司年夜饭通知
2015/04/25 职场文书
公司捐书倡议书
2015/04/27 职场文书
百年校庆感言
2015/08/01 职场文书
食品卫生管理制度
2015/08/06 职场文书
css 中多种边框的实现小窍门
2021/04/07 HTML / CSS