Fórum v PHP a MySQL - 4. diel

Odosielanie príspevkov pomocou formuláru je nevyhnutné aby vaše fórum bolo živé. V tomto diele seriálu si príspevky pod témou vypíšeme a vytvoríme si formulár pre ich odosielanie.
V tomto diele si ukážeme ako vytvoriť formulár pre odoslanie príspevkov k téme. Všetko čo budeme upravovať je dnes len jedna funkcia, ktorá slúži na zobrazenie témy. Funkcia sa volá zobraz_temu($id). Zdrojový kód bude obsahovať malé novinky a to tieto:
// funkcia pre zobrazenie témy

function zobraz_temu($id){

$sql = mysql_query("SELECT * FROM temy WHERE id_temy='$id' LIMIT 1");

while($stlpec = mysql_fetch_object($sql)){

$id_temy = $stlpec->id_temy;

$nadpis = $stlpec->nadpis;

$obsah = $stlpec->obsah;

$autor = $stlpec->autor;

$email = $stlpec->email;

$datum = $stlpec->datum;

$ip = $stlpec->ip;

echo "<h2><a href="/" title="Vrátiť sa na obsah fóra">Fórum</a> -> $nadpis</h2>n";

menu(); // volanie funkcie pre menu

echo "<div class="tema">n";

echo "<strong><a href="?id=$id_temy" title="">$nadpis</a></strong><br />n";

echo "<small>[ Dátum:$datum | Autor:$autor | Email:$email | IP:$ip ]</small><br />n";

echo "<div class="tema_obsah">$obsahn";

echo "</div></div>n";

}

mysql_free_result($sql);



$sql = mysql_query("SELECT obsah,autor,email,datum,ip FROM prispevky WHERE k_teme='$id'");

while($zaznam = mysql_fetch_object($sql)){

$obsah = $zaznam->obsah;

$autor = $zaznam->autor;

$email = $zaznam->email;

$datum = $zaznam->datum;

$ip = $zaznam->ip;

echo "<div class="tema">n";

echo "<small>[ Dátum:$datum | Autor:$autor | Email:$email | IP:$ip ]</small><br />n";

echo "<div class="tema_obsah">$obsahn";

echo "</div></div>n";

}

mysql_free_result($sql); 



if(isset($_POST[odoslat])){

if(empty($_POST[meno])){

$meno = FALSE;

} else {

$meno = oprav(htmlspecialchars($_POST[meno]));

}

if(empty($_POST[email])){

$email = FALSE;

} else {

$email = oprav(htmlspecialchars($_POST[email]));

}

if(empty($_POST[obsah])){

$obsah = FALSE;

} else {

$obsah = oprav(nl2br(htmlspecialchars($_POST[obsah])));

}

if($meno && $email && $obsah){

$ip = $_SERVER[REMOTE_ADDR];

mysql_query("INSERT INTO prispevky(obsah,autor,email,datum,k_teme,ip) VALUES('$obsah','$meno','$email',NOW(),'$id','$ip')");

} else {

die("Vsetky polia musia byt vyplnene!<a href="javascript:history.back()">Navrat k teme</a><br />n");

}

}

echo "<form action="{$_SERVER[PHP_SELF]}?id=$id" method="post">n";

echo "<fieldset>n";

echo "Meno:<br /><input name="meno" type="text" /><br />n";

echo "Email:<br /><input name="email" type="text" value="@" /><br />n";

echo "Obsah príspevku:<br /><textarea name="obsah" rows="7" cols="60"></textarea><br />n";

echo "<input name="odoslat" type="submit" value="Odoslať príspevok" />n";

echo "</fieldset></form>n";



}
Ako prvé sme vypísali pod tému príspevky príslušné k nej. Povedzme, že ID témy je 3. Argument funkcie zobraz_temu - "$id" má hodnotu tiež 3. Pod témou sa vypíšu všetky údaje s tabuľky prispevky kde stĺpec k_teme má hodnotu 3, čiže rovnakú ako argument $id k funkcií zobraz_temu.

Po výpise príspevkov nasleduje formulár pre odoslanie príspevkov. Nič bližšie k tejto problematike netreba vysvetľovať, pretože je to tu rovnaké ako pri odosielaní novej témy. V budúcich dieloch budeme odosielať témy aj príspevky rovnako ale budeme to robiť pomocou externého súboru, ktorý si vytvoríme. Dôvod je jednoduchý. Je to omnoho praktickejšie. Bezpečnosť vo fóre je dosť nevyhnutná a preto sa ňou budeme zaoberať tiež. Ak budete mať nejaké návrhy čo by ste chceli pridať do tejto aplikácie, tak napíšte do fóra. Upozorňujem dopredu, že BAN-IP, Anti-Spam, Smajlíci a značky budú v seriály zahrnuté.

Toto by bol koniec dnešného dielu a v ďalšom si urobíme stránkovanie tém vo fóre.
Alternatívne verzie: Text PDF Voice
Autor: PaBi3 · Kategória: Programovanie · Dátum: 24.07.2005 16:57

Komentáre

Zatiaľ tu nie sú žiadne komentáre.

Osobné údaje
Captcha
Odpíšte text z obrázku. Rozlišujú sa malé a veľké písmená.
Obsah
Možnosti