Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
 Аватар для Protagonista
7 / 7 / 0
Регистрация: 08.02.2011
Сообщений: 73

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

15.02.2011, 20:55. Показов 3801. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru