Новости с коментариями

  • Автор темы mobisaite
  • Дата начала
mobisaite
Участник
Сообщения
314
Реакции
63
Предложение создать новости с комментариями думаю будет полезно для ферм, мини ТЗ:
1) При нажатии на Заглавие новости должны попадать на страницу данной новости
2) на данной странице можно добавлять комментарии
3) Постраничная навигация комментов
Ну и мое небольшое начало в htacess прописываем
PHP:
# Новости
RewriteRule ^news(/?)+$ index.php?menu=news [L]
RewriteRule ^news/([-a-zA-Z0-9_]+)(/?)+$ index.php?menu=news&name=$1 [L]
делаем запросы в базу 1 сами новости стандартный запрос
PHP:
CREATE TABLE IF NOT EXISTS `db_news` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(100) NOT NULL,
  `news` text NOT NULL,
  `date_add` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
2 для коментариев
PHP:
CREATE TABLE IF NOT EXISTS `db_news_com` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `news_id` int(11) NOT NULL,
  `login` varchar(55) NOT NULL,
  `date` int(11) NOT NULL,
  `type` int(1) NOT NULL,
  `text` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
следующий шаг создание страницы для отдельного вывода каждой новости
 
Последнее редактирование:
kvozimir
Участник
Сообщения
1.943
Реакции
409
ICQ
734713 734713
Skype
ты хочешь чтоб каждая новая новость была на отдельноей странице???

типа так Всем привет мы открылить ниже типа оставить коменты

на второй станице типа Внимание запущен конкурс рефералов ниже оставить коменты
 
mobisaite
Участник
Сообщения
314
Реакции
63
kvozimir написал(а):
ты хочешь чтоб каждая новая новость была на отдельноей странице???

типа так Всем привет мы открылить ниже типа оставить коменты

на второй станице типа Внимание запущен конкурс рефералов ниже оставить коменты
Нет новости все на одной странице пока)) а при нажатии на Заглавие новости мы попадаем уже на ее страницу а там так же описание + можно оставить комент
 
alexsoft59
Капитан очевидность...).
Участник
Сообщения
347
Реакции
29
mobisaite написал(а):
Нет новости все на одной странице пока)) а при нажатии на Заглавие новости мы попадаем уже на ее страницу а там так же описание + можно оставить комент
Ну такого не имеем,а вот новости с возможностью оставить положительный либо отрицательный голос есть...))
 
mobisaite
Участник
Сообщения
314
Реакции
63
модераторы замените первый пост
Выкладываю новости с комментариями сделала сама тестила только на денвере
[HIDE=50]
заменить скрипт в файле _news.php
Код:
<?
$usname = $_SESSION["user"];
$usid = $_SESSION["user_id"];
$date = time();
$en = 10; // Стоимость отзыва
$db->Query("SELECT * FROM db_news");
$news = $db->FetchArray();
$newsid = $news['id'];
$db->Query("SELECT * FROM db_users_b WHERE id = '$usid' LIMIT 1");
$user_data = $db->FetchArray();

