ďťż
Podstrony
|
telcocafewitam. mam pytanie odnośnie takiego czegoś jak mamy na forum eksperta. (Forum Czytelników czasopisma Ekspert > Polska myśl techniczna > Webmastering). Jak zrobić coś takiego w php.Baza danych: `categories` category_id `forums` forum_id | parent_forum (może być NULL) | category_id (może być NULL) I już masz łatwo. Jak ktoś wszedł do fora o ID 5, które jest bezpośrednio w kategorii o ID 3 to robisz proste zapytanie :) select * from categories, forums where forums.forum_id=5 and categories.category_id=forums.category_id ...albo podobne, bo pewnie nie działa :D Pisałem z głowy ;) //Zauważ, że dałem parent_forum. Potrzebne jest to do tego: Polska myśl techniczna -> Pole do popisu -> Konkursy :) Użytkownik pbnan edytował ten post 26 marzec 2007, 16:22 nie bardzo wiem o co ci chodzi ? P.S: Może ma ktoś coś łatwiejszego ? Jejku, no każde subforum (jak Programowanie, Konkursy, Webmastering) ma w bazie swój wiersz. A kolumny tabeli, gdzie są przechowywane subfora, są mniej-więcej takie: forum_id, forum_parent_id (może mieć wartość NULL, czyli być puste), cathegory_id (może mieć wartość NULL) I wtedy łatwo stwierdzasz: aha, teraz user jest w subforum o ID 5, którego rodzicem jest subforum o ID 10, które jest w kategorii o ID 3, czyli user jest w subforum Konkursy, które jest w subforum Pole do popisu, które jest w kategorii Polska myśl techniczna :) Już rozumiesz, o co mi chodzi? Takie >> Linki >> Do kolejnych >> elementów nazywają po ang. "Breadcrumbs" a zależności między kategoria - strona jako "Many-To-One" Tutaj mam strukturę dwóch tabel z mojego Kursu CodeIgniter CREATE TABLE kurs_news ( news_id smallint(5) unsigned NOT NULL auto_increment, news_title varchar(255) default NULL, news_text text, news_author varchar(255) default NULL, news_date int unsigned NOT NULL, news_keywords varchar(255) default NULL, PRIMARY KEY (news_id) ) ENGINE=MyISAM; CREATE TABLE kurs_comments ( com_id smallint(5) unsigned NOT NULL auto_increment, news_id smallint(5) unsigned NOT NULL, com_title varchar(255) default NULL, com_text text, com_author varchar(255) default NULL, com_date int unsigned NOT NULL, PRIMARY KEY (com_id) ) ENGINE=MyISAM; Pierwsza tabela zawiera newsy. Każdy news posiada swój unikalny numer identyfikacyjny - news_id. Tabela komentarzy zawiera pole na identyfikator news - podany identyfikator pozwala określić do jakiego newsa jest komentarz. Tak więc daje to: News > Komentarz :) Dłuższe wersje Raz > Dwa > Trzy > Cztery są zazwyczaj przy zagnieżdżonych kategoriach - tabela kategorii ma swój unikalny ID oraz ma pole w których może mieć ID innej istniejącej kategorii - kategorii nadrzędnej dla tej kategorii :) Riklaunim a dlaczego nie uzywasz poprawnego nazewnictwa kluczy obcych i kluczy głównych ? Czyli id_news w tabeli niusow jako klucz glowny i news_id jako klucz obcy w tabeli komentarzy. bo tak wyszło w przykładzie ;) |
|||
Sitedesign by AltusUmbrae. |