Zasto ne bi napravili svoj forum ? Veoma je jednostavno i nije tesko... Uz osnovno znanje php-ja i mysql, u roku od pola sata mozete napraviti funkconalan php-based forum u kome moze postovati bilo ko.
Na pocetku, da kazem da je potrebno da znate html i basic stvari oko sintakse php i mysql-ja, posto u sintaksu troje pomenutih necemo zalaziti.
Za pocetak, da razmotrimo sta nam je sve potrebno za nas forum ?
Prvo, trebamo da napravimo tabelu u bazi gde ce se sve poruke nalaziti. Nazovimo nasu tabelu posts. Polja koja bi ta tabela trebalo da sadrzi bi otprilike bila:
id - integer(5), auto increment, primary key
pid - integer(5)
autor - char(30)
subject - char (30)
text - blob
datum - char(20)
Svakoj poruci ce automatski biti dodeljen id broj, koji ce biti razlicit za svaku poruku. Sada moramo razmotriti kako prepoznati prvu poruku u nekoj temi ? Pa, veoma lako. Za to nam sluzi polje pid. Naime, svakoj pocetnoj poruci u nekom threadu cemo dodeliti pid vrednost 0 kako bi znali koja nam je prva poruka u nekom threadu. Posle toga kada neko odgovori na tu poruku, tj. napise odgovor u tom threadu, svakoj poruci cemo deliti pid koji ce biti jednak sa id-om pocetne poruke.
Primer:
Ako zelim da napisem novu temu, kada unesem sve potrebne podatke, poruci se dodeljuje id=35 na primer, a za pid se dodeljuje 0 naravno.
Sada kada neko dodje i zeli da odgovori na temu, on isto pise novu poruku, samo sto se toj novoj poruci dodeljuje id bilo koji sledeci, a pid ce biti 35 kao sto pogadjate i sami.
Za unos pocetne poruke u bazu koristimo nesto tipa:
$result = mysql_query ("insert posts, set pid=0, autor='$var_autor', subject='$var_subject', text='$var_text', datum='$var_datum'", $db);
Promenljive $var_autor, $var_subject, $var_text dolaze iz forme i to sami mozete srediti, a promenljivu $var_datum treba srediti nesto kao:
$var_date=date("m-d-Y");
Kada treba da izlistamo sve threadove, to znaci da treba da izlistamo naslove svih poruka ciji je pid=0 a to cemo uraditi na sledeci nacin:
Ovako izgleda nas list.php fajl
echo "<table border='1'><tr><td>Autor<td>Subject<td>Datum</td></tr>";
$result=mysql_query("select autor, subject, datum, id from posts where pid=0", $db);
while ( $myrow = mysql_fetch_array($result) ) {
$a=$myrow[0];
$s=$myrow[1];
$d=$myrow[2];
echo "<tr><td>$a<td><a href='view_thread.php?mid=$myrow[3]'$s</a><td>$d</td></tr>";
}
echo "</table>";
Nas view_thread.php bi trebalo da izgleda ovako:
echo "<table border='1'><tr><td>Autor<td>Text</td></tr>";
$result=mysql_query("select * from posts where pid='$mid'", $db);
while ( $myrow = mysql_fetch_array($result) ) {
echo "<tr><td>$myrow[2]<p>$myrow[5]<td>$myrow[3]<p>$myrow[4]</td></tr>";
}
echo "</table>";
Dakle, napravili smo dve stvari, listu svih tema (list.php) i listu svih poruka u nekoj temi (view_thread.php).
Sada je potrebno uraditi stranicu za repliku.
Kada se vrsi replika, tj odgovor na thread, onda prvo moramo da znamo koji je pid od poruke na koju vrsimo odgovor.
Na stranici view_thread.php u formularu gde ce se nalaziti Reply button, morate uraditi sledece:
<form ation='reply.php?id=$mid' method='post'>
(ovde dodajete taster reply)
</form>
Kada user klikne na Reply, onda ga vodi na reply.php?id=35 na primer.
Na stranici reply.php napravite formu za unos na sledeci nacin
<form method='reply1.php?id=$id' method='post'>
(ovde pravite formu sa svim poljima)
</form>
Na stranici reply1.php konacno se vrsi unos poruke u bazu:
$var_autor=htmlspecialchars($var_autor);
$var_subject=htmlspecialchars($var_subject);
$var_text=htmlspecialchars($var_text);
$result=mysql_query("insert posts set pid='$id', autor='$var_autor', subject='$var_subject', text='$var_text', datum='$var_datum'", $db);
Takodje na stranici reply1.php zelite da stavite nesto tipa:
echo "Vasa poruka je uneta. <a href='list.php'>Kliknite ovde</a> za povratak na glavnu stranu";
To bi bilo to otprilike, Obratitie paznju da je ovo najjednostavniji forum sistem koji postoji. Imalo bi tu jos dosta stvari da se poradi kako bi se poboljsao kvalitet. Neke od stvari koje nisu pomenute:
-verifikacija polja, (da li je neko polje prazno?)
-lepse formatiranje displaya
-duzina texta koji je unet
-umesto datum polja koristiti timestamp(14) u mysql-u
-kao sto vidite, ovo je samo jedan forum , a ako zelite da imate vise kategorija foruma kao sto na es postoji, onda morate imati tabelu forms na primer, to nisam objasnjavao ovde, jer bi stvari postale slozenije
I tako dalje i tako dalje. Iako mozda izgleda sve slozeno i nerazumno, u principu je prosto.
Za primer pogledajte na www.zoki.co.yu pod stavkom Forum rezultat ovoga sto sam objasnio.
Nadam se da sam bar nekom pomogao da napravi svoj php forum, i da ne mora da se muchi oko instalacije Ikonboarda ili phpBB foruma i tako dalje.... Pre ili kasnije svako shvati da je php kraljevski jezik :D
[Ovu poruku je menjao Trunks dana 17.09.2002. u 12:39 GMT]