Аватар для Protagonista
7 / 7 / 0
Регистрация: 08.02.2011
Сообщений: 73

повторяющиеся комментарии

15.02.2011, 20:55. Показов 3860. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер!
Прошу помочь в вот какой проблеме связанной со скриптом комментариев.
Дело в том, что на сайте, который я пытаюсь сделать(это будет мой первый сайт, так что ссори если вопрос нубский), есть страничка, на которой идет перечень новостей, если зайти в отдельную новость, там можно оставить комментарий, но этот комментарий добавляется во все другие новости. Весь день пытаюсь разобраться как скрипт комментариев можно привязать к определенной id новости. Подскажите, пожалуйста, каким образом это можно сделать?
Заранее большое спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.02.2011, 20:55
Ответы с готовыми решениями:

Дана матрица.Заменить все повторяющиеся элементы - 1, а не повторяющиеся - 0
Дана матрица. Заменить все повторяющиеся элементы - 1, а не повторяющиеся - 0. Как мне заменить? Заранее спасибо. namespace...

Все повторяющиеся элементы матрицы заменить на 0,а не повторяющиеся на 1
Дана матрица размера n на m (n>=5;m>=5).Все повторяющиеся элементы заменить на 0,а не повторяющиеся на 1. Вывести полученную матрицу на...

Удалить из строки комментарии вида '/* ... */". Игнорировать вложенные комментарии.
#include <iostream> #include <stdio.h> #include <string.h> using namespace std; int main(int argc, char *argv) { ...

34
191 / 191 / 31
Регистрация: 04.10.2010
Сообщений: 505
15.02.2011, 21:03
Создай таблицу comments примерно с такими полями
id
news_id - id новости из таблицы новостей
text - текст коммента
Ну и как я понимаю у тебя id новости передается через адресную строку (методом GET)
Выбираешь новость по id и все комменты по этому же id.
1
 Аватар для Protagonista
7 / 7 / 0
Регистрация: 08.02.2011
Сообщений: 73
15.02.2011, 21:08  [ТС]
у меня вот такая таблица, и кроме новостей таких страниц еще много, они конфликтуют не между собой, а внутри себя(я имею ввиду не новости с программами например, а внутри программ программы...как-то так). И не знаю как выбрать новость по id и коммент по этому же id, какую команду нужно прописать для этого?
Миниатюры
повторяющиеся комментарии  
0
191 / 191 / 31
Регистрация: 04.10.2010
Сообщений: 505
15.02.2011, 21:24
Ух как оно бывает. Я что-то не понял...
У тебя есть страница новостей. Чтобы посмотреть отдельную новость надо кликнуть по ссылке и тогда она отобразится. Что передается в адресной строке? Там что-то должно быть написано после знака вопроса"?"...
1
 Аватар для Protagonista
7 / 7 / 0
Регистрация: 08.02.2011
Сообщений: 73
15.02.2011, 21:28  [ТС]
там написана id=1 я так понимаю это id новости, если нажать на следующую ссылку новости там будет уже id=2 и так далее и вот если добавить коммент в новость с первой id, то этот комментарий отражается во всех остальных новостях
0
191 / 191 / 31
Регистрация: 04.10.2010
Сообщений: 505
15.02.2011, 21:34
Отлично, теперь мы знаем id новости.
Наверное форма для комментария выглядит примерно так. есть textarea и есть кнопка "Отправить".
Теперь добавь в <form> в любое место
HTML5
1
<input type="hidden" name="news_id" value="<?php echo $_GET['id'];?>">
Таким образом при нажатии кнопки "Отправить" будет передаваться id новости.
Теперь при INSERT'e добавляй в поле parent_id значение $_POST['news_id']
1
 Аватар для Protagonista
7 / 7 / 0
Регистрация: 08.02.2011
Сообщений: 73
15.02.2011, 22:09  [ТС]
блин, что-то я не туда вставляю...на самом деле у меня нет тега <form> "комментарии состоят из 4 файлов" в коде страницы, где перечень новостей:
<p><ul id="commentRoot">
<button id="addNewComment">Добавить комментарий</button>

<?php echo $comments; ?>

<li id="newComment">
<div class="commentContent">
<div id="cancelComment"><img class="cancelComment" src="img/delete.png" /></div>
<h6>Ваше имя: <input name="name" type="text"> <span></span> </h6>
<div class="comment">
Комментарий:
<textarea name="newCommentText"></textarea>
</div>
<input type="hidden" name="news_id" value="<?php echo $_GET['id'];?>">
<button>Сохранить</button><img class="loader" src="loader.gif">
</div>
</li>

</p></ul>





есть еще файлы php и jquery, но мне я так понимаю нужен тот где все это сохраняется, вот что в нем:





<?php

if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {

sleep(3);

if($_POST[parent_id]) $parent_id = preg_replace('/\D+/i','', $_POST[parent_id]);
else $parent_id = 0;

$author = trim($_POST[author]);
$comment = trim($_POST[comment]);



if(!$author) $error[author] = 'Введите имя!';
if(!$comment) $error[comment] = 'Напишите комментарий!';

if($error)
exit(json_encode($error));


require_once 'blocks/bd.php';


$sql = "INSERT INTO comments (parent_id, name, comment, date_add) VALUES ($parent_id, '$author', '$comment', NOW())";
$result = mysql_query($sql);
if(!$result)
{
$error[] = 'Произошла ошибка, комментарий не сохранен';
exit(json_encode($error));
}
exit();
}

?>

Куда мне нужно вставить
<input type="hidden" name="news_id" value="<?php echo $_GET['id'];?>">
и $POST['news_id']?
0
191 / 191 / 31
Регистрация: 04.10.2010
Сообщений: 505
15.02.2011, 22:21
Крутатееень...
Ну так сказать, ты вставила куда надо)
Кроме файла jquery должен быть еще один с расширением js. Покажи его.
Или в коде страницы должно быть что-то похожее на
<script language="javascript">
/*Тут много чего не понятного))*/
</script>
1
 Аватар для Protagonista
7 / 7 / 0
Регистрация: 08.02.2011
Сообщений: 73
15.02.2011, 22:30  [ТС]
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
$(function (){ 
    
      
 
      var sendDataComment = {}; 
      var commentForm; 
 
 
      function CommentForm()
      {
        if(commentForm) 
    {
         
            removeCommentForm();  
          } 
          commentForm = $('#newComment').clone();
      }
      
     
      function removeCommentForm()
      {
         commentForm.remove();
         sendDataComment = {};
      }
      
      
     
      
$('#addNewComment, .reply').click(function(){
          
          CommentForm(); // Создаем клона формы
          
          if($(this).attr('id') == 'addNewComment')
          {
             
            commentForm.appendTo('#commentRoot');
             
          }
          else
          {
              
              var parentComment = $(this).parent().parent();
             
             
              sendDataComment.parent_id = parentComment.attr('id');
              
             
             var childs =  parentComment.find('ul'); 
             
             if(!childs.length) 
             {
              
                 parentComment.append('<ul></ul>');
                 commentForm.appendTo(parentComment.children('ul'));
             }  
             else
              commentForm.prependTo(childs); 
              
          }
          
          commentForm.show();
          
          return false; 
      });
      
      
     
      $('#cancelComment').live('click', function(){
          
          removeCommentForm();
  
      })
 
      
 
 
 $('#newComment button').live('click',function(){
    sendDataComment.author = commentForm.find("input[name='name']").val(); 
   
    sendDataComment.comment = commentForm.find("textarea").val();
    
    sendData();
    
 });
 
 
 
function sendData()
{
   commentForm.find('button').hide().next().show(); 
 
  $.post(
           "savecomment.php",
           sendDataComment, 
           function(data){ 
            
            
            if(data)
            {   
                
                data = $.parseJSON(data); 
                
 
 
                var errors =''; 
                $.each(data, function(i, val) {
                errors += val+'\n';
                  
     
                  
                });
                
                
                commentForm.find('button').show().next().hide();                    
                alert(errors); 
    
    
                             
            }
           else 
               formToComment();              
          }
)
}
 
 
 
 
 function formToComment()
 {
   commentForm.find('h6').text(sendDataComment.author); 
   commentForm.find('.comment').text(sendDataComment.comment); 
   
   commentForm.find('button').remove();  
   commentForm.find('.loader').remove(); 
   commentForm.find('#cancelComment').remove(); 
  
   commentForm.removeAttr('id');
   commentForm = null; 
   
 }
     
    
  });
0
191 / 191 / 31
Регистрация: 04.10.2010
Сообщений: 505
15.02.2011, 22:34
После
JavaScript
1
sendDataComment.author = commentForm.find("input[name='name']").val();
добавь строку
JavaScript
1
sendDataComment.parent_id= commentForm.find("input:hidden").val();
1
 Аватар для Protagonista
7 / 7 / 0
Регистрация: 08.02.2011
Сообщений: 73
16.02.2011, 07:46  [ТС]
=))) блин нет не помогает..)))а таблица в БД для комментариев одна должна быть?
0
191 / 191 / 31
Регистрация: 04.10.2010
Сообщений: 505
16.02.2011, 08:09
Таблица для комментариев???
А разве это не она показана на картинке, которую ты вставила в один из своих ответов. Там вроде написано comments .
0
 Аватар для Protagonista
