![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 2 Dołączył: 20.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam problem z wymyśleniem skryptu, który będzie utrzymywał stan 5 rekordów w bazie danych, a dokładnie pięciu ostatnich gości na profilu użytkownika.
Interesuje mnie coś, co będzie usuwać ostatniego gościa, a jednocześnie lub za pomocą drugiego zapytania SQL będzie dodawać nowego gościa, o ile nie ma go jeszcze w bazie. Nie wiem czy zrozumiale wytłumaczyłem o co mi chodzi. Może ktoś z was ma jakiś pomysł, z góry dzieki za pomoc. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Administratorzy Postów: 1 552 Pomógł: 211 Dołączył: 7.07.2009 Skąd: NJ ![]() |
Sprawdzasz ile pozycji jest aktualnie w bazie jeżeli miej niż 5 to tylko sprawdzasz czy nazwa gościa jest w bazie. Jeżeli nie to dodajesz. W przypadku, gdy liczba pozycji jest równa 5 to sprawdzasz czy nazwa gościa jest w bazie, jeżeli tak to nie robisz nic, jeżeli jej nie ma to usuwasz najstarszą nazwę gościa i dodajesz nową. W czym masz konkretnie problem?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 748 Pomógł: 388 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
ja bym to zrobił tak:
- tworzysz tabelę gdzie zapisujesz gości odwiedzających profil włącznie z datetime - pobierasz sobie 5 ostatnich (LIMIT 0,5) gości sortując po datetime i GROUP BY po id użytkownika w ten sposób masz to bez żadnego sprawdzania i innego kombinowania |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 19 Pomógł: 2 Dołączył: 20.02.2010 Ostrzeżenie: (0%) ![]() ![]() |
Wiem, że trzeba będzie użyć pola z wartościa time(); i porównać czas dodania wszystkich rekordów, jeżeli dodaje nowy, usuwam najstarszy, tylko jak mam sprawdzić, który z nich ma najmniejszą wartość
![]() @tehaha nie chce bałaganu w bazie, niepotrzebne wartości chce usunąć Ten post edytował djkrc 22.08.2010, 16:03:07 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 429 Pomógł: 195 Dołączył: 6.10.2008 Skąd: Kraków/Tomaszów Lubelski Ostrzeżenie: (0%) ![]() ![]() |
ORDER BY `Time` ASC LIMIT 1 w zapytaniu
-------------------- O! Zimniok :P
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Administratorzy Postów: 1 552 Pomógł: 211 Dołączył: 7.07.2009 Skąd: NJ ![]() |
Wiem, że trzeba będzie użyć pola z wartościa time(); i porównać czas dodania wszystkich rekordów, jeżeli dodaje nowy, usuwam najstarszy, tylko jak mam sprawdzić, który z nich ma najmniejszą wartość ![]() Może to są głupie pytania ale nie zbyt długo zajmuję się php i jak nigdy nie mam pojęcia jak to zrobić Segregując (Order by) i ustawiając DESC lub ASC. 1. Tworzysz tabelę w bazie z polami np. czas i user 2. Możesz najpierw sprawdzić ilu userów jest w tabeli i 2.1 Jeżeli jest ich mniej niż 5 to sprawdzasz czy dany user jest wpisany -> jeżeli nie, to wrzucasz go do tabeli 2.2 Jeżeli userów jest już 5 to sprawdzasz czy dany user jest wpisany -> jeżeli nie, najpierw sprawdzasz, który z tych w tabeli jest najstarszy (ORDER BY czas) i go usuwasz. Potem dodajesz najnowszego :-) @tehaha A jak chcę trzymać w tabeli tylko 5 rekordów i ani jednego więcej? ;-) Ten post edytował Daiquiri 22.08.2010, 16:07:36 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 03:39 |