您好,欢迎访问一九零五行业门户网

带Oracle数据库分页显示功能的留言簿(3)

oracle|分页|数据|数据库|显示
程序分成四部份
1.. 初始化
2.. 取数据库中的数据
3.. 计算要显示的页数
4.. 送出资料
这个程序在 biglobe 上有实作,由于这是一间 isp 公司,因此在设定时限定连结或专线的会员才能看到,进入前要输入帐号及密码。为了保护留言者的隐私,留言以马赛克处理。
$webmasteriparray = array(
10.0.1.30, // 管理人员甲的机器 ip
10.0.2.28 // 管理人员乙的机器 ip
);
$webmasterip=false;
for ($i=0; $i<count($webmasteriparray); $i++) {
if ($remote_addr == $webmasteriparray[$i]) $webmasterip=true;
}
// 之后初始化 oracle 程序略
显示程序和留言程序的初始化部份都差不多,但显示程序多加了一个功能,设定webmaster 的电脑。将 webmaster 使用的 ip address 加在 $webmasteriparray 阵列变数中,可以在显示留言时,显示删除留言的字串,方便处理不当的留言。
$handle=ora_logon(user38@www,iam3849) or die;
$cursor=ora_open($handle);
ora_commitoff($handle);
$query=select serial, ref, id, alias, ip, to_char(msgdate,
'yyyy/mm/dd hh:mi:ss'), email, msg from guestbook where flag='1' order by
msgdate desc;
ora_parse($cursor, $query) or die;
ora_exec($cursor);
$i=0;
while(ora_fetch($cursor)) {
$guestbook[$i][0] = ora_getcolumn($cursor,0);
$guestbook[$i][1] = ora_getcolumn($cursor,1);
$guestbook[$i][2] = ora_getcolumn($cursor,2);
$guestbook[$i][3] = ora_getcolumn($cursor,3);
$guestbook[$i][4] = ora_getcolumn($cursor,4);
$guestbook[$i][5] = ora_getcolumn($cursor,5);
$guestbook[$i][6] = ora_getcolumn($cursor,6);
$guestbook[$i][7] = ora_getcolumn($cursor,7);
$i++;
}
ora_close($cursor);
ora_logoff($handle);
在初始化后,就可以连上 oracle 资料库,将留言的资料取出放在 $guestbook阵列中。取得资料后,就赶紧将资料库关闭,再来处理 $guestbook 阵列的资料了。
if ($query_string!=) {
$page = $query_string;
} else {
$page = 0;
} 这一段程序判断是要显示第几页,内定值是显示第一页。要显示第三页的页面,需要使用 http://xxxxxx/index.php?2 的格式,也就是传入 $query_string,余类推。之后的数行程序,都是用来处理显示的页数及笔数的资料。
$msgnum=20; // 每页二十笔
要改变每页的显示笔数,可以改 $msgnum 变数。程序的内定值为 20 笔。
for ($i=$start; $i<$end; $i++) {
echo <p><hr><p>\n;
echo <p>\n<font color=e06060>.$guestbook[$i][5].</font>   ;
if ($guestbook[$i][6]!=) echo <a
href=mailto:.$guestbook[$i][6].>;
echo <strong>.$guestbook[$i][3].</strong>;
if ($guestbook[$i][6]!=) echo </a>;
echo <br>\n;
if ($webmasterip) echo <a href=erase.php?.$guestbook[$i][0].>删除
本篇!!</a> (.$guestbook[$i][2].)   ;
echo <font size=-1 color=c0c0c0>from:
.$guestbook[$i][4].</font><p>\n;
$msg=base64_decode($guestbook[$i][7]);
$msg=nl2br($msg);
echo $msg;
echo <p>\n;
} 这一段程序就是真正显示留言资料给使用者看的程序了。利用 for 回圈,将$guestbook 阵列的资料按照设定的页数取出,显示给使用者看。值得一提的是,若看留言的机器 ip 为 $webmasteriparray 变数阵列中的一个元素的话,则会在留言者的匿称后显示 删除本篇!! 的字串,供管理人员删除不当留言。
以下即为删除留言的程序。
<?php
file://---------------------------
// 留言删除程序 erase.php
// author: wilson peng
// copyright (c) 2000
file://---------------------------
putenv(oracle_sid=www);
putenv(nls_lang=american_taiwan.zht16big5);
putenv(oracle_home=/home/oracle/product/7.3.2);
putenv(ld_library_path=/home/oracle/product/7.3.2/lib);
putenv(ora_nls=/home/oracle/product/7.3.2/ocommon/nls/admin/data);
putenv(ora_nls32=/home/oracle/product/7.3.2/ocommon/nls/admin/data);
$handle=ora_logon(user38@www,iam3849) or die;
$cursor=ora_open($handle);
ora_commitoff($handle);
$query=update guestbook set flag='0' where
serial='.$query_string.';
ora_parse($cursor, $query) or die;
ora_exec($cursor);
ora_close($cursor);
ora_logoff($handle);
header(location: ./index.php);
?>
其实这个程序很单纯,只要打开 oracle 资料库,将欲删除的序号那笔资料的flag 栏位设成 0 就可以了,不用将资料真的从资料库上移除。
其它类似信息

推荐信息