Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pole typu Array w MySQL?
uirapuru
post 16.08.2008, 16:04:53
Post #1





Grupa: Zarejestrowani
Postów: 182
Pomógł: 9
Dołączył: 30.04.2005

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


Szukam, choć przyznaję, że niezbyt intensywnie rozwiązania takiej kwestii - chciałbym, żeby pewna zmienna typu Array z php - najlepiej nietknięta - trafiła do bazy MySQL. Jest ona jedną z kilku zmiennych i chciałbym, żeby jakoś elegancko to wszystko poukładać w rekordzie, by ta tablica zajęła tylko jedno pole. Chyba nie ma takiego typu odpowiedniego. Mogę pobawić się implode() i explode() ale to nie będzie chyba zbyt dobre, bo w tej tablicy są zawarte dane, w/g których potem chciałbym, żeby można było przeszukiwać również.

Konkretnie z formularza <select multiply> wychodzi kilka opcji zaznaczonych (np. 3) do jednej zmiennej, która w tym momencie staje się tablicą. Jak przechować ją w bazie MySQL, żeby ktoś inny, wyszukując jedną z tych opcji mógł trafić na odpowiedni rekord. Z góry dzięki za pomoc!
Go to the top of the page
+Quote Post
kwiateusz
post 16.08.2008, 16:13:37
Post #2


Admin Techniczny


Grupa: Administratorzy
Postów: 2 071
Pomógł: 93
Dołączył: 5.07.2005
Skąd: Olsztyn




jak chcesz trzymac tablice w 1 polu to zrob to jako varchar badz text i serialize" title="Zobacz w manualu PHP" target="_manual na tablicy
Go to the top of the page
+Quote Post
uirapuru
post 16.08.2008, 16:25:22
Post #3





Grupa: Zarejestrowani
Postów: 182
Pomógł: 9
Dołączył: 30.04.2005

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


no wlasnie, tylko sie martwie czy to potem można jakoś wygodnie przeszukiwać?
Go to the top of the page
+Quote Post
nospor
post 16.08.2008, 16:30:17
Post #4





Grupa: Moderatorzy
Postów: 36 556
Pomógł: 6314
Dołączył: 27.12.2004




najlepiej to sie robi na dodatkowych tablicach.

Skoro te dane bierze z selecta, to zakladam ze jest to jakis slownik. Tworzysz wiec tabele slownika:

slownik:
id
name

tabela rekordu twojego
id
cos tam
cos tam2

tabela wiąząca slownik z tabelą rekordu
id_slownik
id_rekordu
Do tej trzeciej tabeli będą lądowaly wpisy z zaznaczonego selecta


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
uirapuru
post 16.08.2008, 16:36:33
Post #5





Grupa: Zarejestrowani
Postów: 182
Pomógł: 9
Dołączył: 30.04.2005

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


Problem w tym, że ten select ma powiedzmy 300 opcji, wiec tyle musiałoby być pól w rekordzie, mimo, że zazwyczaj pewnie z 5 czy 10 pól będzie dobrane do jednego rekordu i to stworzy mi strasznie nadmiarową tablicę, czy się mylę?
Go to the top of the page
+Quote Post
nospor
post 16.08.2008, 16:40:37
Post #6





Grupa: Moderatorzy
Postów: 36 556
Pomógł: 6314
Dołączył: 27.12.2004




Cytat
strasznie nadmiarową tablicę,
Nie "nadmiarową" a jedyną słuszną smile.gif
Tak się tworzy właśnie relacje i jest to prawidłowe projektowanie baz danych


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
uirapuru
post 16.08.2008, 17:03:33
Post #7





Grupa: Zarejestrowani
Postów: 182
Pomógł: 9
Dołączył: 30.04.2005

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


wydaje mi się ze kumam smile.gif ten "slownik" juz mam, poprostu tablica z opcjami jest zamieniana na <select><option>... spróbuję i dam znać smile.gif

sorki za dubla, znaczy dobrze kombinuje nad taka tablica?

-----------------------------------------------
| id_relacji | id_klub | id_dyscyplina |
-----------------------------------------------
| 0 | 53 | 24 |
| 1 | 53 | 25 |
| 2 | 53 | 33 |
| ... | ... | ... |
-----------------------------------------------
Go to the top of the page
+Quote Post
nospor
post 16.08.2008, 17:07:20
Post #8





Grupa: Moderatorzy
Postów: 36 556
Pomógł: 6314
Dołączył: 27.12.2004




ogolnie dobrze, ale te id_relacji jest zbedne.
Kluczem glownym powinien byc klucz skladający się z dwoch pol: id_klub, id_dyscyplina


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
uirapuru
post 16.08.2008, 18:07:51
Post #9





Grupa: Zarejestrowani
Postów: 182
Pomógł: 9
Dołączył: 30.04.2005

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


No dobra, to teraz trudniejszy temat: a co jeśli podawane przez użytkownika dane nie są słownikowe?

konkretny przykład; działa mój skrypt podobnie jak calendar z google: na planie tygodnia można podawać rozne eventy w roznych godzinach, z opisem itd itp, zrealizowane jest to w javaskrypcie. w jakiej formie najlepiej wyciągnąć dane i do jak skonstruowanej bazy wrzucic? narzucic jakieś ograniczenie na ilosc pol rekordu (np. 256 eventów dla jednego kalendarza), czy dla kazdego kalendarza tworzyc osobną tablice, do ktorej bede wrzucac poszczegolne eventy?
Go to the top of the page
+Quote Post
nospor
post 16.08.2008, 18:11:16
Post #10





Grupa: Moderatorzy
Postów: 36 556
Pomógł: 6314
Dołączył: 27.12.2004




kazdy event to rekord w tabeli.
tabela powinna posiadac min. takie pola:
id
name
title
time
blabla

Jesli dodatkowo chcesz powiązać te eventy z jakims kalendarzem (nie wiem o czym mowisz ale twoja sprawa winksmiley.jpg ) to musisz miec jeszcze tabele kalendarza:
id
name
blabla

a do tabeli eventow dodac pole z id kalendarza do jakiego event nalezy: id_calendar


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
uirapuru
post 16.08.2008, 18:31:12
Post #11





Grupa: Zarejestrowani
Postów: 182
Pomógł: 9
Dołączył: 30.04.2005

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


tak proste, ze aż nie wpadłem... dziex
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 12.05.2025 - 06:46