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

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

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Помогите разобраться с кодом
baclan228
Отправлено: 20 Марта, 2019 - 07:07:11
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Март 2019  


Помог: 0 раз(а)




Доброго времени суток! Пытаюсь 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.  


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

буду рад вашим вариантом решения данной проблемы
Прикреплено изображение (Нажмите для увеличения)
1.png
 
 Top
Vladimir Kheifets
Отправлено: 20 Марта, 2019 - 09:55:51
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




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. }
Удачи!
 
 Top
baclan228
Отправлено: 20 Марта, 2019 - 09:59:06
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Март 2019  


Помог: 0 раз(а)




Vladimir Kheifets Вот скриншот
Прикреплено изображение (Нажмите для увеличения)
2.png
 
 Top
Vladimir Kheifets
Отправлено: 20 Марта, 2019 - 10:07:47
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




baclan228 пишет:
Vladimir Kheifets Вот скриншот

Проверте, пожалуйста, if ($row['comment_id'] == $row['parent_id']) A else B
A не должно совпадать с B
 
 Top
baclan228
Отправлено: 20 Марта, 2019 - 10:09:20
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Март 2019  


Помог: 0 раз(а)




Vladimir Kheifets не понял, а можно поподробнее?
 
 Top
miketomlin
Отправлено: 20 Марта, 2019 - 10:09:31
Post Id


Частый гость


Покинул форум
Сообщений всего: 129
Дата рег-ции: Июль 2016  


Помог: 5 раз(а)




См. «php иерархические комментарии».

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

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

Нормализуйте данные пользователя (оставьте только user_id).

(Отредактировано автором: 20 Марта, 2019 - 10:19:15)

 
 Top
baclan228
Отправлено: 20 Марта, 2019 - 10:18:34
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Март 2019  


Помог: 0 раз(а)




miketomlin я плохо шарю, можно простенький пример?
 
 Top
miketomlin
Отправлено: 20 Марта, 2019 - 10:20:08
Post Id


Частый гость


Покинул форум
Сообщений всего: 129
Дата рег-ции: Июль 2016  


Помог: 5 раз(а)




Нету простых примеров.
(Добавление)
Если не шарите, обратитесь к спецам или разбирайтесь. Что конкретно непонятно?
 
 Top
baclan228
Отправлено: 20 Марта, 2019 - 10:25:23
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Март 2019  


Помог: 0 раз(а)




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


Не понятно как сортировать, у меня походу все идет в цикле поэтому и выводит последний ответ в конце не знаю как исправить
 
 Top
miketomlin
Отправлено: 20 Марта, 2019 - 10:28:21
Post Id


Частый гость


Покинул форум
Сообщений всего: 129
Дата рег-ции: Июль 2016  


Помог: 5 раз(а)




См. MySQL ORDER BY. У вас вообще сортировки нету. Радуйтесь, что хоть какой-то вменяемый порядок по дефолту наблюдается Улыбка
(Добавление)
P.S. Естественно, сразу нужно будет дочитать до того места, где описывается сортировка по двум и более полям/показаны примеры такой сортировки.
 
 Top
Vladimir Kheifets
Отправлено: 20 Марта, 2019 - 18:19:44
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




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.     }

Выполяется или нет условие , значения присваиваются одни и теже.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB