[問題]一個週期自動增加版主薪水

phpBB 2 MOD Support
無論是官方或非官方認證之外掛,安裝與使用問題討論。
(發表文章請按照公告格式發表,違者砍文)

版主: 版主管理群

頭像
H.T.Demon
竹貓忠實會員
竹貓忠實會員
文章: 368
註冊時間: 2002-09-26 00:24
聯繫:

[問題]一個週期自動增加版主薪水

文章 H.T.Demon »

小第繼上次改變虛擬銀行
http://phpbb-tw.net/phpbb/viewtopic.php?t=16472
的兌幣功能後,最近又手癢想自行補上一個功能\r
就是每到一個週期就自動幫版主們加上一筆薪水

那不會每個月自己手動增加就好了 :-?
用這樣不就得了

代碼: 選擇全部

update phpbb_users set user_money = user_money + 100 WHERE user_level = 2
是沒錯,但是我怕會忘記(其實是懶惰 :oops: )

我嘗試著依樣畫葫蘆
打開admin/admin_bank.php
找到

代碼: 選擇全部

$sql[] = "select config_value from " . CONFIG_TABLE . " where config_name='bankconvert'";
[color=red]後面加上[/color]
$sql[] = "select config_value from " . CONFIG_TABLE . " where config_name='paytime'";
	$sql[] = "select config_value from " . CONFIG_TABLE . " where config_name='wages'";
(兩個SQL也加入兩個對應的值)
找到

代碼: 選擇全部

<tr><td class="row2"><span class="gensmall">利息結算週期 </span></td><td class="row2"><input type="text" name="payset" size="5" value="'.$bankinfo[3].'" maxlength="3"></td></tr>
後面加上

代碼: 選擇全部

<tr><td class="row2"><span class="gensmall">版主薪水結算週期 </span></td><td class="row2"><input type="text" name="paytime" size="5" value="'.$bankinfo[5].'" maxlength="3"></td></tr>
	<tr><td class="row2"><span class="gensmall">版主薪水金額 </span></td><td class="row2"><input type="text" name="wages" size="5" value="'.$bankinfo[6].'" maxlength="6">虛擬貨幣</td></tr>
找到

代碼: 選擇全部

if (isset($HTTP_POST_VARS['convert'])) { $usql[] = "update ". CONFIG_TABLE . " set config_value='".$HTTP_POST_VARS['convert']."' where config_name='bankconvert'"; }
後面加上

代碼: 選擇全部

if (isset($HTTP_POST_VARS['paytime'])) { $usql[] = "update ". CONFIG_TABLE . " set config_value='".$HTTP_POST_VARS['paytime']."' where config_name='paytime'"; }
	if (isset($HTTP_POST_VARS['wages'])) { $usql[] = "update ". CONFIG_TABLE . " set config_value='".$HTTP_POST_VARS['wages']."' where config_name='wages'"; }
存檔~

上述這些做法應該是沒錯 :oops:

再來就是開啟Bank.php
找到

代碼: 選擇全部

global $db,$board_config,$userdata,$template,$phpEx;
	if(((int)$board_config['bankpayouttime']+(60*60*24*(int)$board_config['bankpayset']))<time())
	{
		$userdata["user_bank"]=(int)($userdata["user_bank"]+($userdata["user_bank"]*(float)$board_config['bankfees']));
		$sql="update ". USERS_TABLE." set user_bank= ".$userdata["user_bank"]." where user_id=".$userdata['user_id']."";
		if ( !($db->sql_query($sql)) ) { message_die(GENERAL_MESSAGE, '利息無法存入!'); }
		$sql="update ". CONFIG_TABLE." set config_value = '".time()."' where config_name='bankpayouttime'";
		if ( !($db->sql_query($sql)) ) { message_die(GENERAL_MESSAGE, '發放利息時間無法設定!'); }
		$board_config['bankpayouttime']=time();
	}
我把整段複製然後在

代碼: 選擇全部

$board_config['bankpayouttime']=time();
	}
後面貼上並修改成

代碼: 選擇全部

