Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Warunek dotyczący daty
Forum PHP.pl > Forum > Przedszkole
kosynier8
Witam
Tworzę pewien prosty system zamawiania posiłków. Posiłki na kolejny tydzień można zamawiać do czwartku włączenie. I teraz mam problem posiłki dodane do koszyka przed czwartkiem (zapisują się w bazie mysql) po wejściu do koszyka np w piątek można nadal zamówić. Kombinowałem ale coś mi nie idzie.
Proszę o pomoc - jaki warunek dodać aby takie danie już koszyku była zablokowane. Dzięki z góry za pomoc.
viking
http://php.net/manual/pl/function.date.php patrz format 'w'.
sabat24
Dodaj sobie kolumnę w bazie do kiedy można edytować dany posiłek w koszyku i ustaw datę na najbliższy czwartek od teraz. Następnie po wejściu w koszyk sprawdzasz, czy teraz <= do_kiedy_edytowac i jesli tak, to mozna, a jeśli nie, to nie.
Pyton_000
Raczej datę dodania. Potem wchodząc do koszyka sprawdzasz czy posiłki dodane do koszyka spełniają warunek: różnica dni najbliższy czwartek - data dodania. Jeśli ilość dni > 7 to wywalasz to zamówienie i dajesz komunikat userowi że zamówienie się przeterminowało.

W sumie to co @sabat24 zaproponował też ma sens i chyba jest prostsze smile.gif
sabat24
Tak właściwie to nie zaszkodziłyby te dwie daty, bo w razie potrzeby na podstawie daty dodania można od razu zmienić datę końca edycji, gdyby się nagle okazało, że z czwartku trzeba zrobić piątek.
Data końca edycji pozwala z kolei prostym porównaniem stwierdzić, czy użytkownik ma taką możliwość albo prostym zapytaniem usunąć wszystkie takie pozycje z koszyka.
trueblue
A nie możesz po wejściu do koszyka informować klienta na jaki tydzień (dzień) będzie złożone zamówienie?
Jeśli będzie to piątek, to zamówienie będzie dotyczyć tygodnia następnego po najbliższym, jeśli czwartek, to tego najbliższego.
Pyton_000
A może na każdy tydzień ma inne dania wink.gif
trueblue
To wtedy na najbliższy możliwy wynikający z kolejności rotacji.
Osobiście nie widzę od strony formalnej problemu, aby klient zamówił z takim wyprzedzeniem - to jego decyzja. Oczywiście pod takim warunkiem jak napisałem - informacji jakiego tygodnia będzie dotyczyć zamówienie.
kosynier8
Cytat(sabat24 @ 8.09.2017, 18:40:43 ) *
Dodaj sobie kolumnę w bazie do kiedy można edytować dany posiłek w koszyku i ustaw datę na najbliższy czwartek od teraz. Następnie po wejściu w koszyk sprawdzasz, czy teraz <= do_kiedy_edytowac i jesli tak, to mozna, a jeśli nie, to nie.

Co tydzień jest inne menu. Można zamawiać na najbliższe 3 tygodnie. Dopisanie daty w bazie to jest jakaś myśl ale jak ktoś doda posiłek do koszyka nie z najbliższego tygodnia tylko 3 tyg w przód do data możliwości zamówienia na najbliższy czwartek obowiązuje tylko w przypadku pierwszego posiłku - drugi może zostać w koszyku i może być zamówiony w ciągu kolejnych 2 tygodni. Albo najprościej ustawić w cronie czyszczenie koszyków w piątek po północy wink.gif
sabat24
Skoro masz datę każdego posiłku i datę do kiedy może go edytować, to nie ma problemu, by nie wyświetlać tych pozycji, których nie można po określonym czasie. W trakcie wyświetlania koszyka, możesz usuwać wpisy, które są już nieważne i/lub użyć crona jak mówisz, do czyszczenia śmieci.
kosynier8
Cytat(sabat24 @ 9.09.2017, 10:00:03 ) *
Skoro masz datę każdego posiłku i datę do kiedy może go edytować, to nie ma problemu, by nie wyświetlać tych pozycji, których nie można po określonym czasie. W trakcie wyświetlania koszyka, możesz usuwać wpisy, które są już nieważne i/lub użyć crona jak mówisz, do czyszczenia śmieci.

Zgadza się. Tylko teraz tu już bym poprosił o pomoc jak to zrobić aby do każdego posiłku dodawanego do koszyka z datą w danym tygodniu dopisać datę powiedzmy 00:00:01 piątek w tym samym tygodniu.


Nikt nie pomoże ?
Pyton_000
Kod
php > $da = new DateTime('friday');
php > var_dump($da);
php shell code:1:
class DateTime#2 (3) {
  public $date =>
  string(26) "2017-09-15 00:00:00.000000"
  public $timezone_type =>
  int(3)
  public $timezone =>
  string(13) "Europe/Berlin"
}
kosynier8
Chyba prościej znalazłem
  1. $piatek = date('Y-m-d', strtotime( "next friday", strtotime('2017-09-24')));
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.