[php] Pisanie Forum od podstaw

0

Chciałbym zapytać jak napisać forum [rotfl]
Dokładniej chodzi mi o to jakie pola i tabelki powinny zawierać bazy mysql. (Jakoś etap projektowania jakiejkolwiek strony zawsze słabo [glowa] idzie)

0

Wszystko zależy od przewidywanej funkcjonalności - jak chcesz kobyłę, to zerknij sobie do struktury Coyote'a albo phpBB (broń Boże nie porównuję tych dwóch systemów, tylko przytaczam, jako że oba są publicznie dostępne i proste do znalezienia prznajmniej dla kogoś z 4p). Jeśli chcesz jakieś lekkie forum, to:
a) Bierzesz powyższą strukturę i ucinasz wszystko, co Ci nie potrzebne
b) Bierzesz pustą bazę, dodajesz tabelę użytkowników (id, nick, hash hasła) i postów (id, id_autora, tresc), po czym rozbudowujesz o to, co potrzebujesz.

Gotowca raczej nie znajdziesz, bo każde forum ma inne funkcjonalności i trochę inne podejście do sprawy. Polecam opcję b i przesiedzenie nad tym trochę. A jak w trakcie pisania dojdziesz do wniosku, że czegoś brakuje, to nie problem przecież dodać (pod warunkiem unikania jak ognia zapytań typu SELECT * FROM cośtam).

0

czemu SELECT * FROM table jest beznadziejne, dla mnie to super pomysł :D

No już mam pewien projekt w oparciu o phpBB, ale trochę za dużą funkcjonalność on oferuje, dlatego go trochę (ciach :P) uciąłem ;]

0

Bo jak ci dojda jakies pola pare razy, to w efekcie bedziesz pobieral o np. 3x za duzo danych. A jak odpadna, to tym bardziej trudniej znalezc gdzie ich potrzebowales.

0

hmm... to logiczne, że jak będę potrzebował tylko hasła dla usera to wpiszę
'SELECT password FROM users WHERE user='.pobierzdane('POST','user').' AND pass='.md5(pobierzdane('POST','pass'));

0

Voldenet - tak się składa, że struktura bazy danych się czasem zmienia. Dlatego każdy, kto się zna na rzeczy nie używa SELECT * FROM cośtam, bo może się okazać, że ta * będzie w którymś momencie oznaczać co innego niż na początku.

0

No to jak inaczej wyciagnac konkretne dane z bazy danych jak nie przy uzyciu "select * from ..." ?
Innego sposobu na to nie znam...

0

Np. tak jak pisal voldenet.

select kolumna1, kolumna2, kolumna3 ... from tabela
0
  • zawsze w mysql oznacza wszystkie pola! Nie znam wyjątków...
0
voldenet napisał(a)
  • zawsze w mysql oznacza wszystkie pola! Nie znam wyjątków...

i co w zwiazku z tym??

0

wiedzą chciał się pochwialić ;]

0
voldenet napisał(a)
  • zawsze w mysql oznacza wszystkie pola! Nie znam wyjątków...
SELECT kolumna FROM tabela WHERE pole = '*'

już znasz ...

337312=>337289 as 337289=>336766

0

Oczywiście, że "*" oznacza "wszystkie pola". Problem w tym, że wraz z rozwojem aplikacji "wszystkie pola" może w pewnym momencie oznaczać coś innego (kiedy zmienimy strukturę tabeli).

0

A już rozumiem o co ci chodziło, chociaż trzeba podzielić sobie projekt na 3 etapy.

  1. Projektowanie układu baz danych.
  2. Tworzenie funkcji wstawiania i zwracania danych.
  3. Tworzenie oprawy graficznej.

Czy ten tok rozumowania jest dobry?

0

Jest dobry. Jednak nigdy, przenigdy nie możesz wyjść z założenia, że tak jak sobie zaprojektujesz, tak to będzie do końca ludzkości wyglądało. Zawsze lepiej jest przewidzieć zmiany i pisać tak, by ewentualne zmiany nie skopały działania aplikacji, a nie zakładać, że zmian nie będzie i się męczyć, jak się okaże, że jednak trzeba je wprowadzić.

0

Jak piszesz dla siebie, to jeszcze pol biedy, bo to Ty decydujesz co zmienic a co nie. Ale uwierz mi, mozesz trafic na klienta, dla ktorego pewne zmiany sa niezbedne dla uratowania swiata i oczywistym jest, ze wystarczy o nich powiedziec jak juz wszystko jest gotowe ;) A wtedy krzyz na droge... o ile tego nie przewidziales :)

0

Pół biedy? Zależy, jak na to spojrzeć. Jak masz klienta, to zawsze sobie możesz w duchu myśleć "co za debil, czemu wcześniej o tym nie powiedział" i zażądać dodatkowego wynagrodzenia, jako, że wymaga to ingerencji w projekt na samym początku. Jak piszesz dla siebie, to tylko na siebie możesz kląć, czemu byłeś taki głupi i nie wziąłeś tego pod uwagę wcześniej :P.

0

hmm... w sumie można założyć sobie, że na pewno będę wprowadzał jakiekolwiek zmiany. Można też pisać bez projektu. Ot, tak sobie po kolei. Nie będę się męczył przy poprawianiu, ale później kod będzie po prostu niechlujny. Zależy jakie to zmiany :D. Chociaż w sumie jeden diabeł. [diabel]

0

ja często tak mam że na początku wszystko przemyślę, przygotuję pewne miejsca do przyszłej modyfikacji i w ogóle a potem okazuje się że i tak muszę połowę skryptu przepisywać chcąc wprowadzić modyfikację. Jeszcze to by było pół biedy gdyby nie to że zawsze później znajduję miejsce wcześniej przygotowane na taką zmianę, problem w tym że zawsze o tym zapominam

0

Ja a propos bazy mam tak, ze przy malym projekcie pisze ja w trakcie kodowania, wiec czesto sobie przypominam o jakims polu, jakiejs tabelce albo po paru zmianach okazuje sie, ze jakies pole juz nie jest potrzebne. Wtedy select * bywa zabojcze dla nastroju ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1