okresowe wygaszanie ogłoszeń w serwisie

0

Witam. Chciałbym się dowiedzieć jak zrobić coś takiego: powiedzmy, że na stronie www mam jakieś ogłoszenia. Po miesiącu (lub jakimś innym czasie) ogłoszenie ma być widoczne z tym, że nie można z niego nić skopiować, jest szare a na nim jest napis np. "nieaktualne". Często takie rozwiązanie można spotkać w serwisach z ofertami o prace. Proszę o wskazówki jak to jest rozwiązane.

0

Napisz skrypt i uruchamiaj go przez CRONa raz dziennie. Generalnie można to robić na zasadzie schematu:

  1. Uruchom skrypt każdego dnia o godzinie 00:00
  2. Sprawdź każdy rekord, czy jego data publikacji nie jest dłuższa niż np. 30 dni
  3. Jeśli dłuższa to usuń/dodaj info o wygaśnięciu i leć dalej, jeżeli krótsza zostaw w spokoju i leć dalej.
0

Można to zrobić w PHP.
http://pl.php.net/date
http://pl.php.net/manual/pl/function.mktime.php

$czas_wygasniecia = mktime($godzina, $minuta, $sekunda, $miesiąc, $dzień, $rok [, $letni/zimowy ]);

W ten sposób zapiszemy ile sekund zostanie rozpoczętych licząc od czasu startu epoki Unixowej. Możemy na przykład podać:

$czas_wygasniecia = mktime(10, 59, 00, 2, 23, 2009);

Wtedy zapiszemy ilość sekund która upłynie między czasem rozpoczęcia epoki Unixowej, a godziną 1000, 23 dnia 2 miesiąca 2009 roku.

Czyli czas wygaśnięcia już mamy. Aktualną ilość sekund od epoki Unixowej poda nam funkcja time(), czyli warunek jest taki:

if ($czas_wygasniecia < time()) { //Jeśli rzeczywista ilość sekund jest większa od naszej założonej daty wygaśnięcia to wykonywany jest ten warunek
echo('Oferta wygasła!');
} else {
echo('Oferta jeszcze nie wygasła!');
}

Mam nadzieję, że zrozumiałeś.

Vendro, bo co pchać do tego crona? Przecież PHP nic samo nie zrobi bez użytkownika.

0

bo co pchać do tego crona? Przecież PHP nic samo nie zrobi bez użytkownika.

???
po co użytkownik do przemielenia plików czy rekordów z bazy danych? PHP równie dobrze może coś robić wywołane przez użytkownika jak i przez automat.

swoją drogą rozwiązanie Vendro jest bezsensowne. co Ty chcesz tam mielić? rekordy w bazie danych? przecież to kompletnie bez sensu. zmiana layoutu jest realizowana na etapie generowania strony (jeśli strona jest buforowana, to co za problem dodać odpowiedni warunek w systemie cache'ującym?). w praktyce wygląda to tak, jak napisał Monk.

żeby nic nie dało się zaznaczyć, dajesz przezroczystego diva rozciągniętego na 100% z position:fixed.

0
ŁF napisał(a)

żeby nic nie dało się zaznaczyć, dajesz przezroczystego diva rozciągniętego na 100% z position:fixed.

Chodziło mi właśnie o to co napisałeś. Czyli czy da się na siebie nałożyć jakby dwa divy :)??

// a niby czemu nie? - Ł

0
ŁF napisał(a)

(...)
swoją drogą rozwiązanie Vendro jest bezsensowne. co Ty chcesz tam mielić? rekordy w bazie danych? przecież to kompletnie bez sensu. zmiana layoutu jest realizowana na etapie generowania strony (jeśli strona jest buforowana, to co za problem dodać odpowiedni warunek w systemie cache'ującym?). w praktyce wygląda to tak, jak napisał Monk.

żeby nic nie dało się zaznaczyć, dajesz przezroczystego diva rozciągniętego na 100% z position:fixed.

Ja widzę ten problem tak, tworzę tabelę w bazie (chodzi głównie o ostatnią komórkę):

| id | tytul | tresc ogloszenia | data dodania | aktywne |

Wyciągnąłbym rekordy starsze niż X dni i dodał do komórki aktywne 0 w innym przypadku 1 wtedy przy generowaniu/wyświetlaniu wyników od razu wiesz czy ogłoszenie jest ważne czy nie i tutaj wystarczy utworzyć dwie klasy dla div'ów jedna standardowa - aktywna, a druga dla wygasłych ogłoszeń w której dajesz np.

div.nieaktywne {color:#cacaca; background:#eee;}
div.nieaktywne a,a:hover,a:visited {color:#cacaca; text-decoration:none;}

Ewentualnie fakt, można napisać sobie funkcję sprawdzającą datę dodania i obliczającą ile ogłoszenie już "wisi" w serwisie i przy wyświetlaniu wyników zmieniać klasy tak jak pisałem powyżej. I tutaj racja, wykorzystanie CRONa nie jest koniecznie, moja pomyłka. Zmylił mnie temat "okresowe wygaszanie" :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1