KingCMS接觸之:模組開發(代碼部分之後台按鈕操作)

來源:互聯網
上載者:User

在king_def中不是有三個按鈕麼.他們預設都是ajax操作的.所以函數命名要以king_ajax_函數名. 這種方式.下面是三個秒殺的按鈕操作

function king_ajax_delete(){<br />global $king;<br />$king->access('portal_secondbuy_delete');<br />$list=kc_getlist();<br />$array=explode(',',$list);<br />$king->db->query("delete from %s_secbuydir where seid in ($list)");<br />kc_ajax('OK',"<p class=/"k_ok/">".$king->lang->get('system/ok/delete')."</p>",1);<br />}

這個比較簡單.kc_getlist會拿到複選框的數組.跟著用in操作刪除記錄.你只要改一下表名和複選框所用的列就可以.注意kc_ajax的最後參數1

 

function king_ajax_combing(){<br />global $king;<br />$king->access('portal_secondbuy_combing');<br />//取得所有的暫存資料表<br /> $res=$king->db->getRows("select table_name from information_schema.TABLES where table_name like 'king__temp%'");<br />if(!$res) $res=array();<br />foreach($res as $rs){<br />//暫存資料表的最後一條記錄是否寫到groupbuy表中<br />$currTable=$rs['table_name'];<br />//取到最後一條記錄<br />$inresult=$king->db->getRows_one("select usergroup,nprice,userid,username,ktitle,productID,nip,ndate,serial from ".$currTable." order by sbid desc limit 1");<br />$currTableLastarr=array(<br />'usergroup'=>$inresult['usergroup'],<br />'nprice'=>$inresult['nprice'],<br />'userid'=>$inresult['userid'],<br />'username'=>$inresult['username'],<br />'ktitle'=>$inresult['ktitle'],<br />'productID'=>$inresult['productID'],<br />'nip'=>$inresult['nip'],<br /> 'ndate'=>$inresult['ndate'],<br />'serial'=>$inresult['serial'],<br />'category'=>1,<br />);<br />$inprores=$king->db->getRows_one("select k_nstart,k_nfinish,unix_timestamp(k_nfinish)as symbol from %s__shop where kid=".$currTableLastarr['productID']);<br />$activstart=$inprores['k_nstart'];<br />$activfinish=$inprores['k_nfinish'];<br />//如果沒有Z加到groupbuy表中<br />if($inprores['symbol']-$currTableLastarr['ndate']>1) {<br /> $king->db->insert('%s_groupbuy',$currTableLastarr);<br />}<br />$countrs=$king->db->getRows_one("select count(distinct(nip))as ipnumber,count(userid)as number from ".$currTable);<br />$finalarr=array(<br /> "productID"=>$currTableLastarr['productID'],<br /> "ktitle"=>$currTableLastarr['ktitle'],<br /> "nprice"=>$currTableLastarr['nprice'],<br /> "number"=>$countrs['number'],<br /> "ipnumber"=>$countrs['ipnumber'],<br /> "userid"=>$currTableLastarr['userid'],<br /> "username"=>$currTableLastarr['username'],<br /> "nip"=>$currTableLastarr['nip'],<br /> "nstartdate"=>$activstart,<br /> "nendate"=>$activfinish,<br /> "ndate"=>$inresult['ndate'],<br />);<br />//統計資訊<br />$king->db->insert('%s_secbuydir',$finalarr);<br /> //刪除暫存資料表<br />$king->db->dropTable($currTable);<br />}<br />kc_ajax('OK',"<p class=/"k_ok/">".$king->lang->get('portal/secondbuy/ok')."</p>",1);<br />}
 

秒殺只能記錄結束的前一秒和結束時間的最後一秒.這兩個秒位上.反之的記錄都在暫存資料表中如果你想整理一下這次活動的資訊可以用的上這個操作.

 

$res=$king->db->getRows("select table_name from information_schema.TABLES where table_name like 'king__temp%'");
 if(!$res) $res=array();
 foreach($res as $rs){

      ...etc

 }

從mysql的架構資訊表中找到所有以king__temp為開頭的表名.開始整理暫存資料表資料

 

//暫存資料表的最後一條記錄是否寫到groupbuy表中
$currTable=$rs['table_name'];
//取到最後一條記錄
$inresult=$king->db->getRows_one("select usergroup,nprice,userid,username,ktitle,productID,nip,ndate,serial from ".$currTable." order by sbid desc limit 1");

這裡說一下我的表設計.groupbuy表中記錄的使用者的操作.後台需要的資料在secbuydir合稱是秒殺字典.如果正好在上面說的兩個秒位上有人點了串連.在group表中是有記錄的.反之沒有.我也不知道下一秒會發生什麼事情.這裡我就需要知道到底在最後的兩個秒位有沒有人.只要這樣作:

   1.取到暫存資料表的最後一條記錄的時間

   2.取產品活動的結束時間

兩者一減就知道了.

 $inprores=$king->db->getRows_one("select k_nstart,k_nfinish,unix_timestamp(k_nfinish)as symbol from %s__shop where kid=".$currTableLastarr['productID']);
 $activstart=$inprores['k_nstart'];
 $activfinish=$inprores['k_nfinish'];
  //如果沒有Z加到groupbuy表中
 if($inprores['symbol']-$currTableLastarr['ndate']>1) {                         
             $king->db->insert('%s_groupbuy',$currTableLastarr);
  }

 

到這裡你或許有不同觀點!樣本麼.如果在最後兩個秒位沒有人點取最後一條入到group表中

 

        $countrs=$king->db->getRows_one("select count(distinct(nip))as ipnumber,count(userid)as number from ".$currTable);
        $finalarr=array(
             "productID"=>$currTableLastarr['productID'],
             "ktitle"=>$currTableLastarr['ktitle'],
             "nprice"=>$currTableLastarr['nprice'],
             "number"=>$countrs['number'],
             "ipnumber"=>$countrs['ipnumber'],
             "userid"=>$currTableLastarr['userid'],
             "username"=>$currTableLastarr['username'],
             "nip"=>$currTableLastarr['nip'],
             "nstartdate"=>$activstart,
             "nendate"=>$activfinish,   
             "ndate"=>$inresult['ndate'],
        );
        //統計資訊
        $king->db->insert('%s_secbuydir',$finalarr);
        //刪除暫存資料表
        $king->db->dropTable($currTable);

整理活動資料入到secbuydir表中刪除暫存資料表

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.