if(isset($_GET['name'])) {
$name = htmlspecialchars($_GET['name'], ENT_QUOTES, 'windows-1251');
$q = $db->Query("SELECT * FROM db_news WHERE id = '$name'");
$us_inf = $db->FetchArray($q);
$us = $us_inf['id'];
if(isset($_POST['comment'])) {
$type = intval($_POST['type']);
$com = htmlspecialchars($_POST['comment'], ENT_QUOTES, 'windows-1251');
if (preg_match("/https:\/\/|http:\/\/|[0-9a-z_]+\.[a-z\/]{2,4}/i", $name)) # запрещаем символы < и >
{ echo "<center><b><font color = 'red'>коментарий содержит запрещенные символы</font></b></center><BR />";
} else {
$db->Query("SELECT * FROM db_news_com WHERE news_id = '$us' AND login = '$usname'");
    if(!empty($com)) {
        if($type == 1 or $type == 2 or $type == 3) {
       if($en <= $user_data["money_b"]){
                if($db->NumRows() <= 100) {
        $db->Query("INSERT INTO db_news_com (news_id, login, date, type, text) VALUES ('$us', '$usname', '$date', '$type', '$com')");
        $db->Query("UPDATE db_users_b SET money_b = money_b - '$en' WHERE id = '$usid'");
        $ms = '<center><font color="green">Отзыв успешно оставлен!</font></center>';
        header('Refresh: 1;URL=/news/'.$name);
                }else echo "<center><font color = 'red'><b>Оставлять разрешено не более 100 коментариев к одной новости!</b></font></center><BR />";
                }else echo "<center><font color = 'red'><b>Недостаточно энергии</b></font></center><BR />";
        }else echo "<center><font color = 'red'><b>Введите тип коментария</b></font></center><BR />";

    }else echo "<center><font color = 'red'><b>Введите текст комментария</b></font></center><BR />";
}}
if( $name == $newsid) {
echo "<center><b><font color = 'red'>Новости не существует</font></b></center><BR />";
} else {
?>

<div class="s-bk-lf">
    <div class="acc-title">Новость #<?=$us_inf['id']; ?> - <?=$us_inf["title"]; ?></div></div>
<div class="silver-bk"><div class="clr"></div>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td align="left"><h3><font color = '#0F7196'></font></h3></td>
    <td align="right"><strong><font color = '#0F7196'><?=date("d.m.Y",$us_inf["date_add"]); ?></font></strong></td>
  </tr>

  <tr>
    <td colspan="2"><font color = '#0F7196'><?=$us_inf["news"]; ?></font></td>
  </tr>
</table>

<BR />


<script language="JavaScript">
function show(obj) {
if (document.getElementById(obj).style.display == 'none')
document.getElementById(obj).style.display = 'block';
else document.getElementById(obj).style.display = 'none';
}
</script>

<br>

<center>
<?=$ms; ?>
<span onclick="show('1')"><a onclick="return false"><button type="button">Оставить комментарий</button></a></span>

<td>

</td><br><br>

<span class="sub" id="1" style="display: none;">
<form method="post" action="">
<label>Тип комментария</label>
<select name="type" size="1">
<option value="1" selected>Нейтральный</option>
<option value="2">Положительный</option>
<option value="3">Отрицательный</option>
</select>
<br>
<textarea name="comment" rows="5" cols="40"></textarea>
<br />
<input class="buttonmail" type="submit" name="com_send" value="Добавить" />
</form>
<br><br>
Стоимость добавления комментария - 10 энергии.
</span>

</center>


<br>
<div class="s-bk-lf">
    <div class="acc-title">Коментарии </div>
</div>
<hr>

<?
$db->Query("SELECT * FROM db_news_com WHERE news_id = '$us' ORDER BY id DESC");
if($db->NumRows() == 0) {
?>
<center>Нет коментариев</center>

<?
}
}
while($rt = $db->FetchArray()) {
if($rt['type'] == 1) {$type = '<font color="#5E6068">Нейтральный коментарий</font>'; }elseif($rt['type'] == 2) {$type = '<font color="#008000">Положительный коментарий</font>';} elseif($rt['type'] == 3) {$type = '<font color="#db0000">Отрицательный коментарий</font>';}
?>
<table width="100%"  border="0" align="center" cellspacing="0" class="tbl_stat">
<tr>
    <td width="70"></td>
<td valign="top" class="nobdr">
                                &nbsp;
    <?=date('d-m-Y H:i', $rt['date']); ?>  <b><?=$type; ?></b>
    <b><a href='/account/wall/<?=$rt['login']; ?>' target='_blank'><?=$rt['login']; ?></a></b>
    <img src="/img/star_yellow17.png" alt="Рейтинг" width="17" height="17" border="0" align="absmiddle" title="Рейтинг"> <font color="#2FA0DC"><?=$us_inf['rating']; ?></font>
                       
    <br><br>
    <?=$rt['text']; ?>
                       
                       
                       
</td>
</tr> </table>
<tr>
<td colspan="2"><hr></td>
</tr>
<? } ?>

<br><br>


</div>
<div class="clr"></div>


</div>

<? } else {?>

<?PHP
$_OPTIMIZATION["title"] = "Новости";
$_OPTIMIZATION["description"] = "Новости проекта";
$_OPTIMIZATION["keywords"] = "Новости нашего проекта";
?>
<div class="s-bk-lf">
    <div class="acc-title">Новости</div></div>

<div class="silver-bk">
<?PHP

$db->Query("SELECT * FROM db_news ORDER BY id DESC");

if($db->NumRows() > 0){

    while($news = $db->FetchArray()){
    ?>

   
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td align="left"><h3><font color = '#0F7196'><?=$news["title"]; ?></font></h3></td>
    <td align="right"><strong><font color = '#0F7196'><?=date("d.m.Y",$news["date_add"]); ?></font></strong></td>
  </tr>

  <tr>
    <td colspan="2"><font color = '#0F7196'><?=$news["news"]; ?></font></td>
  </tr>
    <tr>
    <td colspan="2"><b><a href='/news/<?=$news["id"]; ?>' target='_blank'>Коментировать</a></b></td>
  </tr>
</table>
прописать в .htacess
Код:
# Новости
RewriteRule ^news(/?)+$ index.php?menu=news [L]
RewriteRule ^news/([-a-zA-Z0-9_]+)(/?)+$ index.php?menu=news&name=$1 [L]
сделать запрос в базу
Код:
CREATE TABLE IF NOT EXISTS `db_news_com` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `news_id` int(11) NOT NULL,
  `login` varchar(55) NOT NULL,
  `date` int(11) NOT NULL,
  `type` int(1) NOT NULL,
  `text` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
[/HIDE]
 
Последнее редактирование:
alexsoft59
Капитан очевидность...).
Участник
Сообщения
347
Реакции
29
mobisaite написал(а):
модераторы замените первый пост
Выкладываю новости с комментариями сделала сама тестила только на денвере
***Hidden text***
Попробовал,поставил... или чего то не то в коде,хотя странно,ведь он рабочий... но у меня не отображается ни чего,чистая страница и видимо ошибка при подключении к БД...
 
mobisaite
Участник
Сообщения
314
Реакции
63
alexsoft59 написал(а):
Попробовал,поставил... или чего то не то в коде,хотя странно,ведь он рабочий... но у меня не отображается ни чего,чистая страница и видимо ошибка при подключении к БД...
Забыла там энергия нужна для отправки замените en на money_b и поменяйте стили где заголовок страницы на свои
 
Последнее редактирование:
alexsoft59
Капитан очевидность...).
Участник
Сообщения
347
Реакции
29
mobisaite написал(а):
Забыла там энергия нужна для отправки замените en на money_b
Блин,не помогло и это даже...))
 
