在线竞拍系统的PHP实现框架(二)


Posted in PHP onOctober 09, 2006

上回说完了商品的列表显示方法。下面来谈谈显示商品详细信息的方法,这与我们在论坛中常用的显示帖子的方法大同小异。

********显示详细信息的文件***********
detail.php

<?php
include "config.inc.php";

//显示商品详细信息
//用全局变量来做,可以方便地取到多个字段的值。
//有id,名字,价格,介绍,当前价,单位,图片,结束时间。
function ReadDetail(){
global $WARE_TABLE;
global $id,$name,$price,$description,$cprice,$unit,$image,$endtime;

$SQL="select id,name,description,price,unit,endtime,reply,curprice,photo from $WARE_TABLE where id='$id'";
$result=mysql_query($SQL) or die(mysql_error());

//下面这一句,也可以用list(...)来做,但我习惯这样分开,看起来是麻烦点,不过清楚些,特别是有要处理的字段时,这样就很有必要了。

$row=mysql_fetch_array($result);
$name=$row[name];
$price=$row[price];
$description=$row[description];
$unit=$row[unit];
$cprice=$row[curprice];
$endtime=date("Y-m-j",$row[endtime]);
if($row[photo]==1) $image=$row[id].".jpg";
else $image="";
}

//读最新10个买家信息
function ReadBuyer(){
global $BID_TABLE;
global $id,$buyer,$buyprice,$date,$num;

$SQL="select id,buyer,email,price from $BID_TABLE where parentid='$id' order by id desc";
$result=mysql_query($SQL) or die(mysql_error());
$k=mysql_num_rows($result);

$num=($k>10)? 10:$k; //判断一下,是不是多于10个。

for($i=0;$i<$num;$i++){
$row=mysql_fetch_array($result);
$buyer[]=$row[buyer];
$buyprice[]=$row[price];
$date[]=date("Y-m-j H:i:s",$row[id]);
}
}

//显示10个买家信息。
function ShowBuyer(){
global $buyer,$buyprice,$date,$num;

for($i=0;$i<$num;$i++){
echo "<tr><td width=25%>".$date[$i]."</td>";
echo "<td width=40%>".$buyer[$i]."</td>";
echo "<td width=35%>".$buyprice[$i]."</td></tr>";
}
}

ReadDetail();
ReadBuyer();

?>

完成了上面的处理,就可以html中用<? echo $name?>或<? echo $price;?>等来取到要显示的信息了,这些我就不详述了。

就是这句,要根据是否有图片分别显示文字或图片。
<? if($image=="") echo "没有照片"; else echo "<img src=photo/$image>"; ?>

在显示商品详细资料时,也应让用户可以投标,所以此时要对用户下的新价做出一个判断,我比较懒,就直接用deamweaver来做这个表单的校验了,只把其中的英文说明改成中文,不过由于在判断新出价的方面有点特殊,所以对dw生成的函数做了一点点改动。

<script language="JavaScript">
<!--
function MM_findObj(n, d) { //v3.0
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}

function MM_validateForm() { //v3.0
var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
if (val) { nm=val.name; if ((val=val.value)!="") {
if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
if (p<1 || p==(val.length-1)) errors+='- '+nm+' 必须是正确的email地址.n';
} else if (test!='R') { num = parseFloat(val);
if (val!=''+num) errors+='- '+nm+' 必须是数值.n';
if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
min=test.substring(8,p); max=test.substring(p+1);
//**********改动部分*********
var k=(num-min)/max;
//判断要大于当前价,并且是当前价+加价单位的整数倍
if (num<min || k != Math.ceil(k) ) errors+='- '+nm+' 必须是大于 '+min+' 并且加价必须为 '+max+'的整数倍.n';
} } } //*******结束改动部分********
else if (test.charAt(0) == 'R') errors += '- '+nm+' 要填完整.n'; }
} if (errors) alert('发现错误如下:n'+errors);
document.MM_returnValue = (errors == '');
}
//-->
</script>

下面的事就简单了,还要有什么呢?显示一下已结束竞标的商品吧。这个功能的实现与显示未结束的商品方法一样,我就不罗嗦了。唯一的区别在于一是SetCondition()条件的不同和在显示结束竞价的商品详细资料时,没有用户出价的表单。

另外,我再给出添加新商品的方法吧。

<?php
include "config.inc.php";
include "tview.class.php";

function AddRecord(){
global $view;
//以下变量都是从上一个页面的表单中得到的。
global $name,$price,$unit,$year,$month,$day,$photofile,$intro;

$t=time();
$c=nl2br($intro);
$et=mktime(24,0,0,$month,$day,$year);

//判断一下是否有图上传了。
$ph=( $photofile!="none" and !empty($photofile) )? '1':'0';

//调用成员函数add()参数就是sql语句中的values()中的字串
$view->Add("'$t','$name','$c','$price','$unit','$et','0','$price','$ph'");

//如果有图片,拷到指定目录下。
if($ph=='1')
copy($photofile,"photo/$t.jpg");

}

