php文章排序后进行前移后移,写了语句没起作用,不知道哪出问题了?
我对文章排序进行手动前移后移,但是sql语句好像就没起作用,哪位帮忙看看,我是实在看不出来了
/*前移*/
if($result=='up'){
$sql0=$db->query(select sort from .$db->table('product'). where id='$id');
$row=$db->fetch_array($sql0);
if(!$row){
$oldpx=1;
}else{
$oldpx=$row['sort'];
}
if($oldpx>1){
$db->query(update .$db->table('product'). set sort=sort+1 where sort=.$oldpx-1);
$db->query(update .$db->table('product'). set sort=sort-1 where id=.$id);
}
header(location:product_list.php\n);
exit;
}
/*后移*/
if($result=='down')
{
$sql1=$db->query(select sort from .$db->table('product'). where id='$id');
$row=$db->fetch_array($sql1);
if(!$row){
$oldpx=9999;
}else{
$oldpx=$row['sort'];
}
$sql2=$db->query(select sort from .$db->table('product'). order by sort desc limit 1);
$rows=$db->fetch_array($sql2);
if(!$rows){
$maxpx=9999;
}else{
$maxpx=$rows['sort'];
}
if($oldpxquery(update .$db->table('product'). set sort=sort-1 where sort=.$oldpx+1);
$db->query(update .$db->table('product'). set sort=sort+1 where id=.$id);
}
header(location:product_list.php\n);
exit;
}
------解决思路----------------------
会不会是文章的sort并不是连续的,就前移来说你取sort-1作为调教来修改有可能没修改到数据库记录,然后即使当前sort+1可能还是没有比下个文章的sort大
------解决思路----------------------
/*前移*/
if($result=='up'){
?$sql0=$db->query(select?sort?from?.$db->table('product').?where?id='$id');
?$row=$db->fetch_array($sql0);
?if(!$row){
$oldpx=1;
?}else{
$oldpx=$row['sort'];
?}
?if($oldpx>1){
?$db->query(update?.$db->table('product').?set?sort=sort+1?where?sort=.$oldpx-1);
?$db->query(update?.$db->table('product').?set?sort=sort-1?where?id=.$id);
?}
?header(location:product_list.php\n);
?exit;
}
/*后移*/
if($result=='down')
{
$sql1=$db->query(select?sort?from?.$db->table('product').?where?id='$id');
$row=$db->fetch_array($sql1);
if(!$row){
?$oldpx=9999;
}else{
?$oldpx=$row['sort'];
}
$sql2=$db->query(select?sort?from?.$db->table('product').?order?by?sort?desc?limit?1);
$rows=$db->fetch_array($sql2);
if(!$rows){
?$maxpx=9999;
}else{
?$maxpx=$rows['sort'];
}
if($oldpxquery(update?.$db->table('product').?set?sort=sort-1?where?sort=.$oldpx+1);
?$db->query(update?.$db->table('product').?set?sort=sort+1?where?id=.$id);
}
header(location:product_list.php\n);
exit;
}
红色标注的那里改成 where id='.$id.');
------解决思路----------------------
if($_request[action] == up){
uppx($_request['goods_id']);
}
elseif($_request[action] == down){
downpx($_request['goods_id']);
}
function uppx($goods_id)
{
if(!$goods_id)
{
$goods_id=0;
}
$sql=$globals['db']->query(select px from .$globals['db']->table('product'). where id=.$goods_id);
$rs=$globals['db']->fetch_array($sql);
if(!$rs)
{
$oldpx = 1;
}
else
{
$oldpx = $rs['px'];
}
if($oldpx>1){
$oldpx=$oldpx-1;
$globals['db']->query(update .$globals['db']->table('product'). set px=px+1 where px=.$oldpx);
$globals['db']->query(update .$globals['db']->table('product'). set px=px-1 where id=.$goods_id);
}
header(location:product_list.php);
exit;
}
function downpx($goods_id)
{
if(!$goods_id)
{
$goods_id=0;
}
$sql=$globals['db']->query(select px from .$globals['db']->table('product'). where id=.$goods_id);
$rs=$globals['db']->fetch_array($sql);
if(!$rs)
{
$oldpx=1;
}
else
{
$oldpx=$rs['px'];
}
//假如$oldpx=1的话
$sql1=$globals['db']->query(select * from .$globals['db']->table('product'). order by px desc limit 1);
$row=$globals['db']->fetch_array($sql1);
if(!$row)
{
$maxpx=999;
}
else
{
$maxpx=$row['px'];
}
//到这里那么最大的$maxpx=4
if($oldpxquery(update .$globals['db']->table('product'). set px=px-1 where px=.$oldpx);
$globals['db']->query(update .$globals['db']->table('product'). set px=px+1 where id=.$goods_id);
}
header(location:product_list.php);
exit;
}
根据你那代码我自己完整的演示了一遍,实现你要的效果了