7 / 7 / 0
Регистрация: 08.02.2011
Сообщений: 73
16.02.2011, 08:28  [ТС]
она, просто может там несколько нужно....я уже не знаю просто
0
191 / 191 / 31
Регистрация: 04.10.2010
Сообщений: 505
16.02.2011, 09:53
Так... у тебя таблица comments используется не только на странице новостей?
Посмотри последнюю запись в таблице comments у нее отличается значение в поле parent_id?
Если отличается, то чему равно это значение и какие значения предыдущих записей?
0
 Аватар для Protagonista
7 / 7 / 0
Регистрация: 08.02.2011
Сообщений: 73
16.02.2011, 10:07  [ТС]
для новостей одна таблица комментариев, для ,например, программ - другая, поэтому проблемы между программами и новостями нет, есьт проблема внутри новостей, просто может для них тоже отдельную надо создать, но я просто думала, что можно как-то id привязать, а у parent_id другое значение, потому что оно является ответом на комментарий , а не добавлением нового комментария...

Добавлено через 3 минуты
Просто вообще у parent_id значение 0 если комментарий не является ответом на другой комментарий, а если появиться именно ответ, то тогда у него появляется значение
0
191 / 191 / 31
Регистрация: 04.10.2010
Сообщений: 505
16.02.2011, 10:14
Так вот оно что...
Ну тогда надо в таблицу comments надо добавить новое поле к примеру news_id типа int и атрибутом unsigned
Затем заменить эту строку
JavaScript
1
sendDataComment.parent_id= commentForm.find("input:hidden").val();
на вот эту
JavaScript
1
sendDataComment.news_id= commentForm.find("input:hidden").val();
Перед строчкой
PHP
1
$author = trim($_POST[author]);
надо вставить еще одну строчку
PHP
1
$news_id = $_POST[news_id];
И изменить запрос
PHP
1
$sql = "INSERT INTO comments (parent_id, name, comment, date_add) VALUES ($parent_id, '$author', '$comment', NOW())";
на
PHP
1
$sql = "INSERT INTO comments (parent_id, name, comment, date_add, news_id) VALUES ($parent_id, '$author', '$comment', NOW(), $news_id)";
Вроде после этих процедур должно записываться в таблицу id новости
0
 Аватар для Protagonista
7 / 7 / 0
Регистрация: 08.02.2011
Сообщений: 73
16.02.2011, 10:48  [ТС]
фух))сейчас попробую

Добавлено через 24 минуты
нет, не помогло, сделала таблицу, только теперь не могу просмотреть ее структуру в phpmyadmin вот что выдает:" Fatal error: Maximum execution time of 30 seconds exceeded in Z:\home\localhost\www\Tools\phpmyadmin\l ibraries\dbi\mysql.dbi.lib.php on line 144" что это?=))), комментарии по прежнему добавляются в обе новости...

Добавлено через 2 минуты
да и еще, когда я добавила новый коммент, потом посмотрела в таблицу там в news_id везде стоит 1, тоесть получается, он выбрал id первой новости, но коммент добавил все равно к обоим...
0
191 / 191 / 31
Регистрация: 04.10.2010
Сообщений: 505
16.02.2011, 10:56
Сейчас эта ошибка (Фатал еггог) пропала?
А вот то что везде 1 это можыт ты по умолчанию поставила когда поле создавала?
Попробуй сделать коммент на другую новость и посмотри что добавится.
0
 Аватар для Protagonista
7 / 7 / 0
Регистрация: 08.02.2011
Сообщений: 73
16.02.2011, 11:01  [ТС]
нет ошибка не пропала, просто она во вкладке structure, а номера id я смотрю в browse..
добавила коммент в др новость, id выбрал другую, правильную, но комменты в обеих новостях
0
191 / 191 / 31
Регистрация: 04.10.2010
Сообщений: 505
16.02.2011, 11:07
С ощибкой надо разбираться... но позже
Теперь у тебя есть запрос для вывода комментариев к новости(это когда проссматривается одна новость отдельно)
Так вот в этот запрос SELECT что-то FROM comments надо добавить кое что и получить примерно такое
SELECT что-то FROM comments WHERE news_id=".$_GET['id']."
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.02.2011, 11:07
Помогаю со студенческими работами здесь

Удалить из строки комментарии вида '/* . */". Игнорировать вложенные комментарии
Всем привет! есть строка вида : char str=&quot;abc/*111/*def/*222*/ghi*/333*/jkl&quot;; нужно получить abc /*def ghi*/ jkl Реально ли так...

Повторяющиеся записи
Помогите составить запрос! Есть БД (bit_teh), таблица (info_bit_info) поля в таблице ( id, name, cena, firma). при добавление новой...

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

Повторяющиеся буквы
Приветики) Нашла интересную задачку из Олимпиады 2013-2014 it-planet. Одной командой SELECT вывести список сотрудников, у которых ...

повторяющиеся элементы
Доброго времени всем. Помоги пожалуйста. выяснить, есть ли в списке повторяющиеся элементы. нужно написать программу в visual prologe ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru