Ecshop功能改造范例
一. 看图:
a)
二. 当管理员选中此图片后,将其图片的ID,设计者的ID,设计者的Name传入SESSION中暂时储存,同时并发增加商品表单,当添加商品成功后返回的商品ID,一并存入”ecs_downpic”表中储存,方便处理成衣商品与图片和设计者的一对一关系.
三. 具体的实现示例:
a) 下单成衣
- i. Href地址中的参数,第一个传入的action,第二个传了一个id值过去.方便处理.
b) 在goods.php中,我们得加入的实现代码.
- i. elseif ($_REQUEST [‘act’] == ‘down_goods’)
- 1. 首先知道模板点击之后,处理代码的地方,实现代码的地方在这个if语块中.
- ii. 得定义一个处理结果的连接.
- 1. $link [] = array (‘href’ => ‘goods.php?act=add’, ‘text’ => ‘添加成衣商品’ );
a) 告诉代码,所有操作完成之后,连接是什么,会到哪里去.
- iii. $id = isset ( $_REQUEST [‘id’] ) ? $_REQUEST [‘id’] : 0;
- 1. 接收我们刚传过来的id值,因为需要这个id去找一些我们想要的数据.
- iv. 我们在这个功能中,首先得找到图片信息,然后去找到图片的设计者,最终达到商品和设计者之间的一种关系.
- 1. 那么首先我们得根据我们传过来的id值,去找到指定的图片信息:
a) $sql = ‘SELECT * FROM ‘ . $GLOBALS [‘ecs’]->table ( ‘uploadimg’ ) . ‘ WHERE id = ‘ . $id . ”;
b) $result = $db->getRow ( $sql );
- 2. 我们得到了图片的信息,那么因为图片和设计者是存在一种关系的,通过用户的user_id,我们可以得到用户的信息.那么我们去找到指定的用户信息.
a) if ($result [‘user_id’] != 0) {
b) $sql = ‘ SELECT user_id,user_name FROM ‘ . $GLOBALS [‘ecs’]->table ( ‘users’ ) . ‘ WHERE user_id = ‘ . $result [‘user_id’] . ”;
c) $res = $db->getRow ( $sql );
d) }
- 3. 我们通过图片的指定user_id去找到了用户信息,那么我们把该要保存的信息,暂时放到SESSION 当中去.
a) $_SESSION [‘pic_id’] = $result [‘id’];
b) $_SESSION [‘design_id’] = $result [‘user_id’];
c) $_SESSION [‘design_name’] = $result [‘user_name’];
- 4. 那么我们需要把这些SESSION的数据存入到另外一张表中去,这样方便之后的调用.
a) 创建一张”ecs_downpic”表,表中就是一个id,图片的id,设计者的id,设计者的name,图片成衣后的id,我们把这几个数据存入表中.看图:
b)
- 5. 创建后,我们得把这些数据存入数据库,存入之前,我们得确定一个图片只能下单成衣一次,那么数据是唯一性的,不能存在一个图片有多条数据的.
a) 首先我们得确定,这个表中没有我们传入当前图片的数据.
- i. $sql = “SELECT * FROM ” .$GLOBALS[‘ecs’]->table(‘downpic’) . ” WHERE pic_id = “.$result[‘id’];
- ii. $values = $db->getRow ( $sql );
b) 找出的数据,我们得判断下,看不存在的话,我们再把当前图片的信息存入表中:
- 1. if (empty ( $values )) {
- 2. $sql = “INSERT INTO ” . $GLOBALS [‘ecs’]->table ( ‘downpic’ ) . ” (pic_id,design_id,design_name) VALUES(” . $_SESSION [‘pic_id’] . “,” . $_SESSION [‘design_id’] . “,'” . $_SESSION [‘design_name’] . “‘)”;
- 3. $query = $db->query ( $sql );
- 4. $downid = $db->insert_id ();
- 5. if ($query) {
- 6. sys_msg ( ‘下单成衣成功’, 0, $link );
- 7. } else {
- 8. sys_msg ( ‘下单成衣失败’, 1, $link );
- 9. }
c) 我们成功存入一条数据后,我们要把存入数据的id返回回来,也把它封装到SESSION中去.
- i. $_SESSION [‘down_id’] = $downid;
- ii. if ($query) {
- iii. sys_msg ( ‘下单成衣成功’, 0, $link );
- iv. } else {
- v. sys_msg ( ‘下单成衣失败’, 1, $link );
- vi. }
- v. 我们把图片信息及用户的信息存入表中,之后就是添加商品成功之后,把商品的id存入ecs_downpic中.实现代码:
- 1. 在添加商品成功之后,会得到返回后的商品id号.
- 2. 得到之后,我们只需在后面加载我们需要更新的sql即好.实现代码:
a) 在admin/goods.php中添加商品的代码,在goods.php的684行会看到db->query($sql);
b) 687行代码会看到 $is_insert ? $db->insert_id () : $_REQUEST [‘goods_id’]; 得到添加此商品完返回的商品id.
c) 实现更新ecs_downpic表中,更新当前图片的商品id,达成商品和设计者的关系.我们在这需要获取到SESSION刚才封装的成衣id,down_id.然后更具down_id,去更新我们的数据.代码实现:
d) if ($goods_id) {
e) $sql = “UPDATE ” . $ecs->table ( ‘downpic’ ) . ‘ SET shop_id = ‘ . $goods_id . ‘ WHERE id = ‘ . $_SESSION [‘down_id’];
f) $db->query ( $sql );
g) }
完整代码:
goods.php?action=down_goods
elseif ($_REQUEST [‘act’] == ‘down_goods’) {
$link [] = array (‘href’ => ‘goods.php?act=add’, ‘text’ => ‘添加成衣商品’ );
$id = isset ( $_REQUEST [‘id’] ) ? $_REQUEST [‘id’] : 0;
if ($id != 0) {
$sql = ‘SELECT * FROM ‘ . $GLOBALS [‘ecs’]->table ( ‘uploadimg’ ) . ‘ WHERE id = ‘ . $id . ”;
$result = $db->getRow ( $sql );
if ($result [‘user_id’] != 0) {
$sql = ‘ SELECT user_id,user_name FROM ‘ . $GLOBALS [‘ecs’]->table ( ‘users’ ) . ‘ WHERE user_id = ‘ . $result [‘user_id’] . ”;
$res = $db->getRow ( $sql );
}
$result [‘user_name’] = $res [‘user_name’];
if ($result) {
$_SESSION [‘pic_id’] = $result [‘id’];
$_SESSION [‘design_id’] = $result [‘user_id’];
$_SESSION [‘design_name’] = $result [‘user_name’];
$sql = “SELECT * FROM ” .$GLOBALS[‘ecs’]->table(‘downpic’) . ” WHERE pic_id = “.$result[‘id’];
$values = $db->getRow ( $sql );
if (empty ( $values )) {
$sql = “INSERT INTO ” . $GLOBALS [‘ecs’]->table ( ‘downpic’ ) . ” (pic_id,design_id,design_name)
VALUES(” . $_SESSION [‘pic_id’] . “,” . $_SESSION [‘design_id’] . “,'” . $_SESSION [‘design_name’] . “‘)”;
$query = $db->query ( $sql );
$downid = $db->insert_id ();
$_SESSION [‘down_id’] = $downid;
if ($query) {
sys_msg ( ‘下单成衣成功’, 0, $link );
} else {
sys_msg ( ‘下单成衣失败’, 1, $link );
}
} else {
sys_msg ( ‘下单成衣失败’, 1, $link );
}
}
}
}
goods.php?act=insert 的代码
if ($goods_id) {
$sql = “UPDATE ” . $ecs->table ( ‘downpic’ ) . ‘ SET shop_id = ‘ . $goods_id . ‘ WHERE id = ‘ . $_SESSION [‘down_id’];
$db->query ( $sql );
}
具体的Ecshop的一个小功能改造已经完成.剩下的就是你去怎么把数据调用显示到你想实现的地方了.呵呵…
Need a translation service?
Please enter your personal details and we will contact you shortly
Words translated by CCJK
146,096,379Over 95% of our clients recommend our language services to others