if(($board_config['paytime'])>time())
	{
		$sql="update ". USERS_TABLE." set user_money= ".$userdata["user_money"]+$board_config['WAGES']." where WHERE user_level ="2";
		if ( !($db->sql_query($sql)) ) { message_die(GENERAL_MESSAGE, '薪水無法存入!'); }
		$sql="update ". CONFIG_TABLE." set config_value = '".time()."' where config_name='paytime'";
		if ( !($db->sql_query($sql)) ) { message_die(GENERAL_MESSAGE, '發放薪水時間無法設定!'); }
		$board_config['paytime']=time();
	}
找到

代碼: 選擇全部

'BANK_PAYTIME'=>date('Y-m-d H:i: s',(int)$board_config['bankpayouttime'],
在後面加上

代碼: 選擇全部

'BANK_WAGESPAYTIME'=>$board_config['paytime'],
		'BANK_WAGES'=>$board_config['WAGES']))
存檔~

接著我就是看看是否能正常瀏覽虛擬銀行
點進後整篇空白,顯然是Bank.php有改錯 :-|

請大大們技術支援 :oops: 麻煩了
依夢兒
竹貓忠實會員
竹貓忠實會員
文章: 2013
註冊時間: 2002-11-20 00:07

文章 依夢兒 »

我記得有看過一支外掛,叫作「支薪系統」,功能應該就是你要的。
如果你這個修改方式搞不定的話,可以試試安裝那支外掛。

這支外掛是在哪裡看到的,我忘了.... ^^||
竹貓這邊先搜尋一下吧!!
有任何關於 phpBB 或是架站的問題,請在論壇上公開發表出來,大家一起討論。
請不要丟私人訊息問我,因為私訊是用來聊私事的。
這樣作對於解決您的問題一點幫助也沒有,也很沒有效率,小弟我一概謝絕。



搜尋是一種美德,在發問之前,請多加利用頂端的文章搜尋功能,搜尋可能的關鍵字。
確定您想問的問題找不到答案後,再發問。
linekin
星球普通子民
星球普通子民
文章: 21
註冊時間: 2003-05-05 07:19

文章 linekin »

語法上有點小錯,在最後那部分的SEARCH

代碼: 選擇全部

