1

重複の可能性:
PHPを使用してMySQLからの2つの日付の間の営業日のYmdリストを出力する

私はこの種のPHPプログラミングに慣れていないので、我慢してください。

ユーザーが開始日と終了日の2つの日付を投稿できるようにし、これらの日付から営業日(土曜日と日曜日を除く)を計算して、これらをに挿入できるようにします。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');

私はこれがおそらく良い解決策ではないことを知っていますが、それは私がそれを必要とする方法です。

ループを作成するにはどうすればよいですか?

4

3 に答える 3

1
$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('Y-m-d', $currentTime);
  }
  $currentTime = strtotime('+1 day', $currentTime);
}

// start insertion
foreach($result as $value)
{
  mysql_query("INSERT INTO tbl_dates (date_value) VALUES '".$value."'");
}

出典:PHPを使用してMySQLからの2つの日付の間の営業日のYmdリストを印刷する

ああ、神様!私はそれがあなたによって始められたスレッドであることに気づきました。あなたはすでにあなたの答えを持っています

于 2012-10-31T08:19:48.170 に答える
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')
于 2012-10-31T08:24:54.343 に答える
0

date('N', $timestamp)曜日の番号を取得するために使用します。次に、この日が要件に一致するかどうかを確認できます。

PSdate('N')はPHP5.1.0で導入されました

于 2012-10-31T08:15:24.717 に答える