Возможный дубликат:
Печать Ymd список бизнес-дат между двумя датами из MySQL с использованием PHP
Я новичок в таком программировании на PHP, так что несите меня.
Я хочу, чтобы пользователи могли отправлять две даты, начальную дату и дату окончания и из этих дат рассчитывать рабочие даты (исключая субботу и воскресенье) и вставлять их в MySQL
Например, если у меня есть эта форма …
<form action='update.php' method='post'> <input type='text' name='start_date'> <input type='text' name='end_date'> <input type='submit' name='submit'> </form>
update.php
if(isset($_POST['submit'])) { $start_date = $_POST['start_date']; //Let's say this is 2012-10-01 $send_date = $_POST['end_date']; //Let's say this is 2012-10-10 }
Теперь я хотел бы пропустить даты и создать запрос MySQL, который будет работать следующим образом:
INSERT INTO tbl_dates (date_value) VALUES ('2012-10-01'); INSERT INTO tbl_dates (date_value) VALUES ('2012-10-02'); INSERT INTO tbl_dates (date_value) VALUES ('2012-10-03'); INSERT INTO tbl_dates (date_value) VALUES ('2012-10-04'); INSERT INTO tbl_dates (date_value) VALUES ('2012-10-05'); INSERT INTO tbl_dates (date_value) VALUES ('2012-10-08'); INSERT INTO tbl_dates (date_value) VALUES ('2012-10-09'); INSERT INTO tbl_dates (date_value) VALUES ('2012-10-10');
Я знаю, что это, вероятно, не очень хорошее решение, но мне это нужно.
Как создать цикл?
$startDate = $start_date; $endDate = $send_date; // Convert to UNIX timestamps $currentTime = strtotime($startDate); $endTime = strtotime($endDate); // Loop until we reach the last day $result = array(); while ($currentTime <= $endTime) { if (date('N', $currentTime) < 6) { $result[] = date('Ym-d', $currentTime); } $currentTime = strtotime('+1 day', $currentTime); } // start insertion foreach($result as $value) { mysql_query("INSERT INTO tbl_dates (date_value) VALUES '".$value."'"); }
Источник: печать Ymd список бизнес-дат между двумя датами из MySQL с использованием PHP
О, мой бог! Я просто понял, что это нить, начатая вами. У вас уже есть свой ответ
Используйте date('N', $timestamp)
чтобы получить номер дня недели. Затем вы можете проверить, соответствует ли этот день вашим требованиям.
date('N')
PS date('N')
была введена в PHP 5.1.0
Код в вашем вкусе только на основе вашего PHP
тега ->
<?php $_POST['start_date'] = '2012-10-01'; $_POST['end_date'] = '2012-10-10'; $start = explode('-',$_POST['start_date']); $end = explode('-',$_POST['end_date']); $i = (int)$start[2]; for($i; $i<$end[2]; $i++) { $i = sprintf('%02d', $i); echo "INSERT INTO tbl_dates (date_value) VALUES ('2012-10-$i')"; echo "<br />"; } ?>
Вывод
INSERT INTO tbl_dates (date_value) VALUES ('2012-10-01') INSERT INTO tbl_dates (date_value) VALUES ('2012-10-02') INSERT INTO tbl_dates (date_value) VALUES ('2012-10-03') INSERT INTO tbl_dates (date_value) VALUES ('2012-10-04') INSERT INTO tbl_dates (date_value) VALUES ('2012-10-05') INSERT INTO tbl_dates (date_value) VALUES ('2012-10-06') INSERT INTO tbl_dates (date_value) VALUES ('2012-10-07') INSERT INTO tbl_dates (date_value) VALUES ('2012-10-08') INSERT INTO tbl_dates (date_value) VALUES ('2012-10-09')