Posts Tagged ‘据的’

几种显示数据的方法的比较

星期一, 06月 2nd, 2008

用于显示数据库数据de时候,一般用循环体来做,常用de方法有while()和for()两种语句,下面就来讲一下他们在不同情况下各自de用法.
  我来分别介绍:
while()语句是可以显示全部数据,在不知道循环次数de情况下,尤其显得方便,而for()语句呢,可以输出显示从指定位置开始到指定位置结束de数据,在输出显示一定范围de数据时就用得上了.下面看一下编程实例:
  我先建一个数据库来备用:数据库名为:mydb 表名为:tbl.
用下面de语句:create table tal (idx int(3),url char (100),freetext char(100))
可以用phpmyadmin工具来向数库表中插入若干个数据.
编程开始:
$id=mysql_connect("localhost") or die("无法建立数据库链接");#链接数据库
$result=mysql_db_query("mydb","select * from tbl",$id);#查询结果并存入变量中
$rows=mysql_num_rows($result);#得出数据表中de总行数,也就是数据de总个数
echo"<table>";#准备以表格de形式输出
echo "</table>";#表格结束
在上面两句中插入输出语句,对应于不同de情况,输出语句分为几种情况:
若输出全部数据,先用for()来做
for($i=0;$i<$rows;$i ){
$total=mysql_fetch_array($result);
echo "<tr><td bgcolor=yellow><a href="http://$total[url]"target=_blank>$total[freetext]</a>$total[idx]</tr></td>";
}
用while()来做
while($total=mysql_fetch_array($result))
{ echo "<tr><td bgcolor=yellow><a href="http://$total[url]"target=_blank>$total[freetext]</a>$total[idx]</tr></td>";
}
当我想要分页显示de时候,也就是不能一下子把所有de数据一次性de显示完,那么可以用for()来完成这个任务.
我假设每输出10个数据,用$page来表示当前de页数$pagesize=10来表示第页de数据数量.语句如下所示:
for ($i=0;$i<$pagesize;$i )
{
$start=($page-1)*$pagesize $i;#计数起始de数据行数
if ($start<$rows)
$idx=mysql_result($result,$start,"idx");
$url=mysql_result($result,$start,"url");
$freetext=mysql_result($result,$start,"freetext");
echo "<tr><td bgcolor=yellow><a href="http://$url"target=_blank>$freetext</a>$idx</tr></td>";
上述语句用for()分别得出数据表中de各字段de值存入变量中,用echo语句显示出来.
以上程序在apache mysql php4中运行通过
【本文版权归作者与奥索网共同拥有,如需转载,请注明作者及出处】

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

星期一, 06月 2nd, 2008

摘要:用php制作动态web页面时,在提交服务器之前,让php根据用户在当前页面上录入de某字段de值立即从数据库中取出相关de其它字段de值并显示到当前页面上,是php程序开发中de难点.本文以一个具体实例详细介绍了怎样将两个html内嵌式语言php和javascript巧妙结合起来,解决这个难点de具体方法.
关键词:php、动态、html.
现在de网站已经从以前提供静态信息de形式发展到交互式de提供动态信息业务de方式.webde信息服务形式可以概括为两点:向客户提供信息;记录客户提交de信息.要提供这两种服务,需解决de问题是:如何快速地让用户在自己网站大量de信息中快速提取他想要de信息,如何有效地记录用户提交de信息,以便于将来用户查找.这些问题都可以通过在网站中加入数据库支持来解决.
因php对多种数据库都能提供良好de支持,且phpde脚本直接嵌入在html文档中,使用非常方便.因此php是现在internet上最流行de一种server端嵌入语言之一.另外,与其它deserver端脚本语言如asp相比,php免费开放源码并且提供跨平台de支持,这使它能够轻易适应当今网络中各种异质de网络环境;可让网页制作人员能够非常快捷、方便地制作出功能强大de动态web页面.但是,由于php是服务器端嵌入,更直观de理解是php语句是在服务器上执行,所以它只有提交时才将当前页面上de内容接收和处理.而当您需要de内容是根据客户当前页面上录入de某字段de值,再动态到库中提取时,php就无能为力了.例如:要向客户提供一个“订货合同”de录入页面,其中包含一些“供货商信息”de录入,而各供货商de详细信息事先已在一个“商家”字典表中录入,现在要求当客户在当前页面上选中某“供货商”时,立时从“商家”字典表中将该供货商de某些信息如“开户行、帐号、地址、电话”等提取出来显示到当前页面上供客户直接使用或修改使用.这样de要求若用可视化编程语言如pb、vb等实现是一件轻而易举de事,但pb、vb不适合编写动态web页面;php适合编写动态web页面,但由于是服务器端嵌入,不能及时获得提交前页面上de变量值,所以实现上述要求就有一定de难度.在程序编写过程中,我将php与javascript巧妙结合起来,解决了这个难点.
我知道,同样是嵌入语句,但是javascript 又不同于php语言.因为php是服务器端嵌入,而javascript是客户端嵌入,既javascript语句是在客户de浏览器上执行,这就决定了javascript可及时获得当前页面上de变量值,但又无法对服务器端de数据库直接操作.所以,将二者结合起来制作出功能强大de动态web页面,可谓是珠联璧合.为了叙述方便,下面只以从字典表中取出选中供货商de地址为例,说明具体做法.当需要取出多个字段时,方法类似,但利用javascript函数从字符串中逐个取出时,要细心一些.
1.编写一个php函数
此函数de功能是将所有符合条件de“供货商信息”从“商家”字典表中取出,并存放到一个字符串变量$khsz中.
function khqk_tq($questr){
global $dbconn;
$dbq_resl=sybase_query($questr,$dbconn); //送出一个query字符串供sybase执行.
$dbq_rows=sybase_num_rows($dbq_resl); //获得返回行de数目.
$j=0;
for ($i=0;$i<$dbq_rows;$i ){ //建循环,将每行中所需字段取出,并放到数组$k[]中.
$k[]=sybase_result($dbq_resl,$i,"kh_id"); //取出用户选择de供货商编号.
$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函数
该函数de功能是从字符串中根据kh_id值找到该供货商de地址,嵌入到html文件中.
<script language="javascript">
var khstr="<?=$k?>" //先将php变量转变成javascript变量khstr.
function khxz_onclick(){
frm=document.frmplanfill;
ghstj=frm.kh_id.value; //获得当前页面上刚刚选中de“供货商”dekh_id值.
numkh=khstr.indexof(ghstj,0) ; //从khstr串中找到该kh_id值所在de位置.
addr=khstr.substring(khstr.indexof("|",numkh) 1,khstr.indexof("|",khstr.indexof("|",numkh) 1)); //从 khstr串中取出与kh_id对应de地址字段de值.
frm.address.value=addr; //将取出de值赋给当前录入页面上de字段变量address.
}
</script>
3.在html中将二者结合起来,互为所用
$khinfo="select kh_id,address from kh where co_id=$s_coid and type=’g’ order by kh_id";
//将取供货商信息desql语句放到变量$khinfo中.
$k=khqk_tq($khinfo); //调用php函数,并将返回de字符串值放到变量$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> //将符合条件de所有供货商名称放到下拉列表框中供用户选择.其中prt_sele是自定义de php函数.
<td>地 址</td>
<td colspan=3><input type=text name=address size=34 ></td> //触发javascript函数de结果是使得adrress变量获得值并显示到页面上.
以上相关代码de系统环境是:linux操作系统、sybase数据库、web server为apache、php4程序界面.以上将php和javascript相结合de程序开发思想已成功地运用到我开发de多个动态web页面中.

php访问查询mysql数据的三种方法

星期一, 06月 2nd, 2008

1. $row = mysql_fetch_row($result);
返回一个规则de数组$row,$row[0]是第一个元素,$row[1]是第二个元素,依次类推…
mysql_num_fields($result) 返回结果de元素个数.
2. $row = mysql_fetch_array($result);
返回一个数组$row. 举例如下:
表结构如下:
username | password
————————————-
bourbon | abc
berber | efg
第一次运行运行 $row = mysql_fetch_array($result) 则结果如下:
$row[0] = $row["username"] = "bourbon"
$row[1] = $row["password"] = "abc"
第一次运行运行 $row = mysql_fetch_array($result) 则结果如下:
$row[0] = $row["username"] = "berber"
$row[1] = $row["password"] = "efg"

3. $row = mysql_fetch_object($result);
返回一个对象描述行. 如上例
第一次运行运行$row = mysql_fetch_object($result) 则结果如下:
$row->username = "bourbon"
$row->password = "abc"
第二次运行运行$row = mysql_fetch_object($result) 则结果如下:
$row->username = "berber"
$row->password = "efg"

类的另类用法–数据的封装

星期一, 06月 2nd, 2008

类de另类用法–数据de封装
一般de情况下,如果使用classname::property是不能访问到类de属性de,但可以用classname::method()使用类de方法.同样de也不能用objectname->property访问到类de方法里de变量.利用这一特点,我可以将一些数据保存于类中,有点象c de私有属性.
<?
class data {
function value($var) {
static $d = array();
if(func_num_args() > 1) {
$d[$var] = func_get_arg(1);
}else {
return $d[$var];
}
}
}
//测试:
data::value("a",1);
data::value("b",2);
echo data::value("a");
echo data::value("b");
?>

php中数据的批量导入(csv文件)

星期一, 06月 2nd, 2008

  有时写程序时后台要求把大量数据导入数据库中,比如计算机考试成绩de查询、电话簿de数据等一般都是存放在excel中de,这时我可把数据导出成csv文件,然后通过以下程序即可在后台批量导入数据到数据库中.

  下面只是主要程序部分:

<?php
/*****************************************
**********作者:冲星/arcow****************
**********njj@nuc.edu.cn*******************
**********php导入csv文件到数据库**********
**********同时计算程序执行时间***********
**********www.knowsky.com***********
****************************************/
//定义获取时间函数
function getmicrotime(){
list($usec, $sec) = explode(” “,microtime());
return ((float)$usec (float)$sec);
}
?>

<?php
$time_start = getmicrotime();
include(”db.inc.php”);//连接数据库
$db=new testcsv;
?>
<?php
$handle = fopen (”test.csv”,”r”);
$sql=”insert into scores(idcard,names,num,sex,nation,score) values(’”;
while ($data = fgetcsv ($handle, 1000, “,”)) {
$num = count ($data);
for ($c=0; $c < $num; $c ) {
if($c==$num-1){$sql=$sql.$data[$c].”‘)”;break;}
$sql=$sql.$data[$c].”‘,’”;
}
print “<br>”;
echo $sql.”<br>”;
$db->query($sql);
echo “SQL语句执行成功!<br>”;
$sql=”insert into scores(idcard,names,num,sex,nation,score) values(’”;
}
fclose ($handle);
$time_end = getmicrotime();
$time = $time_end - $time_start;
echo “程序执行时间:”.$time.”秒”;
?>