Ich wollte mir für meine bisheriges script "joberfassung" noch ein board/forum schreiben, doch wie baut man das richtig mit OOP auf, so wie ich es bisher habe kann es nicht annähernt die proffesionellste lösung sein,
PHP-Code:
<?php
class home
{
#################################################################################
function show() {
//global vars
global $tpl; //smarty
global $objDB; //pear
global $PHP_SELF; //php_self
global $prefix; //prefix
//boards auslesen und ausgeben
$this->board();
//postgewählt
if(get_var('board', TYPE_GET) && get_var('threat', TYPE_GET)) {
$this->post();
//boardgewählt
}elseif (get_var('board', TYPE_GET) ) {
$this->threat();
}
}
##################################################################################
function board() {
//global vars
global $tpl; //smarty
global $objDB; //pear
global $PHP_SELF; //php_self
global $prefix; //prefix
//board auslesn und ausgeben
$sql = "SELECT
B.name as bname, B.bid, B.info as binfo,
BP.titel ptitel, BP.eid, BP.date,
E.name as ename
FROM
".PREFIX."board B
LEFT JOIN ".PREFIX."boardpost BP
ON BP.bid = B.bid
LEFT JOIN ".PREFIX."employee E
ON E.eid = BP.eid
GROUP BY
BP.bid
ORDER BY
B.bid, BP.date";
$result = $objDB->query($sql);
if(DB::isError($result)) {
die($result->getMessage());
}
while($row = $result->fetchrow(DB_FETCHMODE_ASSOC)) {
$this->boarddata[] = $row;
}
//Templates aufbereiten
$tpl->assign('boarddata', $this->boarddata);
$this->call_tpl = "board_ubersicht.tpl";
}
##################################################################################
function threat() {
//global vars
global $tpl; //smarty
global $objDB; //pear
global $PHP_SELF; //php_self
global $prefix; //prefix
//board auslesn und ausgeben
$sql = "SELECT
B.name as bname, B.bid, B.info as binfo,
BT.name as btname, BT.btid as btid, BT.date as btdate,
BP.titel ptitel, BP.eid, BP.date, COUNT(BP.bpid) as bpreply,
E.name as ename
FROM
".PREFIX."board B
LEFT JOIN ".PREFIX."boardthreat BT
ON BT.bid = ".get_var('board', TYPE_GET)."
LEFT JOIN ".PREFIX."boardpost BP
ON BP.btid = BT.btid
LEFT JOIN ".PREFIX."employee E
ON E.eid = BP.eid
GROUP BY
BT.btid
ORDER BY
B.bid, BP.date";
$result = $objDB->query($sql);
if(DB::isError($result)) {
die($result->getMessage());
}
while($row = $result->fetchrow(DB_FETCHMODE_ASSOC)) {
$this->threatdata[] = $row;
}
//Templates aufbereiten
$tpl->assign('threatdata', $this->threatdata);
$this->call_tpl = "threat_ubersicht.tpl";
}
##################################################################################
##################################################################################
function post() {
//global vars
global $tpl; //smarty
global $objDB; //pear
global $PHP_SELF; //php_self
global $prefix; //prefix
//board auslesn und ausgeben
$sql = "SELECT
B.name as bname, B.bid, B.info as binfo,
BT.name as btname, BT.btid as btid, BT.date as btdate,
BP.titel ptitel, BP.eid, BP.date, BP.titel as bptitel, BP.text as bptext, COUNT(BP.bpid) as bpreply,
E.name as ename
FROM
".PREFIX."board B
LEFT JOIN ".PREFIX."boardthreat BT
ON BT.bid = ".get_var('board', TYPE_GET)."
LEFT JOIN ".PREFIX."boardpost BP
ON BP.btid = ".get_var('threat', TYPE_GET)."
LEFT JOIN ".PREFIX."employee E
ON E.eid = BP.eid
GROUP BY
BP.bpid
ORDER BY
B.bid, BP.date
";
$result = $objDB->query($sql);
if(DB::isError($result)) {
die($result->getMessage());
}
while($row = $result->fetchrow(DB_FETCHMODE_ASSOC)) {
$this->postdata[] = $row;
}
//Templates aufbereiten
$tpl->assign('postdata', $this->postdata);
$this->call_tpl = "post_ubersicht.tpl";
}
function home()
{
//subnav aufrugen
//global vars
global $tpl; //smarty
$tpl->assign('mainnav', 'projekt');
if(!isset($_GET['action'])){
$_GET['action'] = 'home';
}
switch($_GET['action']) {
case "home":
$this->show();
break;
default:
$this->show();
break;
}
}
}
?>
Kommentar