dynamiczne tworzenie nowych pol (tabela msql)
dynamiczne tworzenie nowych pol (tabela msql)
Tradycyjnie rozwiazanie rozwiazanie to stworzenie tabelki dla bazy sql o 6 polach (dziedziny)
id | tydzien | pilka | hokej | koszykowka | tenis | box
--------------------------------------------------------------
ale takie rozwiazanie jest dobre gdy wiemy z gory ile dziedzin sportowych (pol) jest wymagane.
Teraz nie wiem jak rozwiazac to aby uzytkownik mogl dodawac nowy wiersz z wynikami oraz dodawac nieograniczona ilosc dziedzin (pol) ,kasowac.
Myslalem nad rozwiazaniem takim ze stworzyc w zapasie np 1000 pol w tabeli (domyslna max wartosc),
lecz co zrobic z nazwami tych pol.
id | tydzien | pilka | hokej | koszykowka | tenis | box
--------------------------------------------------------------
ale takie rozwiazanie jest dobre gdy wiemy z gory ile dziedzin sportowych (pol) jest wymagane.
Teraz nie wiem jak rozwiazac to aby uzytkownik mogl dodawac nowy wiersz z wynikami oraz dodawac nieograniczona ilosc dziedzin (pol) ,kasowac.
Myslalem nad rozwiazaniem takim ze stworzyc w zapasie np 1000 pol w tabeli (domyslna max wartosc),
lecz co zrobic z nazwami tych pol.
Re: dynamiczne tworzenie nowych pol (tabela msql)
Nie rozumiem o co dokładnie ci chodzi, ale wiem że twoje podejście jest zupełnie błędne. Takich baz się po prostu nie robi. Powiedz co chcesz przez to uzyskać to może będę w stanie ci pomóc
Re: dynamiczne tworzenie nowych pol (tabela msql)
rozbij całość na dwa...
pierwsza tabela:
id | nazwa dziedziny sportu
------------------------------------
druga tabela:
id | id_dziedziny | tydzien | wyniki
------------------------------------------
W pierwszej tabeli trzymasz tylko nazwydziedzin w drugiej wynik jest powiązany z dziedziną jak many-to-one (jedna dziedzina może mieć wiele wyników jeden wyniok może mieć jedną dziedzinę).
Bardzo eleganckie i wydajne rozwiazanie...
pierwsza tabela:
id | nazwa dziedziny sportu
------------------------------------
druga tabela:
id | id_dziedziny | tydzien | wyniki
------------------------------------------
W pierwszej tabeli trzymasz tylko nazwydziedzin w drugiej wynik jest powiązany z dziedziną jak many-to-one (jedna dziedzina może mieć wiele wyników jeden wyniok może mieć jedną dziedzinę).
Bardzo eleganckie i wydajne rozwiazanie...
Re: dynamiczne tworzenie nowych pol (tabela msql)
@the_foe rzeczywiście fajna sprawa, szczególnie pierwszy link jest niezły...
Re: dynamiczne tworzenie nowych pol (tabela msql)
blahhhh no dzieki chlopy za to co wyzej ale chyba jednak zle zrozumiani mnie , sprostuje ponizej i troche jasniej
ok mam dwie tabelki
tab 1 (odpowiedzialna za nazwy dziedzin, uzytkownik moze dodawac.):
id | Nazwa_dziedziny |
----------------------------
1 | box
---------------------------
2 | tenis ziemny
---------------------------
itp. jakie tylko beda potrzebne uzytkownikowi.
tab 2 ( odpowiedzialna za przechowywanie wynikow)
id | autor | data_dodania | id_nazwy_dziedziny | wynik
----------------------------------------------------------------
ok i sprawa wyglada w ten sposob. Uzytkownik dodaje wpierw nowe nazwy dziedzin ( o ile sa potrzebne),
ostatnim krokiem jest dodanie nowych wynikow w tab2.
Wybiera (selectem) nazwe dziedziny ktorej id wstawiany jest w tab 2 (id_nazwy_dziedziny) i wprowadza wynik. Wszystko fajnie pieknie tylko jak do cholery ma to zatrybic gdy przy dodawaniu nowych wynikow chcem wprowadzic wyniki nie z jednej dziedziny tylko z kilku np, box, tenis ziemny, siatka i inne ?
Oczywiscie wszystko w jednym wierszu tab 2
ok mam dwie tabelki
tab 1 (odpowiedzialna za nazwy dziedzin, uzytkownik moze dodawac.):
id | Nazwa_dziedziny |
----------------------------
1 | box
---------------------------
2 | tenis ziemny
---------------------------
itp. jakie tylko beda potrzebne uzytkownikowi.
tab 2 ( odpowiedzialna za przechowywanie wynikow)
id | autor | data_dodania | id_nazwy_dziedziny | wynik
----------------------------------------------------------------
ok i sprawa wyglada w ten sposob. Uzytkownik dodaje wpierw nowe nazwy dziedzin ( o ile sa potrzebne),
ostatnim krokiem jest dodanie nowych wynikow w tab2.
Wybiera (selectem) nazwe dziedziny ktorej id wstawiany jest w tab 2 (id_nazwy_dziedziny) i wprowadza wynik. Wszystko fajnie pieknie tylko jak do cholery ma to zatrybic gdy przy dodawaniu nowych wynikow chcem wprowadzic wyniki nie z jednej dziedziny tylko z kilku np, box, tenis ziemny, siatka i inne ?
Oczywiscie wszystko w jednym wierszu tab 2
Re: dynamiczne tworzenie nowych pol (tabela msql)
tu jest wrzód... bo musisz stworzyć np. xmla który będzie dobrze definiował wynik. Sztuczka polega na tym iż w tabeli 2 trzymasz wyniki z danej dziedziny dla danej daty w jednej komórce...
Jako że różne dziedziny mają różny sposób zapisu wyniku trzeba znaleźć możliwość spójnego trzymania tych danych.
[xml]
<wyniki>
<wynik>
<kto gospodarz="nazwa" gosc="nazwa">
<gospodarz>wartosc</gospodarz>
<gosc>wartosc</gosc>
<rundy>
<runda>
<gospodarz>wartosc</gospodarz>
<gosc>wartosc</gosc>
</runda>
<runda>
...
</runda>
</rundy>
</wynik>
<wynik>
...
</wynik>
...
</wyniki>
[/xml]
Teraz załużmy że chcesz mieć wyniki z np. siadkówki to w tagu
<kto/> jako atrybuty podajesz gospodarza i gościa
<gospodarz/> i <gosc/> podajesz wynik końcowy
<runda/> odpowiada w tym przypadku za set
w innych przypadkach trzeba tylko rozróżniać za co odpowiada tag <runda/> w tenisie będą to sety, w boksie rundy, w kopanej wynik do przerwy itd.
Rozwiązanie ie jest optymalne, ale można je przepisać na bazę danych. Nie ukrywam iż roziwązanie to jest dość skomplikowane (musimy poradzić sobie z np. różnymi sposobami punktacji)i zazwyczaj nie jest darmowe...
Podsunąłem pewną idee mam nadzieję iż spełni ona oczekiwania...
Pozdrawiam
Jako że różne dziedziny mają różny sposób zapisu wyniku trzeba znaleźć możliwość spójnego trzymania tych danych.
[xml]
<wyniki>
<wynik>
<kto gospodarz="nazwa" gosc="nazwa">
<gospodarz>wartosc</gospodarz>
<gosc>wartosc</gosc>
<rundy>
<runda>
<gospodarz>wartosc</gospodarz>
<gosc>wartosc</gosc>
</runda>
<runda>
...
</runda>
</rundy>
</wynik>
<wynik>
...
</wynik>
...
</wyniki>
[/xml]
Teraz załużmy że chcesz mieć wyniki z np. siadkówki to w tagu
<kto/> jako atrybuty podajesz gospodarza i gościa
<gospodarz/> i <gosc/> podajesz wynik końcowy
<runda/> odpowiada w tym przypadku za set
w innych przypadkach trzeba tylko rozróżniać za co odpowiada tag <runda/> w tenisie będą to sety, w boksie rundy, w kopanej wynik do przerwy itd.
Rozwiązanie ie jest optymalne, ale można je przepisać na bazę danych. Nie ukrywam iż roziwązanie to jest dość skomplikowane (musimy poradzić sobie z np. różnymi sposobami punktacji)i zazwyczaj nie jest darmowe...
Podsunąłem pewną idee mam nadzieję iż spełni ona oczekiwania...
Pozdrawiam
Re: dynamiczne tworzenie nowych pol (tabela msql)
ok dzieki koziolek... jest to sposob,
ale w moim przypadku odpada, rozne typy danych formaty itp.
Musze miec osobne pole. Nie moze byc tak ze tylko xml i koniec kropka dupka srubka.
ale w moim przypadku odpada, rozne typy danych formaty itp.
Musze miec osobne pole. Nie moze byc tak ze tylko xml i koniec kropka dupka srubka.
Re: dynamiczne tworzenie nowych pol (tabela msql)
definiuj zatem pola w bazie:
opis pola
id_pola| id_dyscypliny |
--------------------------------
okreslając dyscyplinę przyporządkowujesz jej typy pól następnie definiujesz same pola pól
id_pola_Pola|id_pola_rodzica|nazwa|wartoscktora zawiera
---------------------------------------------------------------------------------,
I tak dalej aż osiągniesz zadowalający efekt
Oczywiście sqlka która będzie wybierać wartości dla danej dyscypliny dość szybko urośnie do kilkunastu linii... niestety...
swoją drogą funkcjonalność której oczekujesz jest zazwyczaj "tajną" technologią każdej firmy. Mechanizm tzw. Custom Fields jest bardzo trudny i dość kosztowny zarówno ekonomicznie jak i wydajnościowo...
Pozdrawiam
opis pola
id_pola| id_dyscypliny |
--------------------------------
okreslając dyscyplinę przyporządkowujesz jej typy pól następnie definiujesz same pola pól
id_pola_Pola|id_pola_rodzica|nazwa|wartoscktora zawiera
---------------------------------------------------------------------------------,
I tak dalej aż osiągniesz zadowalający efekt
swoją drogą funkcjonalność której oczekujesz jest zazwyczaj "tajną" technologią każdej firmy. Mechanizm tzw. Custom Fields jest bardzo trudny i dość kosztowny zarówno ekonomicznie jak i wydajnościowo...
Pozdrawiam
Re: dynamiczne tworzenie nowych pol (tabela msql)
Wiem że to może nie jest genialna porada, ale zaoszczędzi Ci duużo czasu: chcesz programować w MySQL - przeczytaj najpierw książkę o tym. Naprawdę.

