Функция PHP для циклических рабочих дней между двумя опубликованными датами

Возможный дубликат:
Печать 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'); 

Я знаю, что это, вероятно, не очень хорошее решение, но мне это нужно.

Как создать цикл?

Related of "Функция PHP для циклических рабочих дней между двумя опубликованными датами"

 $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')