2013-09-21 41 views
0

我想在一個定製的論壇上爲不同的用戶顯示不同的數據,但我不太清楚最好的解決方法。針對不同用戶的PHP/MY SQL不同數據

這是我的工作結構:

CREATE TABLE IF NOT EXISTS `forums_forums` (
    `forum_id` int(11) NOT NULL auto_increment, 
    `forum_name` varchar(100) NOT NULL, 
    `order_number` int(11) NOT NULL default '0', 
    `posts` int(11) NOT NULL default '0', 
    `replies` int(11) NOT NULL default '0', 
    `forum_description` text NOT NULL, 
    `allow_topics` int(11) NOT NULL default '0', 
    `admin_only` int(11) NOT NULL default '0', 
    `team` int(11) NOT NULL, 
    PRIMARY KEY (`forum_id`), 
    KEY `forum_name` (`forum_name`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=102 ; 

默認情況下,每個用戶應該看到所有論壇不含管理和團隊具體的。一些用戶將成爲團隊的一部分,但其他人不會參與團隊成員,他們應該看到所有論壇,包括團隊特定的一個,但不包括管理員。

如果用戶是團隊的一部分,那麼users表的團隊ID與論壇團隊相匹配。

這就是我剛纔但我不能制定出最佳的方式來改變它:

if ($GLOBALS["USER"]["team"] == 1) { 
    $a = mysql_query("SELECT * FROM forums_forums ORDER BY order_number"); 
} else { 
    $a = mysql_query("SELECT * FROM forums_forums WHERE admin_only=0 ORDER BY order_number"); 
} 
WHILE ($b = mysql_fetch_array($a)) { 
?> 
<?if ($b["admin_only"] == 1) {?> 
<tr bgcolor="#111111" height="100"> 
<?} else {?> 
<tr bgcolor="#000000" height="100"> 
<?}?> 
<td valign="top"> 
<blockquote style="margin:10px;"> 
<a href="/forums-view.php?forum_id=<?=$b["forum_id"]?>"><font color="#FFFFCC"><b><?=$b["forum_name"]?></b></font></a> 
</blockquote> 
</td> 
<td align="center">&nbsp;<b><?=number_format($b["posts"])?></b>&nbsp;</td> 
<td align="center">&nbsp;<b><?=number_format($b["replies"])?></b>&nbsp;</td> 
<td valign="top"> 
<blockquote style="margin:10px;"> 
<?=$b["forum_description"]?> 
</blockquote> 
</td> 
</tr> 
<?}?> 
</table> 
+0

一個尖的長度TINYINT:你會好得多基於管理狀態改變樣式表或我比HTML內嵌添加條件語句來改變標籤屬性。 – JAL

回答

0

首先,你真的不需要把PHP標籤在每一行,只要保持所有在一個塊。我認爲你可以做的最好的事情,因爲論壇表可能不會包含太多的行是選擇所有行,然後添加條件,以顯示什麼。另外,我假設沒有組的論壇有0

$table = ''; 

$sql = "SELECT * FROM forums_forums ORDER BY order_number ASC"; 
$run = mysql_query($sql); 
while($row = $mysql_fetch_assoc($run)) 
{ 
    if(($_GLOBALS['users']['team'] == 1 && $row['admin_only']) || ($row['team'] > 1 && $_GLOBALS['users']['team'] == $row['team']) || ($row['team'] == 0 && $row['admin_only'])) 
    { 
     $table .= ' 
      <tr> 
       <td>'.$row['forum_name'].'</td> 
       <td>'.$row['replies'].'</td> 
       <td>'.$row['posts'].'</td> 
       <td>'.$row['forum_description'].'</td> 
      </tr>'; 

    } 
} 

echo '<table>'.$table.'</table>'; 

熊記的ID,雖然,這是一個做事的真正討厭的方式。如果你想要更清潔,更具導航性的代碼,然後看看模板。你可以自己編寫一個模板類,而不會很困難。什麼,你應該尋找這樣做則是有一個模板,行中的所有的HTML,經常你需要重複該行的時候。

此外,你應該看看一些數據類型的表。如果admin_only只能是1或0,例如,它應該與1