文章教程

11.9.1分类查看商品信息

9/17/2020 9:38:49 PM 人评论 次浏览

11.9 商品信息管理

普通用户可以查看和发布商品信息,本节介绍商品信息管理模块的实现过程。

11.9.1 分类查看商品信息

在系统首页的上方,有一个链接条,包括商品分类信息等链接。用户可以单击任意分类的超链接,进入按分类显示商品列表的页面,如图11-16所示。

查看商品信息的脚本是List.php,下面介绍List.php的主要代码。

1.显示转让和求购超链接

网站内的商品可以分为转让商品和求购商品两种情况。在List.php中,按转让商品和求购商品分别显示当前分类的商品信息。在页面的上方,显示转让和求购超链接。页面参数flag是转让和求购的标识,当flag=0时,当前页面显示转让商品信息;否则显示求购商品信息。页面参数tid表示页面显示的商品分类编号。

figure_0256_0324

图11-16 按分类查看商品信息

显示转让和求购超链接的代码如下:

<?PHP

//读取参数, tid表示商品类型编号,flag表示转让或求购类型

$tid=intval($_GET["tid"]);

$flag=intval($_GET["flag"]);

if($flag==0)

{

?>

<B>转让信息</B>&nbsp;&nbsp;<a href="list.php?flag=1&tid=<?PHP echo($tid); ?>">求购信息</a>

<?PHP }

else

{

?>

<a href="list.php?flag=0&tid=<?PHP echo($tid); ?>">转让信息</a>&nbsp;&nbsp;<B>求购信息</B>

<?PHP } ?>

2.显示商品信息

在List.php页面中,程序将根据变量tid和flag的值从表Goods和表GoodsType中读取指定类别下所有的商品信息。代码如下:

<?PHP

//设置转让或求购的查询条件

if($flag==0)

{

$cond=" WHERE SaleOrBuy=1";

}

else

{

$cond=" WHERE SaleOrBuy=2";

}

//设置商品分类查询条件

if ($tid>0)

{

$cond=$cond." AND TypeId=".$tid;

}

//只查看未结束的商品

$cond=$cond." AND IsOver=0";

//创建Goods对象,读取满足条件的记录

include('Class\Goods.php');

$obj = new Goods();

$results = $obj->GetGoodslist($cond);

$m=0;

while($row = $results->fetch_row())

{

?>

<tr><td align=center bgcolor="#FFFFFF"><?PHP if ($row[5]=="")

{

?><img src="images/noImg.jpg" height=50 border=0>

<?PHP }

else

{

?><img src="user/images/<?PHP echo($row[5]); ?>" height=50 border=0>

<?PHP } ?></td>

<td  align=center  bgcolor="#FFFFFF"><a  href="GoodsView.php?gid=<?PHPecho($row[0]); ?>" target=_blank><?PHP echo($row[3]); ?></a></td>

<td align=center bgcolor="#FFFFFF"><?PHP echo($row[6]); ?></td>

<td align=center bgcolor="#FFFFFF"><?PHP echo($row[8]); ?>&nbsp;</td>

<td align=center bgcolor="#FFFFFF"><a href="user/UserView.php?uid=<?PHPecho($row[15]); ?>" target=_blank><?PHP echo($row[15]); ?></a></td>

<td bgcolor="#FFFFFF" align="center"><?PHP echo($row[7]); ?></td>

</tr>

<?PHP $m=$m+1;

}

if ($m==0)

{

print "<tr><td bgcolor=#FFFFFF align=center colspan=6>暂无商品信息</td></tr>";

}

?>

11.9.2 添加商品信息

在分类查看商品信息页面中,登录用户单击“我要转让”或“我要求购”超链接,打开user/GoodsAdd.php,可以添加商品信息,如图11-17所示。

figure_0258_0325

图11-17 添加商品信息页面

添加转让商品和求购商品都使用GoodsAdd.php,通过参数flag来区分它们。flag=0表示转让商品,flag=1表示求购商品。

下面将介绍GoodsAdd.php页面中的部分代码。

1.显示商品分类信息

当页面载入时,在下拉列表typeid中装载商品的分类名称,代码如下:

<select size="1" name="typeid">

<?PHP

include('..\Class\GoodsType.php');

$tid=intval($_GET["tid"]);

$obj = new GoodsType();

$results = $obj->GetGoodsTypelist();

while($row = $results->fetch_row())

{

?><option value="<?PHP echo($row[0]); ?>" <?PHP if ($row[0]==$tid)

{

?> selected <?PHP } ?>><?PHP echo($row[1]); ?></option>

<? } ?>

</select>

2.提交表单

用户输入商品信息后,单击“确定”按钮,提交拍卖商品信息表单,代码如下:

<form action="GoodsSave.php?flag=<? echo($_GET["flag"]); ?>" method=post name=form1 onsubmit="return CheckFlds()">

可以看到,表单名为form1,表单提交后,将由GoodsSave.php处理表单数据。在提交表单数据之前,程序将执行 CheckFlds()函数,对用户输入数据的有效性进行检查,只有当 CheckFlds()函数返回True时,才执行提交操作。

