![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 276 Pomógł: 0 Dołączył: 30.06.2010 Ostrzeżenie: (10%) ![]() ![]() |
Witam!
Mam pytanko - mam w bazie pole "username" - tam jest zapisany nick usera. Teraz tworzę sklep i chcę zrobić zmianę nicku za sms. No i w profilu usera, jeśli zmienił nick chociaż raz, chcę wyświetlić o tym informacje, np. User X zmienił nick dnia Y na nick: Z No i mogę dodać pole w bazie o nazwie np. "old username", "date_change_username" i będzie ok. Ale chodzi o to, że jeśli user zmieni nick np. 3 razy to to mi już wyjdzie z obiegu, bo to będzie zapisywać zmiany tylko z obecnego na nowy (i wtedy obecny wchodzi jako stary, a nowy jako nowy - wiadomo). Jak zapisać większą ilość zmian nicku? I jak uzyskać liczę, ile user razy zmienił ten nick? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
Oddzielna tabela gdzie każdy rekord opisuje zmianę nicku?
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 276 Pomógł: 0 Dołączył: 30.06.2010 Ostrzeżenie: (10%) ![]() ![]() |
Dobrze, ale spójrz.
Powiedzmy, że teraz mam nick Mody23 i zmieniam go na Mody. W bazie mam pola username (obecny nick usera) i old_username (stary nick usera). Czyli zmieniając z mody23 na mody w bazie wygląda to tak: $row['username'] = mody $row['old_username'] = mody23 No i teraz powiedzmy kolejny raz chcę zmienić nazwę użytkownika. To co, znów muszę tworzyć nowe pole w bazie? Jeśli user zmieni nick usera 50 razy, to ja muszę tworzyć 50 pól w bazie? Na pewno jest jakiś sposób na to i właśnie chciałbym żebyście mnie nakierowali na ten sposób. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
tabela nick_change
id, user_id, from_nick, to_nick [, created - tu data utworzenia rekordu] Przy każdej zmianie zapisujesz kolejny rekord. Kod 1 1 "Mody23" "Mody" 2 1 "Mody" "Mody 24" Pobierasz wszystkie rekordy z tej tabeli i dzięki temu masz historię zmian -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 276 Pomógł: 0 Dołączył: 30.06.2010 Ostrzeżenie: (10%) ![]() ![]() |
Chcę się upewnić tylko.
User ma nick: Mody23 i zmienia go na Mody. Kod wygląda tak:
Dobrze myślę? EDIT: Nie, źle bo to będzie uaktualniać rekord w bazie, a ja mam utworzyć nowy rekord. Możesz mi podać jakiś przykład jak to powinno być zrobione? EDIT2:
Tak? Ten post edytował Mody23 23.10.2011, 11:33:22 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
1) Zmiana z nicku mody23 na mody
2) Zmiana z nicku mody na mody24
Każda zmiana nicku = nowy rekord, więc dlaczego robisz UPDATE? -------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 276 Pomógł: 0 Dołączył: 30.06.2010 Ostrzeżenie: (10%) ![]() ![]() |
Jesteś wielki. Ostatnie pytanie.
Jak ma to wyglądać z tym polem ID? Bo wiadomo, że pole ID w bazie samo sobie ustala ID, więc ja mam mieć tam wpisane NULL, tak? I jak mogę uzyskać datę utworzenia rekordu? Tak, żeby wstawić to w INSTERT INO za pomocą zmiennej? Ten post edytował Mody23 23.10.2011, 11:38:33 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 8 989 Pomógł: 1550 Dołączył: 8.08.2008 Skąd: Słupsk/Gdańsk ![]() |
W przykładzie masz użycie funkcji NOW(), która zwraca Ci aktualną datę.
Jeżeli id jest auto_increment to nie musisz go uwzględniać przy insercie. -------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 276 Pomógł: 0 Dołączył: 30.06.2010 Ostrzeżenie: (10%) ![]() ![]() |
Ale ja w bazie mam zapisane różne inne wyniki i one są chyba inaczej zapisywane niż NOW();
Spójrz, przykładowe pole "date": Typ pola: int(11) i zawartość: 1319311489 Jak takie coś uzyskać tutaj, w tej zmianie nicku? To jest ta funkcja NOW(); ? To jest chyba ta metoda, co zlicza ilość sekund, które upłynęły od 1970r. tylko też nie wiem jak to się nazywa, ani jak uzyskać taki efekt? Ten post edytował Mody23 23.10.2011, 11:46:10 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 30.06.2025 - 00:33 |