Вернуться   Дизайнерский форум » ВЕБ-ПРОГРАММИРОВАНИЕ » ASP, Perl, PHP и MySQL

Привязка скрипта комментариев по id к новостям

Обсуждение темы Привязка скрипта комментариев по id к новостям в разделе ASP, Perl, PHP и MySQL, часть категории ВЕБ-ПРОГРАММИРОВАНИЕ; Здравствуйте Уважаемые Помогите, пожалуйста - мозги уже кипят. Есть скрипт новостей Есть скрипт комментариев к странице (к новости) А вот чего нету, так ...


Закрытая тема
 
Опции темы
Старый 30.01.2007, 16:44   #1
Здравствуйте Уважаемые
Помогите, пожалуйста - мозги уже кипят.
Есть скрипт новостей
Есть скрипт комментариев к странице (к новости)
А вот чего нету, так это привязки оставленных коментариев к этим самым новостям.

скрипт новостей (которые хранятся в БД MySQL), вызывает новость так:
________________________________ _

<?
if (isset($_GET['id']))
{
$result=mysql_query ("SELECT name, title_".$lang." FROM pages WHERE id = (SELECT subid FROM news WHERE id='".$_GET['id']."')") or die (mysql_error());
$curpage=mysql_fetch_array ($result);
} elseif (($_POST['page']<>"news")&&($_GET['page']<>"main"))
{
$curpage['name']=$_POST['page'];
$curpage['title_'.$lang]=$_POST['title'];
}
?>
________________________________ __

и сама страница с новостью видется так : http://www.мой.сайт/?page=news&id=2507
(не ЧПУ, но и не важно )

пробовал делать - привязывается ко всем сразу, то-есть при переходе на другую новость - остаются те же самые комментарии, что и в предыдущих.

скрипт коментариев достаточно простенький, да ИМХО и не так важно (если хотите могу выложить)

{Может и ошибаюсь, но думаю, скрипт /index.php, которому посылается комментарий, должен по переменной referer определять с какой страници он пришел и записывать комментарий в базу данных, в ту же запись, что и сама статья
1. либо как продолжение текста
2. либо в дополнительном поле базы}

Пытался по разному, к примеру:

echo "<form action='addcoment.php' method='POST'>
<input type='text' name='Text'>
<input type='hidden' name='id' value='".$_GET["id"]."'>
<input type='submit'>";


- не помогло
Как ПРАВИЛЬНО это сделать, я не знаю
Прошу хелпа
 
Старый 30.01.2007, 16:44
Ссылки
Старый 31.01.2007, 12:23   #2
ILA

Выкладывай текст скрипта. Форму вроде б правильно нарисовал.
 
Старый 31.01.2007, 14:26   #3
ок, вот скрипт новостей + в скрипт отсылки на емейл оставленных комментариев (первоначальный, без моих изменений)