CheckFlds()函数的代码如下:

function CheckFlds(){

if (document.form1.aname.value==""){

alert("请输入商品名称!");

form1.aname.focus;

return false;

}

return true;

}

</Script>

下面介绍GoodsSave.php的部分代码。下面的程序将接收从GoodsAdd.php传递来的数据,并将它们转换为能够保存到数据库中的格式,代码如下:

<?PHP

//得到动作参数,如果为add则表示添加操作,如果为edit则表示更改操作

$StrAction=$_GET["action"];

//定义Goods对象,保存商品数据

include('..\Class\Goods.php');

$obj = new Goods();

$obj->GoodsName=$_POST["aname"];

$obj->TypeId=$_POST["typeid"];

$obj->SaleOrBuy=intval($_POST["flag"])+1;

$obj->GoodsDetail=$_POST["adetail"];

$obj->Price=$_POST["sprice"];

$obj->StartTime=$_POST["stime"];

$obj->OldNew=$_POST["oldnew"];

$obj->Invoice=$_POST["invoice"];

$obj->Repaired=$_POST["repaired"];

$obj->Carriage=$_POST["carriage"];

$obj->PayMode=$_POST["pmode"];

$obj->DeliverMode=$_POST["dmode"];

$obj->OwnerId=$_SESSION["user_id"];

if ($StrAction=="edit")

{

$gid=$_GET["gid"];

$obj->update($gid);

}

else

{

$obj->ImageUrl=$_POST["goodsimage"];

$obj->insert();

}

print "<h3>商品信息成功保存</h3>";

?>

GoodsSave.php 也可以用来处理修改拍卖商品信息的数据。在商品中插入图片的方法请参照11.9.3小节理解。

11.9.3 商品图片上传

本节介绍添加商品图片的方法。在Web应用程序中,通常采用两种方法处理图片。一种方法是将图片文件上传到服务器的指定目录下,需要时直接在网页中显示图片;另一种方法是将图片数据保存在数据库的image字段中,需要将其导出到一个图片文件中,然后才能在网页中显示。本实例选择第一种方法,因为这种方法处理起来比较简单,

在GoodsAdd.php中,定义文件上传框架的代码如下:

<iframe frameborder="0" height="40" width="100%" scrolling="no" src="upload.php"></iframe>

可以看到,文件上传的界面由upload.php实现。在upload.php中,定义上传表单的代码如下:

<form name="form1" method="post" action="upfile.php" enctype="multipart/form-data">

可以看到,上传文件的数据由upfile.php处理。

关于上传文件的方法,请读者参照 5.4 小节和源代码理解。上传完成后,需要将上传的文件名显示在上面的“图片文件”文本框goodsimage中,代码如下:

echo("<SCRIPT>parent.document.form1.goodsimage.value='".$newfilename."'</SCRIPT>");

当GoodsAdd.php提交数据时,goodsimage将会被传递到GoodsSave.php中,然后被保存到表Goods的ImageURL字段中。

11.9.4 查看商品信息

在主页面或查看商品列表页面中,单击商品名称超链接,将执行GoodsView.php文件,从表Goods中读取商品信息。文件GoodsView.php保存在系统根目录下,运行界面如图11-18所示。

figure_0260_0326

图11-18 查看商品信息

下面介绍GoodsView.php页面中部分代码。

1.读取商品信息

商品信息数据来源于表Goods,代码如下:

<?

include('Class\Goods.php');

$gid=$_GET["gid"];

$obj = new Goods();

$obj->GetGoodsInfo($gid); //获取商品信息

2.增加浏览次数

当查看商品时,系统将为商品的浏览次数加1,代码如下:

$obj->Add_ClickTimes($gid); //增加点击次数

3.读取卖家信息

根据商品表Goods中的卖家用户名读取用户的所有信息,代码如下:

include('Class\Users.php');

//读取卖家信息

$objUser = new Users();

$objUser->GetUsersInfo($obj->OwnerId);

4.读取商品类型信息

根据商品表Goods中的商品类型编号读取商品类型信息,代码如下:

//读取商品类型

include('Class\GoodsType.php');

$objType = new GoodsType();

$objType->GetGoodsTypeInfo($obj->TypeId);

5.显示商品图片

可以通过<img …>来显示商品的图片信息。如果商品没有图片信息,则显示images/noImg.jpg,代码如下:

<?PHP if($obj->ImageURL=="")

{

?><img src="images/noImg.jpg" height=50 border=0>

<? }

else

{

?><img src="user/images/<?PHP echo($obj->ImageURL); ?>" height=50 border=0>

<? } ?>

请参照源代码理解显示其他商品信息的代码。

10.9.5 查看我的商品列表

用户登录后,在系统主页面中会出现一个“我的商品”超链接,其定义代码如下:

<a href='user\UserView.php?uid=<? echo($objUser->UserId); ?>' target="_blank">我的商品</a>