'BANK_PAYTIME'=>date('Y-m-d H:i: s',(int)$board_config['bankpayouttime'],
應該是

代碼: 選擇全部

'BANK_PAYTIME'=>date('Y-m-d H:i: s',(int)$board_config['bankpayouttime'])


ADD 應該是\r

代碼: 選擇全部

,'BANK_WAGESPAYTIME'=>$board_config['paytime'], 
      'BANK_WAGES'=>$board_config['WAGES']


date的右刮號沒有放好
頭像
H.T.Demon
竹貓忠實會員
竹貓忠實會員
文章: 368
註冊時間: 2002-09-26 00:24
聯繫:

文章 H.T.Demon »

依夢兒 寫:我記得有看過一支外掛,叫作「支薪系統」,功能應該就是你要的。
如果真的沒辦法,再來找這個MOD^^"
多謝依夢兒
linekin 寫:語法上有點小錯,在最後那部分的SEARCH
謝謝大大的指教^^
但是Bank.php裡運作加薪水的程式碼還是有錯>"<
動感超人
竹貓忠實會員
竹貓忠實會員
文章: 485
註冊時間: 2003-02-09 14:06

文章 動感超人 »

『支薪系統』這個mod是yuan大大開發的....
但是他好像沒在竹貓發表過

尊重yuan大大....所以沒辦法貼到這邊來
如果您想用的話,請到yuan大大的網站上找找看吧\r

PS. yuan大大的網站....流量好像爆了...
無限期蒸發中
頭像
H.T.Demon
竹貓忠實會員
竹貓忠實會員
文章: 368
註冊時間: 2002-09-26 00:24
聯繫:

文章 H.T.Demon »

原來Bank.php的那段

代碼: 選擇全部

if(($board_config['paytime'])>time()) 
   { 
      $sql="update ". USERS_TABLE." set user_money= ".$userdata["user_money"]+$board_config['WAGES']." where WHERE user_level ="2"; 
      if ( !($db->sql_query($sql)) ) { message_die(GENERAL_MESSAGE, '薪水無法存入!'); } 
      $sql="update ". CONFIG_TABLE." set config_value = '".time()."' where config_name='paytime'"; 
      if ( !($db->sql_query($sql)) ) { message_die(GENERAL_MESSAGE, '發放薪水時間無法設定!'); } 
      $board_config['paytime']=time(); 
   }
要改成以下才對^^"

代碼: 選擇全部

		if($board_config['paytime']>time())
	{
		$sql="update ". USERS_TABLE." set user_money= ".$userdata["user_money"]+$board_config['WAGES']." where user_level =".$userdata['user_level']."2";
		if ( !($db->sql_query($sql)) ) { message_die(GENERAL_MESSAGE, '薪水無法存入!'); }
		$sql="update ". CONFIG_TABLE." set config_value = '".time()."' where config_name='paytime'";
		if ( !($db->sql_query($sql)) ) { message_die(GENERAL_MESSAGE, '發放薪水時間無法設定!'); }
		$board_config['paytime']=time();
	}
改完後,最不確定是否能正常運作的就是這段\r

代碼: 選擇全部

if($board_config['paytime']>time())
	{
		$sql="update ". USERS_TABLE." set user_money= ".$userdata["user_money"]+$board_config['WAGES']." where user_level =".$userdata['user_level']."2";
畢竟這段是關鍵(汗...)

再來是找到\r

代碼: 選擇全部

'BANK_PAYTIME'=>date('Y-m-d H:i: s',(int)$board_config['bankpayouttime']),
要改成

代碼: 選擇全部

'BANK_PAYTIME'=>date('Y-m-d H:i: s',(int)$board_config['bankpayouttime']),
		'BANK_WAGESPAYTIME'=>$board_config['paytime'], 
    		'BANK_WAGES'=>$board_config['WAGES'])
改完後就可以讓Bank.php正常瀏覽@__@
linekin
星球普通子民
星球普通子民
文章: 21
註冊時間: 2003-05-05 07:19

文章 linekin »

運作上可能有點問題, 建議把發薪時間的判定改成跟利息發放的一樣,
頭像
H.T.Demon
竹貓忠實會員
竹貓忠實會員
文章: 368
註冊時間: 2002-09-26 00:24
聯繫:

文章 H.T.Demon »

linekin 寫:運作上可能有點問題, 建議把發薪時間的判定改成跟利息發放的一樣,
:-o 有問題,請問是哪裡?
我是比較想把兩個時間分開 :oops:
要是哪天想在短時間幫版主加薪會比較方便 :mrgreen:
linekin
星球普通子民
星球普通子民
文章: 21
註冊時間: 2003-05-05 07:19

文章 linekin »

咦, 你好像沒有上次發放薪水時間的欄位,


先說一下time()的功能,
php手冊 寫:Description
int time ( void )

Returns the current time measured in the number of seconds since the Unix Epoch (January 1 1970 00:00:00 GMT).
所以基本上你目前的判別式應該永遠不會成立 @@

可以改成

代碼: 選擇全部

if(((int)$board_config['wagepayouttime']+(60*60*24*(int)$board_config['paytime']))<time()) 
記得增加wagepayouttime相關設定
頭像
H.T.Demon
竹貓忠實會員
竹貓忠實會員
文章: 368
註冊時間: 2002-09-26 00:24
聯繫:

文章 H.T.Demon »

linekin 寫:咦, 你好像沒有上次發放薪水時間的欄位
:-o 頭開始暈了~_~"
我在Bank.php增加了

代碼: 選擇全部

'BANK_WAGESOUTTIME'=>date('Y-m-d H:i:s',(int)$board_config['bankpaywagesouttime']),
然後把

代碼: 選擇全部

if(((int)$board_config['wagepayouttime']+(60*60*24*(int)$board_config['paytime']))<time()) 
改成了

代碼: 選擇全部

if(((int)$board_config['bankpaywagesouttime']+(60*60*24*(int)$board_config['paytime']))<time()) 
在admin_bank.php增加了

代碼: 選擇全部

$sql[] = "select config_value from " . CONFIG_TABLE . " where config_name='bankpaywagesouttime'";

代碼: 選擇全部

<tr><td class="row2"><span class="gensmall">薪水最後一次結算時間</span></td><td class="row2">'.date('Y-m-d H:i:s',$bankinfo[7]).' </td></tr>
這樣子一來 薪水就有獨立的最後一次結算時間 不知道這樣子改有沒有錯 :-(
頭像
H.T.Demon
竹貓忠實會員
竹貓忠實會員
文章: 368
註冊時間: 2002-09-26 00:24
聯繫:

文章 H.T.Demon »

剛剛那篇算是在搞笑=.=.....
我增加好上次發放薪水時間的欄位
但是SQL的值不知道要填什麼才好@__@"
現在進入銀行都會顯示

系統訊息
版主薪水無法存入!

是不是因為SQL裡wagepayouttime的值沒填上的關係?

順便問一下^^"
運作程式碼裡的

代碼: 選擇全部

$sql="update ". USERS_TABLE." set user_money= ".$userdata["user_money"]+$board_config['wages']." where user_level =".$userdata['user_level']."2";
是否有錯呢? 麻煩大大幫忙訂正 謝謝
linekin
星球普通子民
星球普通子民
文章: 21
註冊時間: 2003-05-05 07:19

文章 linekin »

代碼: 選擇全部

$sql="update ". USERS_TABLE." set user_money= ".$userdata['user_money']."+".$board_config['wages']." where user_level =2"; 

wagepayouttime先填0吧
頭像
H.T.Demon
竹貓忠實會員
竹貓忠實會員
文章: 368
註冊時間: 2002-09-26 00:24
聯繫:

文章 H.T.Demon »

linekin 寫:

代碼: 選擇全部

$sql="update ". USERS_TABLE." set user_money= ".$userdata['user_money']."+".$board_config['wages']." where user_level =2"; 

wagepayouttime先填0吧
終於等到大大的回覆
馬上來修正^__^ 感謝

目前初步修改好
系統錯誤的問題也解決 :mrgreen:
Demo: http://htd.no-ip.org
MOD生效日期應該是明天凌晨2點多時 :-|
頭像
H.T.Demon
竹貓忠實會員
竹貓忠實會員
文章: 368
註冊時間: 2002-09-26 00:24
聯繫:

文章 H.T.Demon »

經過仔細觀察,終於會加薪了Q__Q
不過每次一到測試加薪日
後台虛擬銀行裡版主薪水結算週期 會變成"薪水最後一次結算時間"@@
就是SQL裡bankpayouttime的值"1059673180"
薪水最後一次結算時間也沒更新.... 好像是bank.php裡有弄錯...
總之~ 先把整個程序張貼出來,請幫忙Debug 謝謝 :oops:

******************************************
Open Bank.php
Find

代碼: 選擇全部

if ( !($db->sql_query($sql)) ) { message_die(GENERAL_MESSAGE, '發放利息時間無法設定!'); }
		$board_config['bankpayouttime']=time();
	}
After ADD

代碼: 選擇全部

if(((int)$board_config['wagepayouttime']+(60*60*24*(int)$board_config['paytime']))<time()) 
	{
		$sql="update ". USERS_TABLE." set user_money= ".$userdata['user_money']."+".$board_config['wages']." where user_level =2";
		if ( !($db->sql_query($sql)) ) { message_die(GENERAL_MESSAGE, '版主薪水無法存入!'); }
		$sql="update ". CONFIG_TABLE." set config_value = '".time()."' where config_name='paytime'";
		if ( !($db->sql_query($sql)) ) { message_die(GENERAL_MESSAGE, '發放薪水時間無法設定!'); }
		$board_config['paytime']=time();
	}
Find

代碼: 選擇全部

'BANK_PAYTIME'=>date('Y-m-d H:i: s',(int)$board_config['bankpayouttime']),
After ADD

代碼: 選擇全部

'BANK_WAGESOUTTIME'=>date('y-m-d H:i: s',(int)$board_config['wagepayouttime']),
		'BANK_WAGESPAYTIME'=>$board_config['paytime'], 
    		'BANK_WAGES'=>$board_config['wages'])
