Fórum v PHP a MySQL - 4. diel
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:
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.
// 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.
Autor: PaBi3 ·
Kategória: Programovanie ·
Dátum: 24.07.2005 16:57


![Hlasová verzia [Pre internetový prehliadač Opera] Voice](modules/items/voice.png)
Komentáre