2011-02-07 63 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。这样,如果他们想要再次下载一首歌曲,只需检查它是否已经在下载表格中,并且如果您想检查其限制,请确保同一用户在表格中没有五个条目同一个月。

相关问题