Mon formulaire a 2 champs - Time_from et Time_toDateTime ajouter 1 jour
Maintenant, je dois ajouter une entrée dans ma base de données pour chaque jour (s'il y a une différence entre les jours) ex. Time_from = 26/08/2013 08:00:00 et Time_to = 28/08/2013 16:00:00 Donc, dans ma base de données que je devrais obtenir 3 entrées
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
Donc, à cette fin, j'ai fait une méthode, où je trouve d'abord la différence entre ces 2 dates et puis j'utilise une boucle for qui fonctionnera autant de jours en différence ces 2 dates ont, et à la fin im juste en ajoutant 1 jour.
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');
}
}
Pour une raison quelconque, le code ne fonctionne pas.
Quand je supprimer le champ date_modify que le premier jour sera enregistré dans ma base de données (Devinez la boucle est seulement en cours d'exécution une fois alors)
Mais avec le date_modify dans mon code, seul le dernier jour est enregistré dans la base de données.
$ Interval> il n'y a pas d « jours » différence, quelques heures seulement, dans les temps donné si la boucle ne fonctionnera une fois – Anigel
Ainsi la différence entre les jours est seulement montré heures? – CreamYGEEK
http://phpfiddle.org/main/code/3r1-6hc êtes-vous sûr de ne pas vouloir $ interval-> h plutôt que interval-> d – Anigel