ďťż

[PHP]Nawigacja na stronie ? jak zrobić ?

       

Podstrony


telcocafe

witam. 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 ;)

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.