Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][SQL]Wygaszanie ogłoszeń, Jak to zrobić.
MS1
post 17.08.2008, 15:33:30
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 3.08.2008

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


Witam.
Tworzę własny system ogłoszeń.
Ale nie wiem jak, zrobić system, który automatycznie kasował ogłoszenia.
Tzw. wygasanie ogłoszeń
Jeżeli ktoś ma pomysł jak to zrobić, dobrze by było ze skryptem.
To z góry dzięki

Ten post edytował MS1 17.08.2008, 15:36:06


--------------------
Check this out +++ Extremedomain.pl +++
Go to the top of the page
+Quote Post
Maxik
post 17.08.2008, 15:39:12
Post #2





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

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


Do bazy dodawaj timestamp, wtedy sprawdzaj czy już minęła określona ilość czasu, jeśli tak to kasowanie.


--------------------
Pomogłem? Kliknij przycisk Pomógł pod pomocnym Ci postem.
http://maxik.me/
Go to the top of the page
+Quote Post
MS1
post 17.08.2008, 17:02:48
Post #3





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 3.08.2008

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


Chciałbym, żeby to odbywało się automatycznie.
Bo ręcznie to dużo roboty.
Chyba, że napisać skrypt który sprawdzał by bazę i rekordy z określonym timestamp, byłyby usuwane.

Jaki kod napisać, żeby to działało??


--------------------
Check this out +++ Extremedomain.pl +++
Go to the top of the page
+Quote Post
Cysiaczek
post 17.08.2008, 17:06:32
Post #4





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Napisz normalnie i wstaw taki skrypt w do tzw CRON'a (coś a'la menedżer zadań). Było setki razy na forum.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
MS1
post 17.08.2008, 18:55:52
Post #5





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 3.08.2008

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


Dobra, już wiem jak to zrobić.
Nie pomyślałem o timestamp


--------------------
Check this out +++ Extremedomain.pl +++
Go to the top of the page
+Quote Post
GrayHat
post 17.08.2008, 19:06:03
Post #6





Grupa: Zarejestrowani
Postów: 566
Pomógł: 18
Dołączył: 23.08.2003
Skąd: Łomża

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


a nie lepiej trzymac wszystkie ogloszenia w bazie (ot tak?) a pokazywac tylko te, ktorych data dodania nie jest mniejsza od jakiegos tam zalozenia czasowego od teraz?


--------------------
*Note: No animals were killed durning the construction of this post.
Go to the top of the page
+Quote Post
MS1
post 18.08.2008, 18:22:10
Post #7





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 3.08.2008

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


Witam.
Napisałem taki skrypt.
Do bazy dodaje w kolumnie 'expire', date, która będzie dokładnie za 21 dni od utworzenia ogłoszenia.
Skrypt powinien spradzać i usuwać skrypty, które mają daną expire, większą niż zmienna $teraz

CODE
$teraz = date("Y-m-d H:i");
$zapytanie = DELETE FROM ogloszenia WHERE 'expire' => $teraz;
$idzapytania = mysql_query($zapytanie); ?>


Ale nie działa, i nie wiem czy to wina skryptu, czy poprostu założenie jest nie takie jakie być powinno

Z góry dzięki

Ten post edytował MS1 18.08.2008, 18:22:49


--------------------
Check this out +++ Extremedomain.pl +++
Go to the top of the page
+Quote Post
Puzi
post 18.08.2008, 18:33:38
Post #8





Grupa: Zarejestrowani
Postów: 231
Pomógł: 17
Dołączył: 26.08.2007

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


Zrób tak:

  1. <?php
  2. $utime=time();
  3. $exptime=$utime-180; // za 180 to mozesz dac cos innego to liczba sekund
  4.  
  5.  
  6. $zapytanie = DELETE FROM ogloszenia WHERE 'expire' < $exptime;
  7. $idzapytania = mysql_query($zapytanie);
  8. ?>


I nie musisz tego dawać do CRON'a jak podał Cysiaczek. Wystarczy że wkleisz ten kod na głównej stronie to jeśli jakiś użytkownik będzie wchodził to zak żażdym razem będzie samo się usuwało.