PHP код:
<form id="f" name="f" method="post" action="">
<input type="hidden" name="delete"/>
<?
if (isset($_GET['id']))
{
        
$result=mysql_query ("SELECT name, title_".$lang." FROM pages WHERE id = (SELECT subid FROM news WHERE id='".$_GET['id']."')") or die (mysql_error());
        
$curpage=mysql_fetch_array ($result);
} elseif ((
$_POST['page']<>"news")&&($_GET['page']<>"main"))
{
        
$curpage['name']=$_POST['page'];
        
$curpage['title_'.$lang]=$_POST['title'];
}
?>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td align="right">[url="?page=news&lang=<?=$lang?>"][img]images/mini_images/cnews_<?=$lang?>.gif[/img] [/url]
$sub="";
if (($_GET['page']=="")||($_GET['page']=="main")) $maintance=true;
if (isset($_POST['listcount']))
 { $result=mysql_query ("UPDATE admin SET listcount='".$_POST['listcount']."'") or die (mysql_error());
                                        $_GET['list']=1;
                                                                }

                                if (isset($_POST['mainnewscount']))
                                 $result=mysql_query ("UPDATE admin SET mainnewscount='".$_POST['mainnewscount']."'") or die (mysql_error());


                                if (isset($_GET['id']))
                                { $result=mysql_query ("SELECT * FROM news WHERE id='".$_GET['id']."'") or die (mysql_error());
                                        $news=mysql_fetch_array ($result);
                                         if (isset($_GET['query'])) $news['title_'.$lang]=str_ireplace($_GET['query'],'<span class="style14">'.$_GET['query'].'</span>',$news['title_'.$lang]);
                                        ?>
                                        <span class="style4"><?=$news['date']?>    
                                        

<span class="style1"><?=$news['text_'.$lang]?></span> <?
                                
}
                                else
                                {  
                                    if (
$maintance$koli4estvonews="mainnewscount"; else $koli4estvonews="listcount";
                                        
$result=mysql_query ("SELECT ".$koli4estvonews." FROM admin") or die (mysql_error());
                                        
$listcount=mysql_fetch_array ($result);
                                        if (
$listcount[0]<1) {$listcount[0]=1$_POST['listcount']=1;}
                                        if (!isset(
$_GET['list'])) $_GET['list']=1;
                                        
$s=($_GET['list']-1)*$listcount[0];
                                        
$result=mysql_query ("SELECT id, date, title_".$lang.", anounce_".$lang.", text_".$lang." FROM news  WHERE text_".$lang."<>'' ".$sub." ORDER BY date DESC LIMIT ".$s.",".$listcount[0]) or die (mysql_error());
                                        
$i=$s;
                                        while(
$news=mysql_fetch_array ($result))
                                        {  
$i++;
                                        
?>
                                <table width="100%" border="0" cellspacing="0" cellpadding="0">
                    <tr>
                      <td width="38" align="center"><span  class="style3"><? printf("%02d",$i);?></span></td>
                      <td width="5" bgcolor="#ff9c00"></td>
                      <td width="10"></td>
                      <td align="left" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0">
                          <tr>
                            <td><span class="style4">[url="?page=<?=$_POST['page']?>&id=<?=$news['id']?>&lang=<?=$lang?>&list=<?=$_GET['list']?>"]<?=$news['date']?>  -  <?=$news['title_'.$lang]?>[/url]<? if (isset($_SESSION['admin'])) { ?>  | [url="#"]&lang=<?=$lang?>","editnews",690,600);>edit[/url] | [url="#"]);>delete[/url] |</span><? ?></td>
                          </tr>
                          <tr>
                            <td class="style5">
                                                        [url="?page=<?=$_POST['page']?>&id=<?=$news['id']?>&lang=<?=$lang?>&list=<?=$_GET['list']?>"]<?=$news['anounce_'.$lang]?>[/url]</td>
                          </tr>
                      </table></td>
                    </tr>
                    <tr height="20">
                      <td align="center"></td>
                      <td></td>
                      <td></td>
                      <td align="left" valign="top"></td>
                    </tr>
                  </table>

                                <? }
                                } 
?>

                </td>
              </tr>
              <tr>
                <td align="center"> <?

                                 
if (!isset($_GET['id'])) { ?>
                                        <?

                                $styleoff
=' class="style1"'$styleon=' class="style14"';
                        
$hr='<a href="?page='.$_POST['page'].'&lang='.$lang;
                                
$result=mysql_query ("SELECT count(id) FROM news WHERE text_".$lang."<>'' ".$sub) or die (mysql_error());
                                
$newscount=mysql_fetch_array ($result);
                                
$i=0;
                                
$k=0;
                                if ((
$listcount[0]<$newscount[0])&&(!$maintance))
                                {
                                while (
$i<$newscount[0])
                                { 
$k++;
                                        
$i+=$listcount[0];
                                        if (
$_GET['list']==$k){  $s='<span'.$styleon.'>'$e='</span>';} else { $s=$hr.'&list='.$k.'"'.$styleoff.'>'$e='</a>'; }
                if ((
round(($k-1)/10)==(($k-1)/10))&&($k>1)) echo(' |
'
);
                echo(
"| ".$s.$k.$e); ?>
                                <? ?> | <? }
                                 if (isset(
$_SESSION['admin']))
                                {
                                        if (
$maintance)
                                        {
?>
                                <div align="right" class="style2">Новостей на главной странице:
                            <input type="text" class="style2" name="mainnewscount" value="<?=$listcount[0]?>" size="1"/><input type="submit" name="ok" class="style2" value="OK"/></div>
 <div align="right" class="style2">Новостей на странице:
                            <input type="text" class="style2" name="listcount" value="<?=$listcount[0]?>" size="1"/><input type="submit" name="ok" class="style2" value="OK"/></div>
                                        <? }
                                 }
                                } 
                                else { if (!isset(
$_GET['list'])) $_GET['list']=1; echo('
[url="?page='
.$_POST['page'].'&lang='.$lang.'&list='.$_GET['list'].'"]<< назад[/url]'); } ?>



<span style="font-size: 9pt; font-weight: bold; color:#53606c; text-decoration:underline;">ОСТАВИТЬ КОММЕНТАРИЙ:
// СКРИПТ КОММЕНТАРИЕВ
PHP код:
<?
    $YourMail 
"[email protected]"// Ваш email
    
$Subject  "Message from site"// Тема сообщения
    
$Name     "";
    
$Email    "";
    
$Text     "";
    
$Error    "";
    if(isset(
$_POST["Send"])) {
    
$Name  htmlspecialchars(trim($_POST["Name"]));
    
$Email htmlspecialchars(trim($_POST["Email"]));
    
$Text  htmlspecialchars(trim($_POST["Text"]));
    if(empty(
$Name))  $Error "Вы не указали свое имя";
    if(empty(
$Email)) $Error "Вы не указали свой email";
    if(empty(
$Text))  $Error "Вы не ввели текст сообщения";
    if(!empty(
$Email) && !eregi("^[0-9a-z_]([-_.]?[0-9a-z])*@[0-9a-z][-.0-9a-z]*.[a-z]{2,4}[.]?$",$Email)) $Error "Неправильно указан email";

    if(empty(
$Error)) {
    
mail("$YourMail""$Subject","$Text",
              
"From: <".$Email.">\n".
              
"MIME-Version: 1.0\n".
              
"Content-Type: text; charset=windows-1251\n".
              
"Content-Transfer-Encoding: 8bit\n".
              
"Reply-To: <".$Email.">\n".
              
"Return-path: <".$Email.">\n".
              
"X-Priority: 3\n".
              
"X-Mailer: MegaMail");
    
$Name     "";
    
$Email    "";
    
$Text     "";
    
$Error    "Сообщение успешно отправлено";
        }
    }

?>
<p align="center"><b style="color:red"><?=$Error?>[/b]</p>
<table align="left">
<form action="<?=$_SERVER["PHP_SELF"]?>" method="post">
    <tr>
        <td align="right"><font face="Tahoma" style="font-size:11px">Ваше имя:</td>
        <td><input size="40" name="Name" value="<?=$Name?>"></td>
    </tr>
    <tr>
        <td align="right"><font face="Tahoma" style="font-size:11px">Ваш email:</td>
        <td><input size="40" name="Email" value="<?=$Email?>"></td>
    </tr>
    <tr>
        <td align="right"><font face="Tahoma" style="font-size:11px">Текст сообщения:</td>
        <td><textarea rows=8 cols=30 name=Text><?=$Text?></textarea>
</td>
    </tr>
    <tr>
        <td></td>
        <td><input type="submit" name="Send" value="Отправить"></td>
<input type='hidden' name='news_id' value='".$_GET["news_id"]."'>
    </tr>
</form>
</table>
</tr>
</table></center>
<font color=black>[b]
                                </td>
              </tr>
            </table>
                        </form>
 
Старый 31.01.2007, 16:51   #4
чего-то по-написанно всякого... Даже лень читать...
А как оно в живую выглядит?
У меня скрипт новостей занимает от силы строчек 30, это если место не экономить и еще с проверкой на админа и каким-то подобием дизайна () т.д. ...
 
Старый 31.01.2007, 22:29   #5
И вобще как делать новости с коментариями:

На сколько я понял там у вас по однойновости на страницу, если не прав, то можно легко исправить.
2 таблицы (хотя можно и в одной, но удобнее две)

1. новости:
ид: инт праймари кей ауто_инкремент
имя: варчар(50)
тема: варчар(150)
тело: блоб
дата: дате

2. комменты:
ид: инт праймари кей ауто_инкремент
новостиИд: инт
имя: варчар(50)
... прочая лабуда ...

дальше новости просто выводятся и комменты тоже...
хотя тоже не понятно, у вас коменты только на мыло отправляются?

И самое главное, в // СКРИПТ КОММЕНТАРИЕВ нигде не видел ид?!? это так специально задуманно?

ЗЫ сорри за написание всех английских букв по-русски...
 
Старый 01.02.2007, 08:56   #6
ILA

Nark прально базарит.
Заводишь таблицу комментов. В таблице обязательно вставляешь поле id новости. И пишешь туда комменты к каждой новости.
При выводе новости соответственно выбираешь из этой таблицы все комменты с id=id новости. И всё.
 
Старый 01.02.2007, 08:56
Закрытая тема




Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Привязка внешних ссылок на фрагменты изображения, выделение фрагмента spooch HTML, CSS, JavaScript 8 30.01.2013 00:10
макет для комментариев Judjin Скамейка запасных 17 23.01.2012 15:44
проблема с выводом комментариев qwoz HTML, CSS, JavaScript 2 29.01.2010 17:57
Жду советов, оценок и комментариев Emeramice Графические работы 16 22.09.2009 18:02
привязка таблицы внутри тега div Antonio HTML, CSS, JavaScript 2 12.07.2006 21:28


Текущее время: 23:58. Часовой пояс GMT +4.

Реклама на форуме Условия размещения рекламы
Биржа ссылок Заработай на сайте!
Дизайнерский форум