在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表中刪除暫存資料表