Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql] Ostatnio odwiedzili profil...
Forum PHP.pl > Forum > Przedszkole
mrjozo
Witam,

interesuje mnie wyświetlanie w profilu osób które ostanio ten profil odwiedziły (coś takiego jak jest na tym forum - po wejściu na profil widzimy kto go osatnio odwiedził) Chciałbym wyświetlić ostatnie 10 osób.  Jak takie coś jest zrealizowane od strony bazy danych? Struktura tabeli. Jak to dobrze rozwiązać?

Proszę o jakieś pomysły.
dadexix
Hmmm jak na moje oko można by zrobić tabele w której są pola
|kiedy|ID_kto|ID_kogo|

i w kiedy masz masz date kiedy ktoś wszedł w ID_kto masz ID osoby która weszła a w ID_kogo masz id osoby na którą patrzyli.... jeśli chcesz mieć np. 10 to przy wejściu do profilu dajesz
Kod
$kiedy = mktime (date("s"),date("i"),date("H"),date("m"),date("d"),date("Y")); //ustalamy kiedy to kiedy...
mysql_query("insert into `tabela` (`kiedy`,`ID_kto`,`ID_kogo`) values ('".$kiedy."','".$kto."','".$kogo."')");//dodajemy info o wejsciu... za $kogo i $kto wstaw swoje wartości/zmienne...
mysql_query("delete from `tabela` sort by `kiedy` ASC limit 9,9999")//Usuwamy wszystkie informacje o wejsciach poza 10 najnowszymi.... Co do ASC/DESC zawsze mi sie myli... w każdym bądz razie chodzi mi o malejąco:P

Jak mówiłem... nie wiem czy tam ma być ASC czy DESC:P
Pozdro:D
mrjozo
To z dodatkową tabela to oczywisty pomysł winksmiley.jpg Ale dzięki

A to z usuwaniem to chyba nie wyszło, bo zostawi osatnie 10 rekordów ze wszystkich, a nie 10 ostatnich dla każdego użytkownika:)
dadexix
Kod
mysql_query("delete from `tabela` where `id_kogo`='".$kogo."' sort by `kiedy` ASC limit 9,9999")


nie pomyślałem:P
mrjozo
Jest jeszcze jeden problem.... w DELETE nie działa OFFSET i LIMIT 9,9999 nie zadziała.

Jak można inaczej usunąć rekordy z pominięciem pierwszych 10? (wersja mysql 4.0 - nie obsługuje podzapytań)

Poradziłem sobie tak:
  1. SELECT v_id FROM visitors WHERE visited_id=? ORDER BY v_id DESC LIMIT 9, 1

  1. DELETE FROM visitors WHERE visited_id=? AND v_id <= ?


W jednym zapytaniu to chyba trudno będzie...
dadexix
Cytat
Jest jeszcze jeden problem.... w DELETE nie działa OFFSET i LIMIT 9,9999 nie zadziała.
albo czytać nie umiem albo manual mówi że można dodawać do delete limit...

http://dev.mysql.com/doc/refman/4.1/en/delete.html
mrjozo
Napisałem, że nie działa OFFSET

LIMIT 1 <- to LIMIT
LIMIT 9,1 <- to LIMIT z OFFSETEM

Porównaj to: http://dev.mysql.com/doc/refman/4.1/en/delete.html i to: http://dev.mysql.com/doc/refman/4.1/en/select.html
dadexix
noo dziś ciągle robie jakieś nie dopatrzenia:P

dziś czytać nie umiem:p
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.