Заключване на тема

kristiqn2

Registered
Имам един форум не е phpbb нито някакъв друг !
На ръка е правен смисъл такъв не е готово система и искам в този форум да сложа бутон Заключи темата и този бутон да се вижда само от ADMINISTRATOR но искам и да работи но не знам как да стане :D ето го кода на ето го sql на таблицата forum:

[sql]CREATE TABLE IF NOT EXISTS `forums` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`cat` int(11) NOT NULL,
`title` varchar(255) NOT NULL,
`author` varchar(15) NOT NULL,
`post` text NOT NULL,
`date` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=53 ;
[/sql]
 

alex3

Registered
Целта е да имаш таблица за темите и да има поле за него: topic_locked tinyint(1) default '0' например.1 е заключена темата и 0 е отключена. :)

Относно правата на администратора, разучи за acl модела от Гугъл.
 

kristiqn2

Registered
Да за правата аз съм си го направил но за самото заключване как да го направя да не могат да пишат ?
 

M1tq96

Registered
еми просто проверка .. if($row['topic_locked'] == 1){ echo "стига толкос спамове.. :Д" ; }else{echo "пиши и са радвай .. ";}; не виждам какво му е сложното .. ако все пак нищо не разбра .. дай да ти жидим страницата за логин и там кадето са листват отговорите .. ии щи я напраим .. :)
 

kristiqn2

Registered
Ами ще пробвам сам да се оправя но искам да кажа само че то е сайт с вграден форум не съм ги правил аз готова система е системата на diamanche.info (не е реклама) :)
 

kristiqn2