Ten post edytował Puzi 18.08.2008, 19:07:06
Go to the top of the page
+Quote Post
MS1
post 18.08.2008, 21:41:47
Post #9





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 3.08.2008

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


Aha OK. O to mi chodziło.
Tylko wyskakuje mi parse error w trzeciej linijce.
Nie wiem o co chodzi, jakaś kropka czy nawias??


--------------------
Check this out +++ Extremedomain.pl +++
Go to the top of the page
+Quote Post
Puzi
post 18.08.2008, 22:48:50
Post #10





Grupa: Zarejestrowani
Postów: 231
Pomógł: 17
Dołączył: 26.08.2007

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


Bo ja tylko skopiowałem twoje zapytanie i nie popatrzyłem jak ono jest zapisane

  1. <?php
  2. $utime=time();
  3. $exptime=$utime-180; // za 180 to mozesz dac cos innego to liczba sekund
  4.  
  5.  
  6. $zapytanie = "DELETE FROM `ogloszenia` WHERE `expire` < '$exptime'";
  7. $idzapytania = mysql_query($zapytanie);
  8. ?>


Teraz powinno działać
Go to the top of the page
+Quote Post
calebos
post 19.08.2008, 08:51:28
Post #11





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 22.02.2008

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


Jak juz ktos napisal to lepiej chyba zostawic ogloszenie.

Dodaj kolumne do tablicy z oglszeniami z flaga aktywna nieaktywna.

Wtedy zrob sobie skrypt ktory zmienia flage z 1 na 0 jesli minal juz czas ogloszenia, a w select dokladasz jedynie Where flaga=1.

Lepiej chyba trzymac sobie 'historie' - nikdy nie wiadomo czy kiedys Ci sie to moze nie przydac do statystyk czy cos tedy.
Go to the top of the page
+Quote Post
MS1
post 19.08.2008, 10:25:03
Post #12





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 3.08.2008

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


W sumie mógłbym zrobić, tak że zostają w bazie i np zmodyfikować ten skrypt, tak
że usuwa wiadomość dopiero np miesiąc po wygaśnięciu.
I mógłbym w takim przypadku, zrobić ponowne aktywowanie ogłoszenia, co by było wygodne dla userów
Wystarczy w sumie zmodyfikować, kod który już jest

I mam jeszcze jedno pytanie:
Jak zrobić by wyświetlała się data w jakiej, ogłoszenie jest jeszcze nadal aktualne.
Czyli okres ważności jaki pozostał do wygaśnięcia

$pozostalo = expiretime - time()
echo '$pozostalo';

I jak to wyświetlić, by było tylko np. ilość dni, albo ilości dni i godzin - bez sekund i minut

Z góry dzięki


--------------------
Check this out +++ Extremedomain.pl +++
Go to the top of the page
+Quote Post
calebos
post 19.08.2008, 11:19:34
Post #13





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 22.02.2008

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


Chcesz pokazac DD-MM-YY w ktorym wygasnie ogloszenie ?

Uzywaj do przechowywania czasu phpowego timestampa potem latwo to przerabiac.
W dokumentacji jest mktime() i date() ktorymi mozesz z timestampem zrobic co chcesz.
Go to the top of the page
+Quote Post
MS1
post 19.08.2008, 13:07:33
Post #14





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 3.08.2008

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


Nie kiedy wygaśnie, ale ile dni pozostało do wygaśnięcia.


--------------------
Check this out +++ Extremedomain.pl +++
Go to the top of the page
+Quote Post
calebos
post 19.08.2008, 13:46:57
Post #15





Grupa: Zarejestrowani
Postów: 104
Pomógł: 3
Dołączył: 22.02.2008

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


no to easy zapisales w bazie w formacie timestampa informacje kiedy wygasnie ogloszenie.
Teraz odejmij od tej wartosci time() a nastepnie roznice podziel sobie na co chcesz (np /60 = minutach) etc.

EDIT: Zakladam ze date zapisujesz w timestampie czyli w sekundach a nie w mysql date. Jesli w date to chyba najprosciej przerobic to na sekundy funkcjami o ktorych juz pisalem i zastosowac rozwiazanie jw.

Ten post edytował calebos 19.08.2008, 13:48:19
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 00:45