Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: data - jeśli minęły 4 dni to...
Forum PHP.pl > Forum > PHP
Najki
Więc mam datę. Jej postać to:
200410202115 (2004 rok 10 miesiąc 20 dzień 21 godzina 15 minut)
Chcę do cron'a wrzucić skrypt, który co dobę będzie sprawdzał czy w tabeli bazy danych istnieją użytkownicy z niepotwierdzoną rejestracją, których data rejestracji jest starsza o minimum 4 dni od obecnej (wtedy usuwani). Jak go napisać? Może wykorzystuję zły format daty? Może po prostu go przekształcić na chwilę do innego formatu i wtedy sprawdzić datę? W jaki sposób dokonać tego sprawdzenia?
Jojo
Ja zawsze używam do zapisywania czasu formatu Unix'owego (jakby ktoś nie wiedział jest to ilość sekund od 1. stycznia 1970). Na takim formacie najłatwiej się operuje, ponieważ możesz wykonywać na nim dowolne działania arytmetyczne. Gdy masz czas podany w takiej formie wystarczy dwie daty od siebie odjąć i w prosty sposób uzyskujesz ich "odległość". Wtedy tylko taką "odległość" pprzyrównujesz do jakiejś stałej i wiesz czy wpis danego użytkownika możesz usunąć czy też nie.
Najki
timestamp ?
No dobra, ale jak to wtedy przekształcić na zwykłą datę, aby wyświetlić na stronie? snitch.gif
Jojo
Zajrzyj do manuala i poczytaj o funkcji date" title="Zobacz w manualu PHP" target="_manual. Szczególnie zwróć uwagę na jej drugi parametr.
mls
Gdybyś posiadał listę użytkowników w tabeli MySQL nie byłoby żadnego problemu smile.gif Wtedy wystarczy usunąć wszystkich, których data rejestracji jest mniejsza od NOW() - INTERVAL 4 DAY smile.gif
Najki
Więc powinno to wyglądać mniej więcej tak?
  1. <?php
  2. $za_cztery_dni = mktime (0,0,0,date(&#092;"Y\"),date(\"m\"),date(\"d\")+1,date(\"H\"),date(\"i\"));
  3. ?>

No, ale to mi sprawdzi, czy dany użytkownik nadaje się do usunięcia, jak już go pobiorę z bazy. Wolałbym wybrać z bazy tylko tych, którzy nadają się do usunięcia. Chyba, że wybrałbym po prostu tych, którzy nie mają aktywowanego konta i wtedy bym porównywał daty, ale jednak wolałbym pobrać tylko tych użytkowników, którzy mają konto nieaktywne (aktywne='0') i datę rejestracji (rejestracja='200410202219') mniejszą o cztery dni od dzisiejszej. Jak to zrobić? Jak wykorzystać to INTERVAL ?

Trochę bez sensu byłoby sprawdzać wszystkich userów po kolei :/. Jak jest ich np. 60 000 to by było 60 000 zapytań do bazy i 60 000 instrukcji warunkowych w pętli :/.
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.