mobisaite
Участник
Сообщения
314
Реакции
63
Последнее редактирование:
alexsoft59
Капитан очевидность...).
Участник
Сообщения
347
Реакции
29
  • #10
mobisaite написал(а):
Заменила код исправила все что забыла
ну да,теперь под сполером только ***Hidden text*** и видно...))
 
mobisaite
Участник
Сообщения
314
Реакции
63
  • #11
я все прекрасно вижу не знаю что у тебя
 
alexsoft59
Капитан очевидность...).
Участник
Сообщения
347
Реакции
29
  • #12
mobisaite написал(а):
я все прекрасно вижу не знаю что у тебя
не,серьезно просто пишет ***Hidden text*** при нажатии на сполер,до смены кода был порядок...))
 
mobisaite
Участник
Сообщения
314
Реакции
63
  • #13
alexsoft59 написал(а):
не,серьезно просто пишет ***Hidden text*** при нажатии на сполер,до смены кода был порядок...))
Нажми на сполер в моем сообщении а не в своем
 
alexsoft59
Капитан очевидность...).
Участник
Сообщения
347
Реакции
29
  • #14
mobisaite написал(а):
Нажми на сполер в моем сообщении а не в своем
Ну да,так и было видимо...)) Только один фиг не работает,ладно,будем разбираться сами...
 
alexsoft59
Капитан очевидность...).
Участник
Сообщения
347
Реакции
29
  • #15
mobisaite написал(а):
Заменила код исправила все что забыла
Блин,да что такое то,не могу ни как понять просто,почему не работает то??????? Может кто то устанавливал себе?
 
dima20010628
Участник
Сообщения
83
Реакции
10
  • #16
а кто может поделиться кодом новостей с оценками(нравится,не нравится ) ?
 
alexsoft59
Капитан очевидность...).
Участник
Сообщения
347
Реакции
29
  • #17