if( $Submit){
$view= new TViewPage($WARE_TABLE,20);
AddRecord();
header("Location:manager.htm");
}

?>

好了,罗罗嗦嗦写了两篇,不知道可不可以又加个几百分哦。:)

有什么问题真心地请大家提出来讨论,我可是把程序拿出来了,您见到什么不妥的不当的,可千万不要吝啬,记得告诉我一声。

我的email : ycshowtop@21cn.com

另外,如果你想要这个程序比较完整的代码,也来个email,我寄给您。

PHP 相关文章推荐
PHP strncasecmp字符串比较的小技巧
Jan 04 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
Dec 24 PHP
PHP将进程作为守护进程的方法
Mar 19 PHP
使用XHProf查找PHP性能瓶颈的实例
Dec 13 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
Dec 21 PHP
Laravel 加载第三方类库的方法
Apr 20 PHP
Yii2语言国际化自动配置详解
Aug 22 PHP
PHP连接sftp并下载文件的方法教程
Aug 26 PHP
PHP内部实现打乱字符串顺序函数str_shuffle的方法
Feb 14 PHP
利用PHP如何统计Nginx日志的User Agent数据
Mar 06 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 PHP
基于PHP实现用户在线状态检测
Nov 10 PHP
php中的时间处理
Oct 09 #PHP
用php写的serv-u的web申请账号的程序
Oct 09 #PHP
PHP系统流量分析的程序
Oct 09 #PHP
PHP的栏目导航程序
Oct 09 #PHP
php的计数器程序
Oct 09 #PHP
PHP的开合式多级菜单程序
Oct 09 #PHP
PHP如何透过ODBC来存取数据库
Oct 09 #PHP
You might like
php5.2时间相差8小时
2007/01/15 PHP
php源码加密 仿微盾PHP加密专家(PHPCodeLock)
2010/05/06 PHP
php上传图片到指定位置路径保存到数据库的具体实现
2013/12/30 PHP
用php+ajax新建流程(请假、进货、出货等)
2017/06/11 PHP
一段好玩的JavaScript代码
2006/12/01 Javascript
图片格式的JavaScript和CSS速查手册
2007/08/20 Javascript
JavaScript 异步调用框架 (Part 1 - 问题 & 场景)
2009/08/03 Javascript
风吟的小型JavaScirpt库 (FY.JS).
2010/03/09 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
2015/03/19 Javascript
jQuery绑定事件监听bind和移除事件监听unbind用法实例详解
2016/01/19 Javascript
jQuery Mobile框架中的表单组件基础使用教程
2016/05/17 Javascript
jquery 标签 隔若干行加空白或者加虚线的方法
2016/12/07 Javascript
详解nodejs 文本操作模块-fs模块(三)
2016/12/22 NodeJs
12306 刷票脚本及稳固刷票脚本(防挂)
2017/01/04 Javascript
xmlplus组件设计系列之分隔框(DividedBox)(8)
2017/05/02 Javascript
Three.js加载外部模型的教程详解
2017/11/10 Javascript
JS函数节流和函数防抖问题分析
2017/12/18 Javascript
vue下拉列表功能实例代码
2018/04/08 Javascript
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
2018/12/19 Javascript
解决vue addRoutes不生效问题
2020/08/04 Javascript
NodeJS和浏览器中this关键字的不同之处
2021/03/03 NodeJs
Python易忽视知识点小结
2015/05/25 Python
TensorFlow实现随机训练和批量训练的方法
2018/04/28 Python
使用python根据端口号关闭进程的方法
2018/11/06 Python
对dataframe数据之间求补集的实例详解
2019/01/30 Python
pygame实现俄罗斯方块游戏(AI篇1)
2019/10/29 Python
button在IE6/7下的黑边去除方案
2012/12/24 HTML / CSS
css3一个简易的 LED 数字时钟实现方法
2020/01/15 HTML / CSS
AmazeUI 网格的实现示例
2020/08/13 HTML / CSS
工商管理专业实习生自我鉴定
2013/09/29 职场文书
小学教研工作制度
2014/01/15 职场文书
推荐信格式范文
2014/05/09 职场文书
2014年全国法制宣传日宣传活动方案
2014/11/02 职场文书
无婚姻登记记录证明
2015/06/18 职场文书
《牧场之国》教学反思
2016/02/22 职场文书
关于 Python json中load和loads区别
2021/11/07 Python