[英]Converting PHP date range to MYSQL individual dates
我有一個可用性日歷,當前正在其中逐個添加日期,並使用mysql查詢來確定是否存在具有特定日期的行,並將當天的類別更改為“已預訂”(紅色)。
我想在我的表單中輸入一個范圍,並通過php(或mysql)將其處理成多個單獨的日期。 我的日期格式為M / D / YYYY或MM / DD / YYYY,兩者都可以接受。 不幸的是,當我建立日歷時,我沒有使用sql中的日期格式輸入條目,而是使用了varchar。
有沒有一種方法可以進入我的表單,例如1/1 / 2014-1 / 3/2014並讓php將其轉換為1/1 / 2014、1 / 2 / 2014、1 / 3/2014,然后有一個mysql INSERT查詢一次插入多個值?
if (empty($_POST) === false && empty($errors) === true) {
$adcp_data = array(
'date' => $_POST['date'],
'customer' => $_POST['customer'],
'notes' => $_POST['notes'],
);
insert_adcp($adcp_data);
header('Location: adcp.php?success');
exit();
insert_adcp函數如下所示:
function insert_adcp ($adcp_data) {
array_walk($adcp_data, 'array_sanitize');
$fields = '`' . implode('`, `', array_keys($adcp_data)) . '`';
$data = '\'' . implode('\', \'', $adcp_data) . '\'';
mysql_query("INSERT INTO `adcp` ($fields) VALUES ($data)");
}
我的解決方法和最后的解決方法是添加多個文本輸入,並手動添加多個日期,因此我只需要提交一次即可。 但是范圍要快得多!
最后要注意的是,如果我可以擁有多個條目,則將每個日期的“客戶”和“便箋”值保持在驚人的范圍內。 我准備失去那些領域,盡管要做這項工作。 謝謝
就像是:
$day = new DateTime($_POST['range_start']);
$end = new DateTime($_POST['range_end']);
$all_dates = array();
while ($day <= $end){
$all_dates[] = $day;
$day->add(new DateInterval('P1D'));
}
這將為您提供一系列DateTime對象,每個對象代表您范圍內的一天。 您可以通過調用DateTime :: format()並將格式為'm / d / Y'的字符串傳遞回字符串中。
至於將多個條目輸入MySQL,INSERT語法允許INSERT INTO table (column) VALUES (row1), (row2), ... (rowN)
(這顯然沒有經過測試,也沒有最終使用的代碼-只是從內存中寫入此Web表單中……您必須使用輸入環境衛生和范圍檢查等功能將其正確寫出。)
檢查從輸入值相匹配的范圍格式,捕捉部分,並從 和日期產生。
if (preg_match('%\A(?<fromMonth>\d{1,2})/(?<fromDay>\d{1,2})/(?<fromYear>\d{4})-(?<toMonth>\d{1,2})/(?<toDay>\d{1,2})/(?<toYear>\d{4})\Z%', $str, $res)) {
$dates['from'] = mktime(0, 0, 0, $res['fromMonth'], $res['fromDay'], $res['fromYear']);
$dates['to'] = mktime(0, 0, 0, $res['toMonth'], $res['toDay'], $res['toYear']);
}
生成介於和之間的日期。
for ($date = $dates['from']; $date <= $dates['to']; $date = strtotime('+1 day', $date) ){
$dates['range'][] = date('m-d-Y', $date);
}
我認為, strtotime更適合您的情況。 您可以在php.net網站上找到定義: http : //php.net/manual/en/function.strtotime.php
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.