Open Admin/admin_bank.php
Find

代碼: 選擇全部

$sql[] = "select config_value from " . CONFIG_TABLE . " where config_name='bankconvert'";
After ADD

代碼: 選擇全部

$sql[] = "select config_value from " . CONFIG_TABLE . " where config_name='paytime'";
	$sql[] = "select config_value from " . CONFIG_TABLE . " where config_name='wages'";
	$sql[] = "select config_value from " . CONFIG_TABLE . " where config_name='wagepayouttime'";
Find

代碼: 選擇全部

<tr><td class="row2"><span class="gensmall">利息結算週期 </span></td><td class="row2"><input type="text" name="payset" size="5" value="'.$bankinfo[3].'" maxlength="3"></td></tr>
After ADD

代碼: 選擇全部

<tr><td class="row2"><span class="gensmall">版主薪水結算週期 </span></td><td class="row2"><input type="text" name="paytime" size="5" value="'.$bankinfo[5].'" maxlength="3"></td></tr>
	<tr><td class="row2"><span class="gensmall">版主薪水金額 </span></td><td class="row2"><input type="text" name="wages" size="5" value="'.$bankinfo[6].'" maxlength="6">星之幻幣</td></tr>
	<tr><td class="row2"><span class="gensmall">薪水最後一次結算時間</span></td><td class="row2">'.date('Y-m-d H:i: s',$bankinfo[7]).' </td></tr>
