【发布时间】:2016-04-08 01:57:15
【问题描述】:
我正在尝试将开始日期和结束日期值写入数据库。
我在这里调用这个创建共享日期函数来向数据库添加值。
当我调用这个函数时
函数 1st 获取 $sharing 值。 $sharing 的值将是“1 week”或“2 week”或“3 week”...
$from_date 将包含一个日期值。
$product_life 的值类似于 1 year 或 2 year...
我想在迭代中将值添加到数据库中。说。
我有一个$product_life = 1 year,我有一个from_date = 2016-02-23,还有sharing_basis= 1 week
当我使用上述值调用createSharingdates($productId) 时,它将通过order_datetime 获取该产品的用户,然后为每个用户添加共享日期。但在这里我只能生成1 个周期的共享日期。
For.ex 如果有 4 个用户,我只能为 4 个用户生成一次日期。 喜欢
user_id: 1
product_id: 24
start_date: 2015-02-02
end_date: 2015-02-09
user_id: 2
product_id: 24
start_date: 2015-02-10
end_date: 2015-02-17
user_id: 3
product_id: 24
start_date: 2015-02-18
end_date: 2015-03-26
user_id: 4
product_id: 24
start_date: 2015-02-27
end_date: 2015-03-05
我想做的是生成共享日期直到product_life 结束
例如:
如果产品寿命有product_life 作为一年,我想在共享基础上生成那一年的日期。这样输出就会像..
输出:
user_id: 1
product_id: 24
start_date: 2015-02-02
end_date: 2015-02-09
user_id: 2
product_id: 24
start_date: 2015-02-10
end_date: 2015-02-17
user_id: 3
product_id: 24
start_date: 2015-02-18
end_date: 2015-02-26
user_id: 4
product_id: 24
start_date: 2015-02-27
end_date: 2015-03-05
user_id: 1
product_id: 24
start_date: 2015-03-06
end_date: 2015-03-13
user_id: 2
product_id: 24
start_date: 2015-03-14
end_date: 2015-03-21
user_id: 3
product_id: 24
start_date: 2015-03-28
end_date: 2015-03-35
user_id: 4
product_id: 24
start_date: 2015-03-42
end_date: 2015-03-49
... continues
代码:
function createSharingdates($productId){
$sharing_basis = getSharingBasis($productId);
$product_life = getlife($productId);
$from_date = getStartdate($productId);
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT user_id FROM orders WHERE product_id='$productId' ORDER BY order_datetime";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$product_id = $productId;
while($row = $result->fetch_assoc()) {
$user_id = $row["user_id"];
$to_date = date('Y-m-d', strtotime('+'.$sharing_basis, strtotime($from_date)));
addSharingDates($product_id,$user_id,$from_date,$to_date);
$from_date = $to_date;
}
$conn->close();
}
}
【问题讨论】:
-
您需要在可用的几周内创建一个循环(从
$from_date到$product_life),在每个轮次中获取下一个用户(您可能希望将其放入一个数组中,这样您就可以轻松从一个到下一个,到达终点时回到起点)。 PHP DateTime 类将帮助您获取开始和结束日期。