脚本宝典收集整理的这篇文章主要介绍了基于订阅的PHP和MySQL帐户管理,Timespan新增功能?,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
但是,较高评级的订阅(金牌>银牌>铜牌)应优先于较低评级的订阅.这意味着,如果用户同时拥有白银和黄金订阅,那么黄金订阅的时间跨度显然应首先使用,并且只有在用完之后才能使用白银订阅.
INT id INT user_id INT tyPE DATETIME start DATETIME end
我的问题是:如何确定用户帐户在某个特定时刻是否具有有效订阅以及该订阅的类型是什么?最重要的是,当有一个订阅runnnig时,我会对如何动态添加更多订阅感兴趣.
更精确的例子:
>用户在第1天购买5天的青铜 – >订阅“铜牌”从第1-5天开始.
>在第2天,用户决定另外要“银”并再购买5天
>现在的情况:青铜(第1天),银(第2-6天),青铜(第7-10天)
最好,我想在MySQL查询中完成大部分工作,但我不确定这是否可行.如果一切都失败了,我将不得不回归PHP.
谢谢你的时间!
$query = "SELECT * ". "From subscriptions_table ". "WHERE user_id = $user_id ". " AND start < '" . date("Y-m-d") ." 23:59:59' ". " AND end > '" . date("Y-m-d") ." 00:00:00' ". "ORDER BY type"; $results = MysqL_query($query);
这将为您提供订阅的每日粒度.如果你想要它只是分钟,然后取出时间并将日期格式调整为日期(“Y-m-d H:i:s”)
此处的结果将是此用户的订阅数组,其中最高类型为第一个.要评估要显示的层,您可以使用第一个结果,您可以通过$subscriptionRow = MysqL_fetch_array($results)找到;
当购买发生时,你将不得不做更多.基本上,遍历每个现有订阅并相应地调整时间.在此代码之前,请确保您没有使用上面的$subscriptionRow赋值:
$adjustmentQueries = array(); while ($subscriptionRow = MysqL_fetch_array($results)) { if ($subscriptionRow['type'] > $purchaseType) { } //do nothing else { $newDate = date("Y-m-d H:i:s",strtotime("+".$intNumDaysPurchased." days",strtotime($subscriptionRow['end']))); $adjustmentQueries[] = "UPDATE subscriptions_table SET end = '$newEndDate' WHERE id=$subscriptionRow['id']"; } } foreach ($adjustmentQueries as $adjquery) { MysqL_query($adjQuery); }
以上是脚本宝典为你收集整理的基于订阅的PHP和MySQL帐户管理,Timespan新增功能?全部内容,希望文章能够帮你解决基于订阅的PHP和MySQL帐户管理,Timespan新增功能?所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。