dima20010628 написал(а):
а кто может поделиться кодом новостей с оценками(нравится,не нравится ) ?
Я могу...))
 
alexsoft59
Капитан очевидность...).
Участник
Сообщения
347
Реакции
29
  • #19
PHP:
<?PHP
$_OPTIMIZATION["title"] = "Новости";
$_OPTIMIZATION["description"] = "Новости проекта";
$_OPTIMIZATION["keywords"] = "Новости нашего проекта";
?>
<div class="s-bk-lf">
    <div class="acc-title">Новости</div>
</div>
<div class="silver-bk"><div class="clr"></div>
<font  color = "#000"><?PHP

$usid = $_SESSION["user_id"];
//Vote news
if(isset($_GET['id_ans'])) {   //Dis Like
    if($_GET['rating'] == "dislike") {
        $dislike = 1;
        $oklike = 0;
        $like = "-";
        //$db->Query("UPDATE db_otziv SET like = like + 1 WHERE id = '$id_ans'");
    } elseif ($_GET['rating'] == "oklike") {
        $dislike = 0;
        $oklike = 1;
        $like = "+";
        //$db->Query("UPDATE db_otziv SET like = like + 1 WHERE id = '$id_ans'");
    } else {
        echo "<font color=\"red\"><center>Неизвестная ошибка! Обратитесь к администрации!</center></font>";
    }
$id_ans = intval($_GET['id_ans']);


        $db->Query("SELECT * FROM db_vote_news WHERE user_id = '$usid' AND id_news = '$id_ans'");
        if ($db->NumRows() >= 1) {
            echo "<font color=\"red\"><center>Вы уже оценивали данный отзыв!</center></font>";
        } else {
$db->Query("INSERT INTO db_vote_news (user_id, dislike, oklike, id_news) VALUES ($usid, $dislike, $oklike, $id_ans) ");
$db->Query("UPDATE db_news SET `like` = `like` $like 1 WHERE id = '$id_ans'");
    echo "<font color=\"green\"><center>Ваша оценка принята!</center></font>";
 
        }
 
 
 
}




$db->Query("SELECT * FROM db_news ORDER BY id DESC");

if($db->NumRows() > 0){

    while($news = $db->FetchArray()){
 
    ?>

         
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
    <td align="left"><h3><font  color = "#802B0F"><?=$news["title"]; ?></font></h3></td>
    <td align="right"><strong><div class="line-st1"><font  color = "#802B0F"><?=date("d.m.Y",$news["date_add"]); ?></font></div></strong></td>
  </tr>

  <tr>
    <td colspan="2"><?=$news["news"]; ?></td>
  </tr>
  <tr>
  <?php
if ($news['like'] > 0) {
$like = '<font color="green">'.$news['like'].'</font>';
} elseif($news['like'] < 0) {
$like = '<font color="red">'.$news['like'].'</font>';
} elseif ($news['like'] == 0) {
$like = $news['like'];
}
if (!$usid) {
echo "<td><a href=\"#\" onClick=\"alert('Вам требуется авторизоваться, чтобы оценить запись')\"><img src=\"http://s17.rimg.info/95958c121924bc27780adcb3d382cb2e.gif\"></a> &nbsp;&nbsp;".$like;
echo " &nbsp;&nbsp;<a href=\"#\" onClick=\"alert('Вам требуется авторизоваться, чтобы оценить запись')\"><img src=\"http://s20.rimg.info/fc15db41ec50ab9dd0dd06be83d545c4.gif\"></a></td>";

} else {
echo '<td><a href="/?menu=news&id_ans='.$news['id'].'&rating=dislike"><img src="http://s17.rimg.info/95958c121924bc27780adcb3d382cb2e.gif"></a> &nbsp;&nbsp;'.$like;
echo ' &nbsp;&nbsp;<a href="/?menu=news&id_ans='.$news['id'].'&rating=oklike"><img src="http://s20.rimg.info/fc15db41ec50ab9dd0dd06be83d545c4.gif"></a></td>';
  }
  ?>
  </tr>
</table>
<BR />
<center><img src="/img/tretwer.png" alt=""></center>
    <?PHP
 
    }

}else echo "<center>Новостей нет :(</center>";

?>
</div><font>
<div class="clr"></div>
 
Последнее редактирование:
Сверху