2011-02-07 87 views
1


確定當用戶登錄到我的網站時,他或她會被帶到一個頁面,在那裏他們可以預覽他們可能想要下載的mp3。當他們點擊下載按鈕時,我的php腳本會檢查他們是否可以下載mp3。每個用戶每個月可以下載5次節拍。如果用戶有5個下載走後,腳本更新這樣mysql在一個字段中存儲多個條目

$q=mysql_query("UPDATE user_info SET mdr = '4' WHERE username = '$y'"); 

數據庫,但如果由於某種原因,用戶必須下載的MP3再次他將失去一個下載。 所以要停止這個每個MP3將有一個ID號碼。因此當用戶下載mp3時,其ID將被保存在名爲paidbeats的字段中。該腳本將查看數據庫並檢查用戶是否已經下載了mp3;如果是這樣,用戶將不會被收取再次下載。我如何去做這件事,比方說,如果用戶付了一個帶有ID號碼10015的mp3,然後第二天他買了1526.我怎麼能在一個字段中存儲多個ID,或者是否有更好的方法來做到這一點?

+1

哇,你僅管理使用整個文本塊中有2個標點符號...來吧,句點和逗號是免費的。不要害怕使用它們。此外,偶爾出現拼寫錯誤或拼寫錯誤也可以,但請花一點時間來校對您的帖子。這只是很好的禮節。 – 2011-02-07 16:20:22

+1

@Lèsemajesté如果您沒有幫助解決問題,請不要在這裏發佈 – acrs 2011-02-07 17:05:24

回答

1

爲什麼不保留一個跟蹤下載/用戶的表格(與節拍使用無關)。該表格(例如user_downloads)可能有user_id,track_id,paid_date(可選)。

這將允許你向用戶報告,當他們買了軌道:

SELECT track_id,paid_date FROM user_downloads WHERE user_id=$userID 

它允許你跟蹤一個特定的軌道的所有下載:

SELECT user_id,paid_date FROM user_downloads WHERE track_id=$trackID 

,它可以讓你跟蹤所有過去的下載量,而不僅僅是上個月的下載量。

您的下載過程是:

  1. 覈對,如果發現下載日誌(SELECT track_id FROM user_downloads WHERE user_id=$userID and track_id=$trackID)下載請求 - 再次讓用戶下載。
  2. 允許用戶購買曲目並相應地調整他們的點數。

維護您現有的user_info表以追蹤可用的下載積分。如果你想允許信用額度翻一番(每個月+5個信用點,所以如果他們一個月沒有使用它們,下一個會得到10個信用額度),這一點尤其重要,如果你想讓用戶購買更多的信用額度,或者如果你有獲得超過5個學分(而不是硬編碼的5信貸規則)

不同的賬戶類型(以上SQLS只是一個例子,總是逃不過你的輸入乏;))

3

在一個字段中存儲多個條目明顯違反first normal form

創建一個名爲(說)user_purchases的新表格,其中包含兩列user_iditem_id(也可能是其他日期,價格等列)。

每一行代表一個特定的購買。

+0

這是一個很好的方法,但是您需要第三個表格「purchase」來包含每個購買的MP3的信息。 – 2011-02-07 16:11:31

1

您應該使用單獨的表來存儲用戶下載了哪些MP3。該表需要包含用戶ID,MP3 ID和時間戳。

每次歌曲下載時,您都可以在表格中插入一個條目。要確定用戶是否超出其每月配額5,請在數據庫中查詢SELECT COUNT(1)以獲取用戶標識以及當月的所有時間戳。

1

我想創建一個表來保存所有下載的曲目,用類似於以下的模式:

user_downloads(downloadID, userID, download_date)

然後,無論何時用戶下載歌曲,都會爲該下載插入一個新條目到user_downloads。這樣,如果他們想要再次下載一首歌曲,只需檢查它是否已經在下載表格中,並且如果您想檢查其限制,請確保同一用戶在表格中沒有五個條目同一個月。

相關問題