uirapuru
16.08.2008, 16:04:53
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!
kwiateusz
16.08.2008, 16:13:37
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
uirapuru
16.08.2008, 16:25:22
no wlasnie, tylko sie martwie czy to potem można jakoś wygodnie przeszukiwać?
nospor
16.08.2008, 16:30:17
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
uirapuru
16.08.2008, 16:36:33
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ę?
nospor
16.08.2008, 16:40:37
Cytat
strasznie nadmiarową tablicę,
Nie "nadmiarową" a jedyną słuszną

Tak się tworzy właśnie relacje i jest to prawidłowe projektowanie baz danych
uirapuru
16.08.2008, 17:03:33
wydaje mi się ze kumam

ten "slownik" juz mam, poprostu tablica z opcjami jest zamieniana na <select><option>... spróbuję i dam znać

sorki za dubla, znaczy dobrze kombinuje nad taka tablica?
-----------------------------------------------
| id_relacji | id_klub | id_dyscyplina |
-----------------------------------------------
| 0 | 53 | 24 |
| 1 | 53 | 25 |
| 2 | 53 | 33 |
| ... | ... | ... |
-----------------------------------------------
nospor
16.08.2008, 17:07:20
ogolnie dobrze, ale te id_relacji jest zbedne.
Kluczem glownym powinien byc klucz skladający się z dwoch pol: id_klub, id_dyscyplina
uirapuru
16.08.2008, 18:07:51
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?
nospor
16.08.2008, 18:11:16
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

) to musisz miec jeszcze tabele kalendarza:
id
name
blabla
a do tabeli eventow dodac pole z id kalendarza do jakiego event nalezy: id_calendar
uirapuru
16.08.2008, 18:31:12
tak proste, ze aż nie wpadłem... dziex
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.