![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 18.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam formularz w którym jest kilka pól do wyboru, są to specjalności. Użyłem do tego checkboxa. Opcje te są generowane dynamicznie z tabeli mysql ze specjalnościami. Wszystko ładnie się wyświetla. Załóżmy że jest 6 pozycji. Użytkownik zaznaczy 1,4 i 6. Chcę aby w tabeli zapisało się to jako string oddzielony ", " No i się zapisuje tylko zamiast stringa "1, , ,4, ,6" dostaję "1,4,6, , ,". Potrzebuję tego ponieważ później była by możliwość wyedytowania na takim samym formularzu w którym byłyby juz wcześniej zapisane wybory. Niżej daje kawałki kodu: Kawałek formularza:
Kawałek skryptu tranzakcji do bazy:
Z góry dziękuję za pomoc Pozdrawiam |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Sprawdź, czy dany element tablicy $_POST['spec'] istnieje np. poprzez isset. Aktualnie dodajesz wszystkie elementy do ciągu nawet jeśli nie istnieją.
Całość możesz również zrobić szybciej, bez konieczności pisania pętli: Poza tym poczytaj o normalizacji struktury baz danych, bo Twoje rozwiązanie narusza tą zasadę. Konieczne jest dodanie nowej tabeli, w której powiążesz rekord wyjściowy (np. użytkownika) z rekordem specjalności. Ten post edytował phpion 23.11.2010, 08:02:07 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 18.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
Mniej wiecej wiem o co ci chodzi, ale nie dokonca. Oto kawałek mojej bazy danych:
Tabela specjalnosci spec_id specjalnosc 1 programowanie 2 spawanie 3 oprogramowanie 4 sprzęt 5 jazda rowerem 6 sieci I chciałbym aby jak ktos zaznaczy np: opcje 2 i 3 w tabeli trener było zapisanie jak niżej I kawałek tabeli trener: tr_imie ...... tr_spec Jan ....... ,programowanie, spawanie, , , , , A jeśli chodzi o normalizacje troche czytałem. Mógłbyś mi napisać jak konkretnie miałaby wyglądać dodatkowa tabela? Pozdrawiam Ten post edytował inespew 23.11.2010, 08:20:56 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
A tak trochę pytanie z innej beczki: a dużo docelowo będziesz miał tych specjalności?
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 18.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
Nie więcej niż 100, ale nie będą dodawane na raz tylko co jakiś czas
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
A jeśli chodzi o normalizacje troche czytałem. Mógłbyś mi napisać jak konkretnie miałaby wyglądać dodatkowa tabela? trener_specjalizacja: [id_trenera, id_specjalizacji] Obie kolumny w tabeli tworzą klucz główny, a każda z nich jest kluczem obcym do odpowiedniej tabeli. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 18.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
No juz chyba wiem o co chodzi jeśli trener ma id 1 i specjalnosci o id 2,3 i np 5 to by było tak:
id_trenera id_specjalnosci 1 2 1 3 1 5 tak? |
|
|
![]()
Post
#8
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Dokładnie tak. Pamiętaj tylko, że aktualizując specjalności danego trenera musisz najpierw usunąć istniejące, żeby nie naruszyć ograniczenia klucza głównego. Dla Twojego przykładu więc wyświetlając ponownie formularz i zapisując dane musisz zrobić (trener ma id=1):
Jako INSERT podałem tzw. multi insert, który jest zdecydowanie szybszy od pojedynczych INSERTów. Możesz oczywiście dodawać rekordy pojedynczo w pętli, ale będzie to wolniejsze. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 18.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
Ok dodałem tabele o której była mowa wcześniej.
Zmieniłem trochę formularz:
I dalej nie wiem jak to zapisać w bazie :/ Do pliku transakcji dostaję coś takiego: w przypadku gdy zaznaczę no np 1, 2, 5 opcję "...&spec1=programowanie&spec2=spawanie&spec5=oprogramowanie..." gdy np 3, 5, 7 opcję "...spec3=sieci&spec5=oprogramowanie&spec7=jazda+rowerem..." i nie wiem jak to zapisać w tej tabeli. Jak zrobić zapytanie sql POMOCY!!! |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 6.07.2025 - 07:23 |