PHP все даты между датой x и датой y

beau van der meer спросил: 12 мая 2018 в 05:00 в: php

У меня есть две даты ввода html:

Date 1 <input class="input100" type="date" name="date" placeholder="Date in.. dd/mm/yyyy">
Date 2 <input class="input100" type="date" name="date" placeholder="Date in.. dd/mm/yyyy">

И у меня есть этот код PHP:

$gdate = strtotime($_REQUEST['date']);
$gdate = date('Y-m-d', $gdate);

Я положил date в моей базе данных как $gdate, но как это сделать, чтобы он помещал все даты между датами и датой 1 и датой 2 автоматически в базу данных с определенным пределом, поэтому это не будет слишком

2 ответа

Есть решение
Sammitch ответил: 12 мая 2018 в 05:16

Через: http://php.net/manual/en/class.dateperiod.php#109846

$begin = new DateTime( '2012-08-01' );
$end = new DateTime( '2012-08-05' );
$end = $end->modify( '+1 day' ); $interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval ,$end);foreach($daterange as $date){
    echo $date->format("Y-m-d") . PHP_EOL;
}

Output:

2012-08-01
2012-08-02
2012-08-03
2012-08-04
2012-08-05
beau van der meer ответил: 12 мая 2018 в 05:25
Спасибо, что отлично работает! Есть ли способ, которым я могу установить лимит, чтобы моя база данных не разбилась, если кто-то поставил много дат?
Sammitch ответил: 12 мая 2018 в 05:28
Я не вижу, как что-то подобное может "сбить" базу данных, хотя вы можете проверить разницу между датами, если хотите ограничить размер диапазона по более практическим причинам.
beau van der meer ответил: 12 мая 2018 в 05:45
Скажем, кто-то заполняет дату 5-5-0000 и 5-5-10000, тогда будет много дат, которые могут привести к сбою базы данных.
Sammitch ответил: 12 мая 2018 в 05:56
Прокрутите тест и попробуйте. Вы будете удивлены, что нужно, чтобы взорвать даже полупристойную базу данных в наши дни.
beau van der meer ответил: 14 мая 2018 в 05:06
Я вставляю его вот так в базу данных foreach($daterange as $date){ $data = $date->format("Y-m-d") . PHP_EOL; echo $data; $sql = "INSERT INTO $stad (gnummer, beschikbare_data) VALUES ($query_klantnummer, $data)" or die(mysql_error()); if ($conn->query($sql) === TRUE) { echo "New record created successfully"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } } Однако он возвращает случайные годы, которые не являются правильными без дня и месяца в базе данных. Но когда я повторяю $ data, он возвращает правильные даты с месяцем / днем?
Dhanu K ответил: 12 мая 2018 в 05:08

Это мое полезное для вас

function date_range($first, $last, $step = '+1 day', $output_format = 'd/m/Y' ) {    $dates = array();
    $current = strtotime($first);
    $last = strtotime($last);    while( $current <= $last ) {        $dates[] = date($output_format, $current);
        $current = strtotime($step, $current);
    }    return $dates;
}