Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Создание комментариев с ответами
Форумы портала PHP.SU » » Вопросы новичков » Создание комментариев с ответами

Страниц (1): [1]
 

1. baclan228 - 20 Марта, 2019 - 07:07:11 - перейти к сообщению
Доброго времени суток! Пытаюсь 3 день создать комментарии, но пока что-то не получается. С комментариями не разу не работал поэтому строго не судить.

И так имеется таблица comment в ней есть поля:

  • comment_id - id комментария
  • parent_id - id родительского комментария
  • post - id поста


Вот сам код:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $sql = mysqli_query($connect, "SELECT * FROM `comment` WHERE post = '{$id}'") or die ('Error #626732');
  4.   if (mysqli_num_rows($sql)){
  5.     while($row = mysqli_fetch_array($sql)){
  6.         if (empty($row['comment_id'])){
  7.             $nameText="Комментарий добавил(а):";
  8.             $addClass="";
  9.             $form = $row['id'];
  10.         }else{
  11.            if ($row['comment_id'] == $row['parent_id']){
  12.                 $nameText="Ответил(а):";
  13.                 $addClass=" otv";
  14.             }else{
  15.                  $nameText="Ответил(а):";
  16.                  $addClass=" otv";
  17.             }
  18.    }
  19. ?>
  20.  


проблема в том, что ответ вылазит в конце цыкла

буду рад вашим вариантом решения данной проблемы
2. Vladimir Kheifets - 20 Марта, 2019 - 09:55:51 - перейти к сообщению
baclan228 пишет:
Доброго времени суток! Пытаюсь 3 день создать комментарии, но пока что-то не получается. С комментариями не разу не работал поэтому строго не судить.

И так имеется таблица comment в ней есть поля:

  • comment_id - id комментария
  • parent_id - id родительского комментария
  • post - id поста


Вот сам код:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $sql = mysqli_query($connect, "SELECT * FROM `comment` WHERE post = '{$id}'") or die ('Error #626732');
  4.   if (mysqli_num_rows($sql)){
  5.     while($row = mysqli_fetch_array($sql)){
  6.         if (empty($row['comment_id'])){
  7.             $nameText="Комментарий добавил(а):";
  8.             $addClass="";
  9.             $form = $row['id'];
  10.         }else{
  11.            if ($row['comment_id'] == $row['parent_id']){
  12.                 $nameText="Ответил(а):";
  13.                 $addClass=" otv";
  14.             }else{
  15.                  $nameText="Ответил(а):";
  16.                  $addClass=" otv";
  17.             }
  18.    }
  19. ?>
  20.  

проблема в том, что ответ вылазит в конце цыкла

буду рад вашим вариантом решения данной проблемы

Добрый день!
Неплохо бы увидеть, что лежит базе данных и весь код вывода комментариев.
В том, что Вы показали удивило это:
PHP:
скопировать код в буфер обмена
  1. if ($row['comment_id'] == $row['parent_id'])
  2. {
  3.      $nameText="Ответил(а):";
  4.      $addClass=" otv";
  5. }
  6. else
  7. {
  8.       $nameText="Ответил(а):";
  9.       $addClass=" otv";
  10. }
Удачи!
3. baclan228 - 20 Марта, 2019 - 09:59:06 - перейти к сообщению
Vladimir Kheifets Вот скриншот
4. Vladimir Kheifets - 20 Марта, 2019 - 10:07:47 - перейти к сообщению
baclan228 пишет:
Vladimir Kheifets Вот скриншот

Проверте, пожалуйста, if ($row['comment_id'] == $row['parent_id']) A else B
A не должно совпадать с B
5. baclan228 - 20 Марта, 2019 - 10:09:20 - перейти к сообщению
Vladimir Kheifets не понял, а можно поподробнее?
6. miketomlin - 20 Марта, 2019 - 10:09:31 - перейти к сообщению
См. «php иерархические комментарии».

Если только один «уровень ответов», сортируйте в первую очередь по parent_id. У топовых комментов устанавливайте parent_id=id.

Зачем одновременно id и comment_id?

Нормализуйте данные пользователя (оставьте только user_id).
7. baclan228 - 20 Марта, 2019 - 10:18:34 - перейти к сообщению
miketomlin я плохо шарю, можно простенький пример?
8. miketomlin - 20 Марта, 2019 - 10:20:08 - перейти к сообщению
Нету простых примеров.
(Добавление)
Если не шарите, обратитесь к спецам или разбирайтесь. Что конкретно непонятно?
9. baclan228 - 20 Марта, 2019 - 10:25:23 - перейти к сообщению
miketomlin
miketomlin пишет:
Если только один «уровень ответов», сортируйте в первую очередь по parent_id. У топовых комментов устанавливайте parent_id=id.


Не понятно как сортировать, у меня походу все идет в цикле поэтому и выводит последний ответ в конце не знаю как исправить
10. miketomlin - 20 Марта, 2019 - 10:28:21 - перейти к сообщению
См. MySQL ORDER BY. У вас вообще сортировки нету. Радуйтесь, что хоть какой-то вменяемый порядок по дефолту наблюдается Улыбка
(Добавление)
P.S. Естественно, сразу нужно будет дочитать до того места, где описывается сортировка по двум и более полям/показаны примеры такой сортировки.
11. Vladimir Kheifets - 20 Марта, 2019 - 18:19:44 - перейти к сообщению
baclan228 пишет:
Vladimir Kheifets не понял, а можно поподробнее?

Подробне писал, повторю.
PHP:
скопировать код в буфер обмена
  1.  if ($row['comment_id'] == $row['parent_id'])
  2.     {
  3.          $nameText="Ответил(а):";
  4.          $addClass=" otv";
  5.     }
  6.     else
  7.     {
  8.           $nameText="Ответил(а):";
  9.           $addClass=" otv";
  10.     }

Выполяется или нет условие , значения присваиваются одни и теже.

 

Powered by ExBB FM 1.0 RC1