<?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='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 - 3. diel is written by PaBi3
</block>
</form>
<form xmlns='http://www.w3.org/2001/vxml' id='body'>
<block>
V tomto diele sa dozviete ako zasielat temy do nasho uz takmer podareneho fora. Clanok nadvezuje na minuly diel, kde ste sa naucili vypisovat temy.</block>
</form>
<form xmlns='http://www.w3.org/2001/vxml' id='full'>
<block>
V tomto diele si forum upravime, tak aby nam bezpecne zasielalo temy od navstevnikov
fora. Vsetko co budeme upravovat je len CSS, bottom.php, index.php a najviac bude zasiahnuty
subor functions.php. Zacnem asi tym najlahsim a to bude CSS. Cela uprava bude viac
menej kozmeticka.

.bottom { text-align:center; }

.tema { background:#efefef; border:1px solid #cccccc; margin-bottom:0.2em; padding:0.2em; }

.tema_obsah { background:#ffffff; padding:0.5em; }

.css_menu { height:3em; }

.menu a { float:left; display:block; background:#efefef; color:#000000; border:1px solid #cccccc; font-weight:bold; padding:0.5em; }

.menu a:hover { float:left; display:block; background:#cccccc; color:#ffffff; border:1px solid #efefef; font-weight:bold; padding:0.5em; }

Vyssie uvedene CSS neni cele ako ste si urcite vsimli. Treba v nom zamenit len veci,
ktore som uviedol tu. Nove zapisy su triedy .bottom, .css_menu,
.menu.
Subor bottom.php sa tiez zmenil len kozmeticky a to znamena, ze sme len zarovnali
na stred paticku.

&lt;div class=&quot;bottom&quot;&gt; 

&amp;copy;2005 PaBi3.com | Vsetky prava vyhradene

&lt;/div&gt;

&lt;/body&gt;

&lt;/html&gt;

Teraz bude nasledovat cely zmeneny subor functions.php. Boli pridane
nove funkcie. Na vytvorenie temy, na opravenie zapisu do databazy a na zobrazenie
horizontalneho menu. Popis funkcii najdete v komentaroch, ktore su v zdrojovom kode. Este predtym chcem
upozornit  na to, ze radsej sem dam cely zdrojovy kod functions.php, pretoze boli trochu poupravene aj ostatne funkcie aby sa mohlo zobrazovat horizontalne menu.

&lt;? #functions.php



// funkcia, ktora bude vytvarat menu pre forum

function menu(){

echo &quot; &lt;div class=&quot;css_menu&quot;&gt;&quot;;

echo&quot; &lt;div class=&quot;menu&quot;&gt;n&quot;;

echo&quot; &lt;a href=&quot;?tema&quot; title=&quot;Vytvorenie novej temy&quot;&gt;Vytvorenie novej temy&lt;/a&gt;n&quot;;

echo&quot; &lt;/div&gt;n&quot;;

echo&quot; &lt;/div&gt;n&quot;;

}



// funkcia, ktora opravi zapis do databazy

function oprav($data){

global $dbc;

if(ini_get('magic_quotes_gpc')){

$data = stripslashes($data);

}

return mysql_real_escape_string($data, $dbc);

}



// funkcia pre vytvorenie temy

function vytvor_temu(){

$error = NULL;

if(isset($_POST[odoslat])){

if(empty($_POST[tema])){

$tema = FALSE;

$error .= &quot;Nezadali ste meno temy!&lt;br /&gt;n&quot;;

} else {

$tema = oprav(htmlspecialchars($_POST[tema]));

}



if(empty($_POST[autor])){

$autor = FALSE;

$error .= &quot;Nezadali ste autora temy!&lt;br /&gt;n&quot;;

} else {

$autor = oprav(htmlspecialchars($_POST[autor]));

}



if(empty($_POST[email])){

$email = &quot;@&quot;;

} else {

$email = oprav(htmlspecialchars($_POST[email]));

}



if(empty($_POST[obsah])){

$obsah = FALSE;

$error .= &quot;Nezadali ste obsah temy!&lt;br /&gt;n&quot;;

} else {

$obsah = oprav(nl2br(htmlspecialchars($_POST[obsah])));

}



if($tema &amp;&amp; $autor &amp;&amp; $email &amp;&amp; $obsah){

$ip = $_SERVER[REMOTE_ADDR];

mysql_query(&quot;INSERT INTO temy(nadpis,obsah,autor,email,datum,uprava,ip) VALUES('$tema','$obsah','$autor','$email',NOW(),NOW(),'$ip')&quot;);

} else {

echo $error;

}

}

echo &quot;&lt;h2&gt;&lt;a href=&quot;/&quot; title=&quot;Vratit sa na obsah fora&quot;&gt;Forum&lt;/a&gt; -&gt; Vytvorenie novej temy&lt;/h2&gt;n&quot;;

menu(); // volanie funkcie pre menu

echo &quot;&lt;form action=&quot;{$_SERVER[PHP_SELF]}?tema&quot; method=&quot;post&quot;&gt;n&quot;;

echo &quot;&lt;fieldset&gt;&lt;legend&gt;Vytvorenie novej temy&lt;/legend&gt;n&quot;;

echo &quot;Nazov temy&lt;br /&gt;&lt;input name=&quot;tema&quot; type=&quot;text&quot; /&gt;&lt;br /&gt;n&quot;;

echo &quot;Autor&lt;br /&gt;&lt;input name=&quot;autor&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 temy:&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&quot; /&gt;n&quot;;

echo &quot;&lt;input type=&quot;reset&quot; value=&quot;Reset&quot; /&gt;n&quot;;

echo &quot;&lt;/fieldset&gt;n&quot;;

echo &quot;&lt;/form&gt;n&quot;;

}



// 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);

}



// funkcia na vypis tem

function zobraz_temy(){

echo &quot;&lt;h2&gt;Forum&lt;/h2&gt;n&quot;;

menu(); // volanie funkcie pre menu

$sql = mysql_query(&quot;SELECT * FROM temy ORDER BY uprava DESC&quot;);

while($stlpec = mysql_fetch_object($sql)){

$id_temy = $stlpec-&gt;id_temy;

$nadpis = $stlpec-&gt;nadpis;

$datum = $stlpec-&gt;datum;

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 ]&lt;/small&gt;n&quot;;

echo &quot;&lt;/div&gt;n&quot;;

}

mysql_free_result($sql);

}



?&gt;

Ako vidite primarna funkcia, ktora bude vytvarat temy(vytvor_temu()) je
pekne dlha. Samozrejme nejde o jej dlzku ale o funkcnost. Zapis do fora nebude
zneuzity, pretoze je chranene proti prazdnym zapisom alebo proti HTML tagom ci
javascriptu alebo dokonca samotnemu PHP. Funkcia menu() bude zobrazovat horizontalne
menu. Bola pouzita takmer v kazdej funkcii. Funkcia oprav() bude opravovat
zapis do databazy. Vsetky funkcie budeme opat volat zo suboru index.php.

&lt;? #index.php

require_once(&quot;config.php&quot;);

require_once(&quot;functions.php&quot;);

include_once(&quot;layout/top.php&quot;);



if(isset($_GET[id])){

if($_GET[id] == $id){

zobraz_temu($id);

}

} elseif(isset($_GET[tema])){

vytvor_temu();

} else {

zobraz_temy();

}



include_once(&quot;layout/bottom.php&quot;);

mysql_close();

?&gt;

Subor bol minimalne upraveny a to tak, ze sa pridalo iba volanie funkcie pre
vytvorenie temy. URL formularu pre vytvorenie temy bude index.php?tema.
Toto by bolo pre tento diel vsetko a nabuduce si ukazeme ako zapisovat prispevky k temam.</block>
</form>
<base href='http://pabi3.com/' />
<title>Fórum v PHP a MySQL - 3. diel</title>
</head>
<body ev:event='load' ev:handler='#title'>
<a href='http://pabi3.com/blog/forum-v-php-a-mysql-3-diel/' title='Návrat'>Návrat</a>
<h1 style='padding:0.5em;'>Fórum v PHP a MySQL - 3. 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>