Registered
офф, нещо не мога да се оправя някой може ли да ми го направи :(
ето го файла viewtopic.php:

PHP:
<? include("header.php"); 
$id = htmlspecialchars($_GET['id']);
$sql = mysql_query("SELECT * FROM forums WHERE id='$id'");
if(mysql_num_rows($sql)>0)
{
$r = mysql_fetch_array($sql);
$sqler = mysql_query("SELECT * FROM forum_cats WHERE id='$r[cat]'");
$ro = mysql_fetch_array($sqler);
$user = $_SESSION['username'];
if($_SESSION['username'])
{
$queryy = mysql_query("SELECT * FROM forum_reads WHERE user='$user' and fid='$r[id]'");
if(mysql_num_rows($queryy)>0)
{
$sql = mysql_query("DELETE FROM forum_reads WHERE user='$user' and fid='$r[id]'");
}
}
?>
  <div style="clear: both;"> </div>
  
<?php include("menu_left.php"); ?>

<div class="menu_right">
 <div class="menu_right_header">Преглед на тема</div>
  <div class="menu_right_body">
<table class="bord" width="100%" cellspacing="2" cellpadding="2">
<tr>
<td width="100%"> Форум > <? echo $ro['value']; ?> > <? echo $r['title']; ?></td>
</tr>
</table>
<br />
<? if($urow['level'] == "admin")
{ ?>
<table border="0"><tr><td>
<form action="post.php?a=new" method="post">
<input type="hidden" name="cat" value="<? echo $ro['id']; ?>">
<input type="submit" name="add_t" value="Нова тема" class="btn">
</form></td><td>
<form action="post.php?a=replay" method="post">
<input type="hidden" name="fid" value="<? echo $r['id']; ?>">
<input type="hidden" name="cat" value="<? echo $ro['id']; ?>">
<input type="submit" name="add_t" value="Ново мнение" class="btn">
</form>
<? if($_SESSION['moderator'])
{ ?>
<form action="post.php?a=replay" method="post">
<input type="hidden" name="fid" value="<? echo $r['id']; ?>">
<input type="hidden" name="cat" value="<? echo $ro['id']; ?>">
<input type="submit" name="add_t" value="Заключи" class="btn">
</form>
<?php
}
?>
</td></tr></table>

<br />
<? } ?>

<? if($_GET['page'] == NULL) { ?>
<table border="0" width="100%" cellspacing="2" cellpadding="2">
<tr>
<td valign="top">
<? 
$s = mysql_query("SELECT * FROM users WHERE username='$r[author]'");
$row = mysql_fetch_array($s);
?>
<table class="bord" width="100%" cellspacing="2" cellpadding="2">
<tr>
<td width="100%" class="btext"> <a href="<? echo $siteurl.$row['username']; ?>"><span class="btext"><? echo $row['username']; ?></span></a></td>
</tr>
<tr>
<td width="100%" align="center">
<?
if($row['pol'] == "boy") { $clas = 'm_sex'; } else { $clas = 'f_sex'; } 
if($row['osnovna'] == NULL) { echo '<img src="resize.php?img=images/noimage.jpg&w=120&h=260" class="'.$clas.'" border="0">'; }
else { echo '<img src="resize.php?img='.$row[osnovna_normal].'&w=120&h=160" width="120px" height="160px" border="0" class="'.$clas.'">'; } ?><br/>
<?
if($row['level'] == "member") { $color = "#a00080"; $ra = "Потребител"; }
if($row['level'] == "uploader") { $color = "#e18a00"; $ra = "Uploader"; }
if($row['level'] == "moderator") { $color = "#ff0006"; $ra = "Модератор"; }
if($row['level'] == "admin") { $color = "#2400ff"; $ra = "Администратор"; }
?>
<span style="color: <? echo $color; ?>;"><? echo $ra; ?></span><br/>
Статус: <?
$timeon = time()-1800;
$timel = $row['timeonline'];
if($timel > $timeon)
{
echo '<span style="color: green;"><b>Онлайн</b></span>';
}
else
{
echo '<span style="color: red;"><b>Офлайн</b></span>';
}
?>
</td>
</tr>
</table>
</td>
<td valign="top" width="100%" class="bord3">
<b>
<? if($_SESSION['username'] == $r['author']) {
?>
<a href="edit.php?p=forum&id=<? echo $r['id']; ?>">[редактирай]</a>
<a href="delete.php?p=forum&id=<? echo $r['id']; ?>">[изтрий]</a>
<?
}
if($urow['level'] == "moderator") {
?>
<a href="edit.php?p=forum&id=<? echo $r['id']; ?>">[[редактирай]]</a>
<a href="delete.php?p=forum&id=<? echo $r['id']; ?>">[изтрий]</a>
<?
}
if($urow['level'] == "admin") {
?>
<a href="edit.php?p=forum&id=<? echo $r['id']; ?>">[редактирай]</a>
<a href="delete.php?p=forum&id=<? echo $r['id']; ?>">[изтрий]</a>
<?
}
?> Дата на публикация: <? echo $r['date']; ?></b>
<br />
<br />
<? echo bbcode($r['post']); ?>
</td>
</tr>
</table>

<?
}
?>

<? if($_GET['page'] == 1) { ?>
<table border="0" width="100%" cellspacing="2" cellpadding="2">
<tr>
<td valign="top">
<? 
$s = mysql_query("SELECT * FROM users WHERE username='$r[author]'");
$row = mysql_fetch_array($s);
?>
<table class="bord" width="100%" cellspacing="2" cellpadding="2">
<tr>
<td width="100%" class="btext"> <a href="<? echo $siteurl.$row['username']; ?>"><span class="btext"><? echo $row['username']; ?></span></a></td>
</tr>
<tr>
<td width="100%" align="center">
<?
if($row['pol'] == "boy") { $clas = 'm_sex'; } else { $clas = 'f_sex'; } 
if($row['osnovna'] == NULL) { echo '<img src="resize.php?img=images/dav.png&w=120&h=260" class="'.$clas.'" border="0">'; }
else { echo '<img src="resize.php?img='.$row[osnovna_normal].'&w=120&h=160" width="120px" height="160px" border="0" class="'.$clas.'">'; } ?><br/>
<?
if($row['level'] == "member") { $color = "#a00080"; $ra = "Потребител"; }
if($row['level'] == "moderator") { $color = "#ff0006"; $ra = "Модератор"; }
if($row['level'] == "admin") { $color = "#2400ff"; $ra = "Администратор"; }
?>
<span style="color: <? echo $color; ?>;"><? echo $ra; ?></span><br/>
Статус: <?
$timeon = time()-1800;
$timel = $row['timeonline'];
if($timel > $timeon)
{
echo '<span style="color: green;"><b>Онлайн</b></span>';
}
else
{
echo '<span style="color: red;"><b>Офлайн</b></span>';
}
?>
</td>
</tr>
</table>
</td>
<td valign="top" width="100%" class="bord3">
<b><? if($_SESSION['username'] == $r['author']) {
?>
<a href="edit.php?p=forum&id=<? echo $r['id']; ?>">[редактирай]</a>
<a href="delete.php?p=forum&id=<? echo $r['id']; ?>">[изтрий]</a>
<?
}
if($urow['level'] == "moderator") {
?>
<a href="edit.php?p=forum&id=<? echo $r['id']; ?>">[редактирай]</a>
<a href="delete.php?p=forum&id=<? echo $r['id']; ?>">[изтрий]</a>
<?
}
if($urow['level'] == "admin") {
?>
<a href="edit.php?p=forum&id=<? echo $r['id']; ?>">[редактирай]</a>
<a href="delete.php?p=forum&id=<? echo $r['id']; ?>">[изтрий]</a>
<?
}
?> Дата на публикация: <? echo $r['date']; ?></b>
<br />
<br />
<? echo bbcode($r['post']); ?>
</td>
</tr>
</table>

<?
}
?>


<?php
$thispage = $PHP_SELF;

$showeachside = 5; //  Колко страници да се показват отляво и отдясно на текущата страница

// Колко реда на страница
$rowsPerPage = 15;

// Подразбираме показване на първа страница
$pageNum = 1;

// ако $_GET['page'] е дифинирано използваме тази страница
if(isset($_GET['page']))
{
    $pageNum = $_GET['page'];
}
if(!preg_match("/^(?i)[0-9_]*$/", $_GET['page'])) { $pageNum = '1'; }
if($_GET['page'] == NULL) { $pageNum = '1'; }

// пресмятаме отместването
$offset = ($pageNum - 1) * $rowsPerPage;


// тук трябва да напишеш своята заявка
    $query = "SELECT * FROM topics WHERE fid='$r[id]' ORDER BY ID LIMIT $offset, $rowsPerPage";
  $result = mysql_query($query) or die(mysql_error()."[".$query."]");
if(mysql_num_rows($result)>0)
{
while ($a = mysql_fetch_array($result))
{
?>
<div id="topic<? echo $a['id']; ?>"></div>
<table border="0" width="100%" cellspacing="2" cellpadding="2">
<tr>
<td valign="top">
<? 
$s = mysql_query("SELECT * FROM users WHERE username='$a[author]'");
$row = mysql_fetch_array($s);
?>
<table class="bord" width="100%" cellspacing="2" cellpadding="2">
<tr>
<td width="100%" class="btext"> <a href="<? echo $siteurl.$row['username']; ?>"><span class="btext"><? echo $row['username']; ?></span></a></td>
</tr>
<tr>
<td width="100%" align="center">
<? 
if($row['pol'] == "boy") { $clas = 'm_sex'; } else { $clas = 'f_sex'; } 
if($row['osnovna'] == NULL) { echo '<img src="resize.php?img=images/noimage.jpg&w=120&h=260" class="'.$clas.'" border="0">'; }
else { echo '<img src="resize.php?img='.$row[osnovna_normal].'&w=120&h=160" width="120px" height="160px" border="0" class="'.$clas.'">'; } ?><br/>
<?
if($row['level'] == "member") { $color = "#a00080"; $ra = "Потребител"; }
if($row['level'] == "moderator") { $color = "#ff0006"; $ra = "Модератор"; }
if($row['level'] == "admin") { $color = "#2400ff"; $ra = "Администратор"; }
?>
<span style="color: <? echo $color; ?>;"><? echo $ra; ?></span><br/>
Статус: <?
$timeon = time()-1800;
$timel = $row['timeonline'];
if($timel > $timeon)
{
echo '<span style="color: green;"><b>Онлайн</b></span>';
}
else
{
echo '<span style="color: red;"><b>Офлайн</b></span>';
}
?>
</td>
</tr>
</table>
</td>
<td valign="top" width="100%" class="bord3">
<b><? if($_SESSION['username'] == $r['author']) {
?>
<a href="edit.php?p=topic&id=<? echo $a['id']; ?>">[редактирай]</a>
<a href="delete.php?p=topic&id=<? echo $a['id']; ?>">[изтрий]</a>
<?
}
if($urow['level'] == "moderator") {
?>
<a href="edit.php?p=topic&id=<? echo $a['id']; ?>">[редактирай]</a>
<a href="delete.php?p=topic&id=<? echo $a['id']; ?>">[изтрий]</a>
<?
}
if($urow['level'] == "admin") {
?>
<a href="edit.php?p=topic&id=<? echo $a['id']; ?>">[редактирай]</a>
<a href="delete.php?p=topic&id=<? echo $a['id']; ?>">[изтрий]</a>
<?
}
?>
Дата на публикация: <? echo $a['date']; ?></b>
<br />
<br />
<? echo bbcode($a['post']); ?>
</td>
</tr>
</table>

<br />
<?
}
}
else
{
?>
<table border="0" cellspacing="2" cellpadding="2" width="100%">
<tr>
<td class="bord3" height="40" width="100%">Няма мнения за тази тема.</td>
</tr>
</table>
<?
}

// колко реда общо имаме ?
$query1   = "SELECT COUNT(id) AS numrows FROM topics WHERE fid='$r[id]'";
$result  = mysql_query($query1) or die('Error, query failed');
$row     = mysql_fetch_array($result, MYSQL_ASSOC);

$num = $row['numrows']; // броя на редовете

$start = ($pageNum -1) * $rowsPerPage;
if(empty($start))$start=0;  // текуща стартова позиция

$max_pages = ceil($num/$rowsPerPage); // брой на страниците
$cur = ceil($start/$rowsPerPage)+1; // текуща страница
?>

<table border="0" align="center" cellpadding="0" cellspacing="0">
    <tr>

        <td align="center" valign="middle">
            <?php
            if(($start-$rowsPerPage) >= 0)
            {
                $next = $cur - 1;
                ?>
                <a class="page" href="<?php print("$thispage?id=$id&page=1");?>">Първа</a>
                <a class="page" href="<?php print("$thispage".($next>0?("?id=".$id."&page=").$next:""));?>">Назад</a>
                <?php
            }
            ?>
        </td>


        <td align="center" valign="middle">
            <table>
                <tr>
                    <td colspan="3" align="center" valign="middle">
                        <?php
                        $eitherside = ($showeachside * $rowsPerPage);
                        if($start+1 > $eitherside)print (" .... ");
                        $pg=1;
                        for($y=0;$y<$num;$y+=$rowsPerPage)
                        {
                            $class=(($y==$start)?"active":"")."page";
                            if(($y > ($start - $eitherside)) && ($y < ($start + $eitherside)))
                            {
                                if ($y <> $start) {
                                    ?>
                                     <a class="<?php print($class);?>" href="<?php print("$thispage"."?id=".$id."&page=".(($y/$rowsPerPage)+1));?>"><?php print($pg);?></a> 
                                    <?php
                                } else {
                                    ?>
                                     <a class="<?php print($class);?>"><?php print($pg);?></a> 
                                    <?php
                                }
                            }
                            $pg++;
                        }
                        if(($start+$eitherside)<$num)print (" .... ");
                        ?>
                    </td>

                </tr>
            </table>
        </td>


        <td align="center" valign="middle">
            <?php
            if (($start+$rowsPerPage) < $num)
            {
                $next = $cur + 1;
                ?>
                <a class="page" href="<?php print("$thispage?id=$id&page=".$next);?>">Напред</a>
                <a class="page" href="<?php print("$thispage?id=$id&page=$max_pages");?>">Последна</a>
                <?php
            }
            ?>
        </td>

    </tr>

    <tr>
        <td colspan="3" align="center" valign="middle"> </td>
    </tr>

</table>
  </div>
 <div class="menu_right_down"> </div>
</div>
  
  <div style="clear: both;"> </div>
<?
}
else
{
header("Location: forum.php");
} include("footer.php"); ?>
ето го и SQL:
[sql]CREATE TABLE IF NOT EXISTS `forums` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`cat` int(11) NOT NULL,

`title` varchar(255) NOT NULL,

`author` varchar(15) NOT NULL,

`post` text NOT NULL,

`date` varchar(255) NOT NULL,

`topic_locked` tinyint(255) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=53 ;
[/sql]
 

lamer_PHP

Registered
Просто където ти е формата за добавяне на нов отговор слагаш този код:

PHP:
if($row['forum_locked'] == 0) {
тук слагаш кода за формата за писане на нов отговор, редактиране
} else { 
echo "Вие не може да пишете в тази тема, защото тя е заключена!";
}
 

kristiqn2

Registered
Добре но как да направя UPDATE topic_locked='1' Пробвах така:
PHP:
mysql_query("UPDATE forums_cats SET topic_locked='1' ") or die (mysql_error());
но не става :(
 

nom3r1

Registered
kristiqn2 каза:
Добре но как да направя UPDATE topic_locked='1' Пробвах така:
PHP:
mysql_query("UPDATE forums_cats SET topic_locked='1' ") or die (mysql_error());
но не става :(

Последно темата ли искаш да заключиш или категорията..?

Ако е за темата и таблицата за "заглавия" и т.н. ти е: `topics` правиш следното:

UPDATE `topics` SET topic_locked='1' WHERE id='{$get_id}';

като въпросната променлива $get_id взимаш с нея, id-то на темата.

Не виждам нищо сложно.
 

kristiqn2

Registered
Става дума за таблицата `forums` пробвах твоя код но не става нещо :(
ето това съм направил:
PHP:
include "connect.php";
$get_id = $_POST['id'];
mysql_query("UPDATE `forums` SET topic_locked='1' WHERE id='$get_id'") or die (mysql_error());
 

Горе