![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 29.05.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Mam do zrobienia profil uzytkownika. Uzytkownik moze zaznaczyc od 1 do 200 checkboxow. I wrzucanie tego w jeden wiersz raczej odpada. Wiec robie dodatkowa tabele i tam laduja wszystkie wartosci w pojedycznych wierszach.
I teraz pytanie , jak rozwiazac update profilu? Czy kasowac wszystkie rekordy i dodawac nowe czy raczej sprawdzac ktore sie zmienily i aktualizowac? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Możesz bawić się w sprawdzanie, z których checkboxów użytkownik zrezygnował (np. poprzez zapis do ukrytego pola w JS podczas odznaczania). Jednak będziesz miał z tym kupę zabawy (np. obsługa: odznaczył ale zaznaczył ponownie). Najprościej wywalać wszystkie rekordy z tej tabeli i wrzucać na nowo przy każdej zmianie danych.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Prostsze do wykonania jest usuniecie + dodanie. To tylko 2 zapytanka DELETE + INSERT (o ile stosujesz multi insert).
A updatowanie - select + update kazdego z [ ] z osobna -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 29.05.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
OK tylko tu pojawia sie problem pola primay key z autoincrement. Zalozmy 200-300 kont po 200 pol. I kazdy co jakis czas bedzie edytowal profil. Czy to nie grozi przepelnieniem wartosci autoincrementa? O to sie glownie obawiam
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Źle to przemyślałeś. Schemat tabel powinien wyglądać tak:
user: id, username... choice: id, name... user_choice: user_id, choice_id Podkreślenie oznacza klucz główny. Jak widzisz tabela user_choice posiada klucz główny składający się z dwóch kolumn. Nie potrzebujesz do niej dodatkowe pola typu AUTO_INCREMENT. Usunięcie wszystkich wyborów danego użytkownika (przy operacji ponownego zapisu) będzie trwało szybciutko, a to za sprawą skorzystania z klucza głównego (nie musisz już tworzyć indeksu). |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 01:15 |