查看用户商品信息的页面为user\UserView.php,参数uid表示用户名。

查看用户商品信息的页面如图11-19所示。

下面介绍UserView.php的主要代码。

1.设置查询条件

UserView.php中的查询条件比较复杂,需要根据转让或求购、商品类型、发布用户等信息设置查询条件,从表Goods中获取满足条件的商品记录。代码如下:

figure_0262_0327

图11-19 查看用户发布的商品信息

<?php

session_start();

//读取参数, flag表示转让或求购类型

$flag=intval($_GET["flag"]);

//设置转让或求购的查询条件

if ($flag==0)

{

$cond=" WHERE SaleOrBuy=1";

}

else

{

$cond=" WHERE SaleOrBuy=2";

}

//设置商品分类查询条件

if ($tid>0)

{

$cond=$cond." AND TypeId=".$tid;

}

//只查看未结束的商品

$uid=$_GET["uid"];

$cond=$cond." AND OwnerId='".$uid."'";

//获取用户信息

include('..\Class\Users.php');

$objUser = new Users();

$objUser->GetUsersInfo($uid);

//创建Goods对象,读取满足条件的记录

include('..\Class\Goods.php');

$obj = new Goods();

$results = $obj->GetGoodslist($cond);

2.显示商品信息

查询得到的结果集为$results,程序将显示其中的商品信息,代码如下:

<?php

$m=0;

while($row = $results->fetch_row())

{

?>

<tr><td align=center bgcolor="#FFFFFF"><?php if ($row[5]=="")

{

?><img src="../images/noImg.jpg" height=50 border=0>

<?php }

else

{

?><img src="images/<?php echo($row[5]); ?>" height=50 border=0>

<?php } ?></td>

<td align=center bgcolor="#FFFFFF"><a href="../GoodsView.php?gid=<?phpecho($row[0]); ?>" target=_blank><?php echo($row[3]); ?></a></td>

<td align=center bgcolor="#FFFFFF"><?php echo($row[6]); ?></td>

<td align=center bgcolor="#FFFFFF"><?php echo($row[8]); ?>&nbsp;</td>

<td bgcolor="#FFFFFF" align="center"><?php echo($row[7]); ?></td>

<td align=center bgcolor="#FFFFFF">

<?php if ($row[14]==1)

{

?>

已结束

<?php }

else

{

?>

<?php if ($row[15]==$_SESSION["user_id"])

{

?>

<a href="GoodsEdit.php?gid=<?php echo($row[0]); ?>" target=_blank>修改</a>&nbsp;

<a href="GoodsDelt.php?gid=<?php echo($row[0]); ?>" target=_blank>删除</a>&nbsp;

<a href="GoodsOver.php?gid=<?PHP echo($row[0]); ?>" target=_blank>结束</a>

<?php } ?>

<?php } ?></td>

</tr>

<?php $m=$m+1;

}

if ($m==0)

{

echo("<tr><td bgcolor=#FFFFFF align=center colspan=6>暂无商品信息</td></tr>");

}

?>

在每个商品的后面都可能显示“修改”、“删除”和“结束”3 个超链接,用于对商品进行管理。因为用户只能对自己发布的商品信息进行管理,所以在显示此超链接时,需要满足如下条件:

if ($row[15]==$_SESSION["user_id"])

表Goods的第16个元素为OwnerId,即当前商品的发布者。上面的if语句表示商品的发布者等于当前用户。

11.9.6 修改商品信息

在11.9.5小节介绍的查看用户商品列表页面中,单击商品信息后面的“修改”超链接,可以打开修改商品信息的页面,如图11-20所示。

修改商品信息的页面与添加商品信息相似,请读者参照11.9.2小节和源代码理解。

figure_0264_0328

图11-20 修改商品信息

11.9.7 删除商品信息

在11.9.5小节介绍的查看用户商品列表页面中,单击商品信息后面的“删除”超链接,可以删除商品信息。删除商品信息的脚本为GoodsDelt.php,参数gid表示要删除的商品编号。

GoodsDelt.php的主要代码如下:

<?

//从数据库中批量删除信息

//读取要删除的编号

include('..\Class\Goods.php');

$gid=$_GET["gid"];

$obj = new Goods();

$obj->delete($gid);

print "删除成功!";

?>

程序调用Goods->delete()函数删除指定的商品信息。

11.9.8 结束商品信息

在11.9.5小节介绍的查看用户商品列表页面中,单击商品信息后面的“结束”超链接,可以结束商品信息。被结束的商品将不会出现在网站的交易商品列表中。结束商品信息的脚本为GoodsOver.php,参数gid表示要结束的商品编号。

GoodsOver.php的主要代码如下:

<?PHP

//从数据库中批量删除公告信息

//读取要删除的公告编号

include('..\Class\Goods.php');

$gid=$_GET["gid"];

$obj = new Goods();

$obj->SetOver($gid);

print("商品交易已结束!");

?>

程序调用Goods->SetOver()函数结束指定的商品信息,即将表Goods中的IsOver字段设置为1。

教程类别