moja forma ma 2 Fields - Time_from i Time_toDateTime dodać 1 dzień
teraz muszę dodać wpis w mojej bazy danych dla każdego dnia (jeśli tam jest różnica między tymi dni) ex. Time_from = 26.08.2013 08:00:00 i Time_to = 28.08.2013 16:00:00 Więc w mojej bazy danych i powinien dostać 3 wpisy
Time_from = 2013-08-26 08:00:00 and Time_to = 2013-08-26 16:00:00
Time_from = 2013-08-27 08:00:00 and Time_to = 2013-08-27 16:00:00
Time_from = 2013-08-28 08:00:00 and Time_to = 2013-08-28 16:00:00
Więc w tym celu zrobiłem Metoda, w której najpierw znajduję różnicę między tymi dwiema datami, a następnie używam pętli for, która będzie działać przez tyle dni w różnicy tych dwóch dat, a na końcu im właśnie dodaję 1 dzień.
public function createOffer($offer)
{
$time_from = new DateTime($offer->time_from);
$time_to = new DateTime($offer->time_to);
$interval = $time_from->diff($time_to);
for ($counter = 0; $counter <= $interval->d; $counter++) {
$offer->time_from = $time_from->format('Y-m-d H:i:s');
$offer_time_to = new DateTime($time_from->format('Y-m-d'));
$offer_time_to->setTime($time_to->format('H'), $time_to->format('i')
, $time_to->format('s'));
$offer->time_to = $offer_time_to->format('Y-m-d H:i:s');
if ($offer->validate()) {
$offer->save();
}
date_modify($time_from, '+1 day');
}
}
Z jakiegoś powodu kod nie działa.
Kiedy usunąć pole date_modify tylko pierwszy dzień zostanie zapisany w mojej bazy danych (Guess dla pętli działa tylko raz potem)
Ale z date_modify w moim kodzie, tylko ostatni dzień jest zapisana w baza danych.
$ interval-> d nie ma „dzień” różnica, tylko godziny, w czasach podane więc pętla będzie działać tylko raz – Anigel
więc różnicę między dniami jest pokazywany tylko w godz.? – CreamYGEEK
http://phpfiddle.org/main/code/3r1-6hc czy na pewno nie chcesz $ interwał-> h zamiast interwału-> d – Anigel