<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE html PUBLIC '-//W3C/DTD XHTML+Voice 1.2 /EN' 'http://www.voicexml.org/specs/multimodal/x+v/12/dtd/xhtml+voice12.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' xmlns:ev='http://www.w3.org/2001/xml-events'>
<head>
<link rel='canonical' href='http://pabi3.com/blog/forum-v-php-a-mysql-4-diel/' />
<link rel='stylesheet' href='http://pabi3.com/modules/items/voice.css' type='text/css' media='all' />
<form xmlns='http://www.w3.org/2001/vxml' id='title'>
<block>
The article Forum v PHP a MySQL - 4. diel is written by PaBi3
</block>
</form>
<form xmlns='http://www.w3.org/2001/vxml' id='body'>
<block>
Odosielanie prispevkov pomocou formularu je nevyhnutne aby vase forum bolo zive. V tomto diele serialu si prispevky pod temou vypiseme a vytvorime si formular pre ich odosielanie.</block>
</form>
<form xmlns='http://www.w3.org/2001/vxml' id='full'>
<block>
V tomto diele si ukazeme ako vytvorit formular pre odoslanie prispevkov k teme.
Vsetko co budeme upravovat je dnes len jedna funkcia, ktora sluzi na zobrazenie
temy. Funkcia sa vola zobraz_temu($id). Zdrojovy kod bude obsahovat male
novinky a to tieto:

// funkcia pre zobrazenie temy

function zobraz_temu($id){

$sql = mysql_query(&quot;SELECT * FROM temy WHERE id_temy='$id' LIMIT 1&quot;);

while($stlpec = mysql_fetch_object($sql)){

$id_temy = $stlpec-&gt;id_temy;

$nadpis = $stlpec-&gt;nadpis;

$obsah = $stlpec-&gt;obsah;

$autor = $stlpec-&gt;autor;

$email = $stlpec-&gt;email;

$datum = $stlpec-&gt;datum;

$ip = $stlpec-&gt;ip;

echo &quot;&lt;h2&gt;&lt;a href=&quot;/&quot; title=&quot;Vratit sa na obsah fora&quot;&gt;Forum&lt;/a&gt; -&gt; $nadpis&lt;/h2&gt;n&quot;;

menu(); // volanie funkcie pre menu

echo &quot;&lt;div class=&quot;tema&quot;&gt;n&quot;;

echo &quot;&lt;strong&gt;&lt;a href=&quot;?id=$id_temy&quot; title=&quot;&quot;&gt;$nadpis&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;n&quot;;

echo &quot;&lt;small&gt;[ Datum:$datum | Autor:$autor | Email:$email | IP:$ip ]&lt;/small&gt;&lt;br /&gt;n&quot;;

echo &quot;&lt;div class=&quot;tema_obsah&quot;&gt;$obsahn&quot;;

echo &quot;&lt;/div&gt;&lt;/div&gt;n&quot;;

}

mysql_free_result($sql);



$sql = mysql_query(&quot;SELECT obsah,autor,email,datum,ip FROM prispevky WHERE k_teme='$id'&quot;);

while($zaznam = mysql_fetch_object($sql)){

$obsah = $zaznam-&gt;obsah;

$autor = $zaznam-&gt;autor;

$email = $zaznam-&gt;email;

$datum = $zaznam-&gt;datum;

$ip = $zaznam-&gt;ip;

echo &quot;&lt;div class=&quot;tema&quot;&gt;n&quot;;

echo &quot;&lt;small&gt;[ Datum:$datum | Autor:$autor | Email:$email | IP:$ip ]&lt;/small&gt;&lt;br /&gt;n&quot;;

echo &quot;&lt;div class=&quot;tema_obsah&quot;&gt;$obsahn&quot;;

echo &quot;&lt;/div&gt;&lt;/div&gt;n&quot;;

}

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 &amp;&amp; $email &amp;&amp; $obsah){

$ip = $_SERVER[REMOTE_ADDR];

mysql_query(&quot;INSERT INTO prispevky(obsah,autor,email,datum,k_teme,ip) VALUES('$obsah','$meno','$email',NOW(),'$id','$ip')&quot;);

} else {

die(&quot;Vsetky polia musia byt vyplnene!&lt;a href=&quot;javascript:history.back()&quot;&gt;Navrat k teme&lt;/a&gt;&lt;br /&gt;n&quot;);

}

}

echo &quot;&lt;form action=&quot;{$_SERVER[PHP_SELF]}?id=$id&quot; method=&quot;post&quot;&gt;n&quot;;

echo &quot;&lt;fieldset&gt;n&quot;;

echo &quot;Meno:&lt;br /&gt;&lt;input name=&quot;meno&quot; type=&quot;text&quot; /&gt;&lt;br /&gt;n&quot;;

echo &quot;Email:&lt;br /&gt;&lt;input name=&quot;email&quot; type=&quot;text&quot; value=&quot;@&quot; /&gt;&lt;br /&gt;n&quot;;

echo &quot;Obsah prispevku:&lt;br /&gt;&lt;textarea name=&quot;obsah&quot; rows=&quot;7&quot; cols=&quot;60&quot;&gt;&lt;/textarea&gt;&lt;br /&gt;n&quot;;

echo &quot;&lt;input name=&quot;odoslat&quot; type=&quot;submit&quot; value=&quot;Odoslat prispevok&quot; /&gt;n&quot;;

echo &quot;&lt;/fieldset&gt;&lt;/form&gt;n&quot;;



}

Ako prve sme vypisali pod temu prispevky prislusne k nej. Povedzme, ze ID temy je
3. Argument funkcie zobraz_temu - "$id" ma hodnotu tiez
3. Pod temou sa vypisu vsetky udaje s tabulky prispevky kde stlpec
k_teme ma hodnotu 3, cize rovnaku ako argument $id k funkcii
zobraz_temu.

Po vypise prispevkov nasleduje formular pre odoslanie prispevkov. Nic blizsie
k tejto problematike netreba vysvetlovat, pretoze je to tu rovnake ako pri
odosielani novej temy. V buducich dieloch budeme odosielat temy aj prispevky
rovnako ale budeme to robit pomocou externeho suboru, ktory si vytvorime.
Dovod je jednoduchy. Je to omnoho praktickejsie. Bezpecnost vo fore je dost
nevyhnutna a preto sa nou budeme zaoberat tiez. Ak budete mat nejake navrhy co
by ste chceli pridat do tejto aplikacie, tak napiste do fora. Upozornujem
dopredu, ze BAN-IP, Anti-Spam, Smajlici a znacky budu v serialy zahrnute.

Toto by bol koniec dnesneho dielu a v dalsom si urobime strankovanie tem
vo fore.</block>
</form>
<base href='http://pabi3.com/' />
<title>Fórum v PHP a MySQL - 4. diel</title>
</head>
<body ev:event='load' ev:handler='#title'>
<a href='http://pabi3.com/blog/forum-v-php-a-mysql-4-diel/' title='Návrat'>Návrat</a>
<h1 style='padding:0.5em;'>Fórum v PHP a MySQL - 4. diel</h1>
<ul>
<li ev:event='click' ev:handler='#body'>Speak introduction</li>
<li ev:event='click' ev:handler='#full'>Speak full</li>
</ul>
</body>
</html>

