hiszpaniec
19.03.2010, 01:28:14
Witam, przeszukałem dużo tematów na forum, po części pokrywały się z moim pytaniem, ale niestety stanąłem na takim etapie że w ogóle nie wiem jak się za to zabrać.
Zostałem poproszony o napisanie galerii zdjęć w której:
-będą linki bezpośrednio kierujące do albumów
-linki będą kierowały do podkategorii w których dopiero będą umieszczane linki do albumów.
Gdyby to było wszystko to metodą prób i błędów bym się z tym uporał, ale dodatkowo muszę stworzyć panel administracyjny na którym będzie dodawanie i usuwanie kategorii/podkategorii/albumów.
Nie wiem jakim sposobem osiągnąć dodawanie kategorii, nie wiem jak je rozróżnić z podkategoriami.
Następna z funkcjonalności, może być ustalana jedynie podczas tworzenia kategorii to zasięg (czy ma być wyświetlana we wszystkich galeriach, czy jedynie w jednej, chodzi tu o klub który ma kilka filii i niektóre kategorie powinny być wyświetlane we wszystkich filiach, a inne jedynie w wybranej jednej).
Miałem taką koncepcję aby podczas dodawania kategorii z listy rozwijanej szło wybrać kategorie do której przypisać inną kategorię, ale nie wiem jak to rozgraniczyć.
Wstępnie myślę że pola w bazie danych do kategorii to:
id, nazwa_kategorii, gdzie_ma_byc_wyświetlana, podkategoria
Mogę prosić o porady jak mam się za to zabrać?
Daimos
19.03.2010, 09:01:01
zakręciłeś trochę

tzn że kategoria może mieć kilku rodziców tak?
Jeśli chodzi o takie relacje wiele do wielu czy wiele do jednego, zrób tabelę specjalnie do tego
tzn masz tabelę
category
to tworzysz
category_to_category
a w niej pola
category_child_id | category_parent_id
a tak na marginesie
Nie znam się na architekturze, więc nikt mnie nie prosi o zaprojektowanie domu
celbarowicz
19.03.2010, 11:18:24
zrób trzy zależne selekty i proponuję taki układ tabel, fotki dotyczące jednego tematu umieszczaj w odpowiednim katalogu
np
$sql="CREATE TABLE IF NOT EXISTS tabela_1(
id_t1 int(9) NOT NULL auto_increment,
nazwa_t1 varchar(30) NOT NULL ,
PRIMARY KEY klucz1 (id_t1)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci; ";
//-----------------------------------------------------------
$sql="CREATE TABLE IF NOT EXISTS tabela_2(
id_t2 int(9) NOT NULL auto_increment,
id_t1_w_t2 int(9) NOT NULL,
nazwa_t2 varchar(30) NOT NULL,
PRIMARY KEY klucz2 (id_t2 ) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci; ";
//-----------------------------------------------------------
$sql="CREATE TABLE IF NOT EXISTS tabela_3(
id_t3 int(9) NOT NULL auto_increment,
id_t2_w_t3 int(9) NOT NULL,
nazwa_t3 varchar(30) NOT NULL,
PRIMARY KEY klucz3 (id_t3 ) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci; ";
//-----------------------------------------------------------
$sql="CREATE TABLE IF NOT EXISTS tabela_4(
id_t4 int(9) NOT NULL auto_increment,
id_t3_w_t4 int(9) NOT NULL,
opis_fotki varchar(255) NOT NULL,
nazwa_fotki varchar(255) NOT NULL, //ścieżka do fotki
wyswietlanie varchar(1) NOT NULL,
PRIMARY KEY klucz3 (id_t4 ) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci; ";