Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Cron i czasowe usuwanie ogłoszeń
nikestylex7
post
Post #1





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


Witam. Potrzebuję pomocy związku z ogłoszeniami które chcę umieścić na swojej stronie.

W bazie mam
id|active|starttime |stoptime
1 | 1 |2013-11-12 20:00:00|2013-11-13 20:00:00

Użytkownik dodał ogłoszenie i sobie wyjechał na kilka dni. Chciałbym teraz żeby skrypt po tym jak czas stoptime jest mniejszy od rzeczywistego zmienił wartość active na 0.

Macie jakieś pomysły? Dodam że nigdy nie robiłem cron'u oraz js znam średnio... Dzięki
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #2





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


A na cholerę do tego cron, tym bardziej JS (który przecież z cronem nie ma nic wspólnego)? Nie wiem, co warunkuje active, ale zamiast np. wczytywać ogłoszenia ze statusem active, wczytuj takie, dla których NOW() <= stoptime. Po co sobie życie utrudniać?
Go to the top of the page
+Quote Post
nikestylex7
post
Post #3





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


to jest powiązane z abonamentem jeśli abonament się skończy to niech zrobi update active na 0 lub jeśli ogłoszenie się skończy to niech zrobic też update active na 0. Może wiesz jak to rozwiązać. Chciałbym też uniknąć tego jak użytkownik wczyta ogłoszenia i siedzi na nich to żeby ogłoszenie po prostu znikło. Może po prostu użyć tutaj jquery i fade
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #4





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Wg mnie to przerost formy nad treścią. Załóżmy że użytkownik wczytał sobie ogłoszenie, zostawił otwarte na x godzin, w tym czasie wygasło. I chciałbyś w takim momencie by mimo iż miał uprzednio otworzoną stronę ogłoszenie nie było już widoczne? Nie ma to zbyt dużego sensu. Cron tu na pewno nie pomoże. Ale jeśli już się przy tym upierasz to możesz odpalić licznik w JS, który będzie odliczał sekundy do końca ogłoszenia, po wyzerowaniu przeładuje automatycznie stronę, tudzież za pomocą ajax-a zmieni status ogłoszenia. Chociaż nie wiem czy ta zmiana statusu ma głębszy sens, bo wystarczy sprawdzić warunki typu, do kiedy aktywne i do kiedy aktywny abonament, jeśli mniejszy od NOW() to ogłoszenia nie wyświetli.
Go to the top of the page
+Quote Post
nikestylex7
post
Post #5





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


hmmm użytkownik może dezaktywować ogłoszenie a czas może być większy od now() więc muszę też active sprawdzać
a więc proponujesz takie rozwiązanie:
ogłoszenia : wczytywać tylko te które czas jest większy od now() oraz status active jest 1 do tego jeszcze sprawdzać czy użytkownik ogłoszenia ma aktualny abonament czyli większy od now()

muszę jeszcze mieć sprawdzenie jeżeli czas ogłoszenia bądź abonamentu jest mniejszy od now() to zmieni wartość active na 0 i w abonamencie na 0

Co o tym myślisz może jakieś rozwiązanie?
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #6





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Wystarczy taki warunek (uwzględni ręczną zmianę przez użytkownika, abonament i ważność samego ogłoszenia).

  1. WHERE active = 1 AND end_date >= NOW() AND abonament_end_date >= NOW();


Oczywiście jeśli te wszystkie dane nie mieszczą się w jednej tabeli musisz użyć JOIN-ów. W każdym razie będą wyświetlane tylko te ogłoszenia, które spełniają wszystkie warunki, o których mówiłeś.
Go to the top of the page
+Quote Post
nikestylex7
post
Post #7





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


ok a co z update abonamentu na 0 i active na 0 po tym jak ogloszenie i abonament jest stary?
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #8





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Cytat(nikestylex7 @ 13.11.2013, 14:43:45 ) *
ok a co z update abonamentu na 0 i active na 0 po tym jak ogloszenie i abonament jest stary?


Z tego co piszesz active ma jedynie zadanie przełącznika, gdzie user ma możliwość ręcznego wyłączenia ogłoszenia. Sam nie musisz tego zmieniać. Bo tylko wszystkie 3 spełnione naraz warunki spowodują że ogłoszenie będzie widoczne. Tak więc gdy zajdzie jedno z następujących zdarzeń: user je wyłączy, skończy się abonament, skończy się ważność nie będzie ono widoczne. W kwestii formalnej, by user logując się na konto nie widział, że ogłoszenie jest dalej aktywne wystarczy, że podczas logowania usera sprawdzisz 2 warunki, czy abonament ważny i czy ogłoszenie ważne. W przypadku gdy jeden z warunków nie będzie spełniony możesz zmienić active na 0. Bo na prawdę nie ma sensu używać do tego crona. Nikt nie zauważy różnicy w którym momencie ogłoszenie zmieniło status, ani użytkownik, który je wystawił, ani ten który go szuka czy czyta.
Go to the top of the page
+Quote Post
nikestylex7
post
Post #9





Grupa: Zarejestrowani
Postów: 386
Pomógł: 7
Dołączył: 22.04.2010
Skąd: Ziemia

Ostrzeżenie: (20%)
X----


ok zaraz zmodyfikuje stronę zobaczymy jak to będzie śmigać w razie problemów będę pisał jak nie dam pomógł (IMG:style_emoticons/default/smile.gif)


Wszystko śmiga dzięki że oszczędziłeś mi kilka dni oraz zbędnego kodu. Pozdrawiam
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 04:21