2011-06-08 59 views
0

林不知道要輸入的內容的搜索字詞PHP - 銀行如每月交易

我建立一個基本系統的出租代理記錄支付租金,我這樣做沒有問題。

下一步是做租房到期時的可重複交易,是他們的任何教程或建議如何完成這個壯舉?

例如:

租戶1需要在每個月的第一天支付£2租金。

租客2需要每四周支付1英鎊租金。

+0

瀏覽[cron](http://en.wikipedia.org/wiki/Cron) – JohnP 2011-06-08 09:52:46

回答

0

您應該使用的crontab這個非常任務,

# m h dom mon dow user command 
17 * * * * root php /path/to/hourly.php 
25 6 * * * root php daily.php 
47 6 * * 7 root php weekly.php 
52 6 1 * * root php monthly.php 

水木清華這樣的...

1

在一個表中,你將有

T1: 
Tenant_id | repeatable | next_due 

而在另一張表,你將有

T2: 
Tenant_id | Rent_date 

使用類似的查詢:

SELECT 
    * 
FROM 
T1 JOIN 
    (SELECT 
    tenant_id, MAX(Rent_date) LastRent 
    FROM 
    T2 
    GROUP BY 
    tenant_id 
) MaxT2 on T1.tenant_id = MaxT2.tenant_id 
WHERE 
    MaxT2.LastRent + repeatable > T1.next_due 

當你在這個SELECT找到的東西,對於當前的速率和在T1更新插入到T2交易next_due與Rent_date +重複

將這個腳本文件,並使用一個cron--讓它每天運行(早晨更好)。

這只是一個快速的答案。你將不得不照顧可重複的領域(例如,代表天數或週數,或每月的第10天)。

+0

感謝您的回覆,這就是我一直在尋找的。可重複性可能是一個問題,一些人每四周付一次,一些每月付一次。我想我可以找到一個解決方案,現在你已經提供了對查詢的洞察力。 – PHPAdam 2011-06-08 10:27:01

0

您可以爲每個付款記錄保留四個字段 - payment_date,recurring_days_interval,owe,price。 然後,在每天運行的cronjob上,檢查我們是否達到了天數間隔,如果是這樣,請將price添加到當前的owe。一旦該人支付部分或全部賬單,就從owe減少。

,你應該每天運行查詢應該是這樣的:

UPDATE payments SET owe=COALESCE(owe, 0)+COALESCE(price, 0) WHERE recurring_days_interval IS NOT NULL AND DATE_ADD(payment_date, INTERVAL recurring_days_interval DAY) > NOW()

如果你想停止重複,只需設置recurring_days_intervalNULL

+0

除了平衡系統,我需要更多的銀行交易系統。謝謝你,你的迴應幫助我理解了這個問題。 – PHPAdam 2011-06-08 10:30:08

+0

@PHPAdam我很高興它做了:) – 2011-06-08 10:37:01