Find

代碼: 選擇全部

if (isset($HTTP_POST_VARS['convert'])) { $usql[] = "update ". CONFIG_TABLE . " set config_value='".$HTTP_POST_VARS['convert']."' where config_name='bankconvert'"; }
After ADD

代碼: 選擇全部

if (isset($HTTP_POST_VARS['paytime'])) { $usql[] = "update ". CONFIG_TABLE . " set config_value='".$HTTP_POST_VARS['paytime']."' where config_name='paytime'"; }\r
	if (isset($HTTP_POST_VARS['wages'])) { $usql[] = "update ". CONFIG_TABLE . " set config_value='".$HTTP_POST_VARS['wages']."' where config_name='wages'"; }
Open bank_body.tpl
Find

代碼: 選擇全部

客戶總數 : {BANK_PEO}<br />
After ADD

代碼: 選擇全部

版主薪水 : {BANK_WAGES} 星之幻幣<br />
銀行利率 : {BANK_INTEREST}<br />
最近計薪時間 : <br />{BANK_WAGESOUTTIME}<br />
ADD SQL

代碼: 選擇全部

INSERT INTO phpbb_config VALUES ('wagepayouttime', '0');
INSERT INTO phpbb_config VALUES ('paytime', '31');
INSERT INTO phpbb_config VALUES ('wages', '10');
linekin
星球普通子民
星球普通子民
文章: 21
註冊時間: 2003-05-05 07:19

文章 linekin »

第一個ADD應該是

代碼: 選擇全部

if(((int)$board_config['wagepayouttime']+(60*60*24*(int)$board_config['paytime']))<time()) 
   { 
      $sql="update ". USERS_TABLE." set user_money= ".$userdata['user_money']."+".$board_config['wages']." where user_level =2"; 
      if ( !($db->sql_query($sql)) ) { message_die(GENERAL_MESSAGE, '版主薪水無法存入!'); } 
      $sql="update ". CONFIG_TABLE." set config_value = '".time()."' where config_name='[color=red]wagepayouttime[/color]'"; 
      if ( !($db->sql_query($sql)) ) { message_die(GENERAL_MESSAGE, '發放薪水時間無法設定!'); } 
      $board_config['[color=red]wagepayouttime[/color]']=time(); 
   }
主題已鎖定

回到「外掛問題討論」