Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pole typu Array w MySQL?
Forum PHP.pl > Forum > Bazy danych
uirapuru
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
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
no wlasnie, tylko sie martwie czy to potem można jakoś wygodnie przeszukiwać?
nospor
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
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
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
uirapuru
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 |
| ... | ... | ... |
-----------------------------------------------
nospor
ogolnie dobrze, ale te id_relacji jest zbedne.
Kluczem glownym powinien byc klucz skladający się z dwoch pol: id_klub, id_dyscyplina
uirapuru
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
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
uirapuru
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.