Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Formularz - checkbox., Prawodłowa koncepcja wysyłania / pobierania danych.
Goldunube
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 18.03.2010

Ostrzeżenie: (0%)
-----


Witam.

Tworzę stronę internetową, którą zalogowany użytkownik będzie mógł spersonalizować według swoich upodobań.
By tego dokonać, będzie musiał uprzednio wypełnić formularz złożony z checkbox'ów.
Checkbox'y są podzielone następująco:

Warzywa
- Marchew
- Ogórek
- itd...

Owoce
- Jabłko
- Pomarańcz
- itd...

Napisałem skrypt, który dodaje do BD zaznaczone przez użytkownika checkbox'y. Zadbałem również o to by w przypadku ponownego wysłania tego formularza z tymi samymi zaznaczonymi pozycjami, były one w BD nadpisywane, a nie dopisywane.
Dodałem również skrypt pobierający z BD wybrane wcześniej pozycje i wyświetlający te rekordy jako zaznaczone checkbox'y (checked=checked).

Problem z którym nie wiem jak się prawidłowo uporać, pojawia się w momencie, gdy użytkownik chce odznaczyć wybrane / wybrany wcześniej checkbox.
Tu pojawia się moje pytanie.

Czy napisać skrypt, którzy przed każdym ponownym zapisem wybranych checbox'ów do BD usuwałby wszystkie poprzednie wpisy dla tego użytkownika, czy raczej napisać skrypt, który porównywałby ilość rekordów w BD z obecną ilością zaznaczonych checkbox'ów i porównując produkty po ID, usuwałby tylko te przy których nie zaznaczono checbox'a ?


A może w ogóle realizuje się to w zupełni inny sposób na który nie wpadłem? AJAX / JQUERY (IMG:style_emoticons/default/questionmark.gif)
Z góry dziękuję za wszelkie podpowiedzi.

Serdecznie pozdrawiam
Adam K.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Goldunube
post
Post #2





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 18.03.2010

Ostrzeżenie: (0%)
-----


Dzięki Kolego za odpowiedź.

Widzisz w moim przypadku sprawa z tabelami jest trochę bardziej skomplikowana.

Wymyśliłem sobie to tak:

1. Tabela "uzytkownicy" - wiadomo, przechowuje ID uzytkownika, imie, nazwisko itp.
2. Tabela "produkty" - przechowuje ID produktu, nazwę produktu ("ogórek", "marchewka", itp...) oraz ID grupy produktów
3. Tabela "grupa_produktow" - przechowuje ID grupy produktów, oraz nazwę grupy ("warzywa", "owoce", itd)
4. Tabela "wybrane_produkty" - przechowuje ID uzytkownika, oraz ID Produktu

Tabela numer 4 opisuje tą tak zwaną personalizację w moim projekcie. Otóż każdy użytkownik może sobie wejść do swojego profilu i wybrać produkty, które go interesują. Wybrane produkty przy pomocy checkbox'ów przechowywane są właśnie w tabeli nr. 4.
W przypadku dodawania nowego produktu sprawa jest prosta, każdy checkbox ma z bazy przypisany numer ID produktu, który reprezentuje. Po wysłaniu formularza, numer ten wpada do tabeli numer 4.

Gorzej sytuacja wygląda w momencie gdy użytkownik wchodzi do swojego profilu. Wcześniej zaznaczył produkt "ogórek", dzięki czemu w jego profilu checkbox "ogórek" wyświetlany jest jako "checked". Jednakże użytkownik chciałby teraz odznaczyć pole ogórek i tu pojawia się problem. Gość odznacza checkboxa, wysyła taki formularz i oczekuje, że w jego profilu zostanie ten wpis usunięty.

Moje pytanie jak to sprawnie zrobić...
Sposób z porównywaniem wpisów w Tabeli 4 z obecnie zaznaczonymi checkboxami, wydaje się rozwiązywać ten problem, jednakże nie jestem jakoś przekonany, czy tak to powinno się robić... Żeby to zrealizować musiałbym pobrać wszystkie rekordy z tabeli 4 przypisane danemu użytkownikowi, wrzucić to w tablice po czym musiałbym wykonać tyle IF 'ów ile mam checkbox'ów w formularzu.

Jeżeli się mylę to bardzo proszę o wyprowadzenie mnie z błędu (IMG:style_emoticons/default/wink.gif)

Pozdrawiam
Adam K.

Ten post edytował Goldunube 28.03.2011, 14:39:04
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 12:35