php文章排序後進行前移後移,寫了語句沒起作用,不知道哪出問題了?

來源:互聯網
上載者:User
我對文章排序進行手動前移後移,但是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($oldpx<$maxpx){   $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;}


回複討論(解決方案)

會不會是文章的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($oldpx<$maxpx){   $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;}

紅色標註的那裡改成 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($oldpx<$maxpx){ $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;}

根據你那代碼我自己完整的示範了一遍,實現你要的效果了
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.