* 1表示添加成功
* 2表示用户没有登录
* 3表示商品已添加过
* 4表示添加时出现错误
* 5表示没有商品添加
*/
$reback = '0';
if(empty($_SESSION['member'])){
$reback = '2';
}else{
$key = $_GET['key'];
if($key == ''){
$reback = '5';
}else{
$boo = false;
$sqls = "select id,shopping from tb_user where name = '".$_SESSION['member']."'";
$shopcont = $admindb->ExecSQL($sqls,$conn);
if(!empty($shopcont[0]['shopping'])){
$arr = explode('@',$shopcont[0]['shopping']);
foreach($arr as $value){
$arrtmp = explode(',',$value);
if($key == $arrtmp[0]){
$reback = '3';
$boo = true;
break;
}
}
if($boo == false){
$shopcont[0]['shopping'] .= '@'.$key.',1';
$update = "update tb_user set shopping='".$shopcont[0]['shopping']."' where name = '".$_SESSION['member']."'";
$shop = $admindb->ExecSQL($update,$conn);
if($shop){
$reback = 1;
}else{
$reback = '4';
}
}
}else{
$tmparr = $key.",1";
$updates = "update tb_user set shopping='".$tmparr."' where name = '".$_SESSION['member']."'";
$result = $admindb->ExecSQL($updates,$conn);
if($result){
$reback = 1;
}else{
$reback = '4';
}
}
}
}
echo $reback;
解释这部分代买
$key = $_GET['key'];为什么要获取key 不获取别的
(1) $tmparr = $key.",1";解释这部分代买
(2) $shopcont[0]['shopping'] .= '@'.$key.',1';解释这部分代买
$boo = false;解释这部分代买
$sqls = "select id,shopping from tb_user where name = '".$_SESSION['member']."'";
$shopcont = $admindb->ExecSQL($sqls,$conn);
if(!empty($shopcont[0]['shopping'])){
$arr = explode('@',$shopcont[0]['shopping']);
foreach($arr as $value){
$arrtmp = explode(',',$value); 解释这部分代买
if($key == $arrtmp[0]){
$reback = '3';
$boo = true;解释这部分代买
break;
}
(1) $tmparr = $key.",1";解释这部分代买
(2) $shopcont[0]['shopping'] .= '@'.$key.',1';解释这部分代买
$_GET['key'] 这个key传递的参数应该是商品的一个标识,有可能是编号等其它,就是用来标识商品的。
(1) $tmparr = $key.",1";解释这部分代买
如果用户表中没有任何商品信息,即添加商品标识进去,那个1应该是商品的数量
(2) $shopcont[0]['shopping'] .= '@'.$key.',1';解释这部分代买
如果用户表中已经存有商品信息,但不是与提交来的$key一样,即添加商品标识进去,@是用来隔开不同商品之间的连接符。
$boo = false;解释这部分代买
先设定一个标识符用于标识商品是否购卖,初始化为没有购卖。
$sqls = "select id,shopping from tb_user where name = '".$_SESSION['member']."'";
$shopcont = $admindb->ExecSQL($sqls,$conn);
if(!empty($shopcont[0]['shopping'])){
$arr = explode('@',$shopcont[0]['shopping']);
foreach($arr as $value){
$arrtmp = explode(',',$value); 解释这部分代买
//把商品字符分解成 商品标识和数量(那个逗号后面的应该是商品数量,看不到完整代码不好说。)
if($key == $arrtmp[0]){
//传进来的标识符和表中对比
$reback = '3';
$boo = true;解释这部分代买
//传进来的商品标识符已经存在与表中,即商品已经添加过,就将前面设定的$boo标识为true即,商品已经添加过。
break;
}追问
$tmparr = $key.",1";怎么解释
追答已经检测过表中没有任何商品数据了,所以不必要在前面添加分隔@号了!
和$shopcont[0]['shopping'] .= '@'.$key.',1' 代码意思相同。
不同的是检测到表中已经存有商品,$shopcont[0]['shopping'] .= '@'.$key.',1' ,所以要在前面加个@与原有商品隔开!
我估计这是数据结构的一个表示 后面.1是表示数量。
shopping字段应该是 产品ID,数量 这个一个格式