За последние 24 часа нас посетили 22675 программистов и 1269 роботов. Сейчас ищут 734 программиста ...

дерево комментов..

Тема в разделе "PHP для новичков", создана пользователем IvanK, 29 июн 2016.

  1. IvanK

    IvanK Новичок

    С нами с:
    7 июн 2016
    Сообщения:
    20
    Симпатии:
    0
    Подскажите плз, есть ли красивое решение такой задачки, дабы не изобретать велосипед.
    Есть таблица в базе, в ней есть id коммента 'com_id', текст 'com_text', если коммент является ответом к одному из опубликованных комментов, в колонке 'answer_for' прописан id коммента, к которому он приходится ответом. Как сделать из таблицы многомерный ассоциативный массив, чтобы ответ лежал в ячейке к родительскому комменту?? Ну или есть какой-то более правильный способвывести комменты из базы в стиле
    коммент 1
    коммент 2
    ответ к коменту 2
    коммент 3 ....
     
  2. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.632
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Погугли, таких решений наверно тысяча+1
     
  3. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    IvanK нравится это.
  4. IvanK

    IvanK Новичок

    С нами с:
    7 июн 2016
    Сообщения:
    20
    Симпатии:
    0
    Спасибо! Вот, нарыл в инете, так будет проще, наверное, еще не пробовал.
    "необходимо вызвать javascript-функцию на стороне пользователя, передав ей два параметра — id комментария, и parent — id комментария-«родителя»:
    Код (Text):
    1. document.getElementById("comment"+parent).appendChild(document.getElementById("comment"+id));
    "
    Ввиду недостаточного опыта, застрял на мелочи, может, подскажешь? Комменты из базы загоняю в массив, его в строку
    Код (Text):
    1. $json = json_encode ($array)
    , и передаю в JS
    Код (Text):
    1. <script>js_echo_comments(<?php echo $json ?>)</script>
    , вJS проверяю
    Код (Text):
    1. alert($json)
    , а там [object Object],[object Object]..., хотя в php смотрю $json перед отправкой в js var_dump($json) =
    Код (Text):
    1. string '[{"com_id":"53","item_id":"19","pub_date":"2016-06-28 16:52:46","author_name":"\u0418\
    У меня комменты выводятся через ajax, "свежий" коммент, только что полученный из success: function (data) еще не придумал, как сразу вставлять на свое место, если он дочерний, а со старыми комментами очень удобно будет, если найденный способ сработает и получится пердать нормально массив в js
     
  5. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    Всё тебе правильно выводит. Он кастует тебе объект в строку. Отлаживай не через алерты а через консоль и прибудет с тобой счастье.
     
  6. IvanK

    IvanK Новичок

    С нами с:
    7 июн 2016
    Сообщения:
    20
    Симпатии:
    0
    Так откуда же тогда ошибка при парсинге:
    Код (Text):
    1. VM6282:1 Uncaught SyntaxError: Unexpected token o in JSON at position 1
    в VM6282 сидит [object Object] дальше ошибка
    --- Добавлено ---
    я так подумал, что token o как раз таки первая буква [object Object] на которой JSON.parse застрял
    --- Добавлено ---
    В любом случае, за совет спасибо - через консоль вижу, что $json в JS приходит правильно, но почему же JSON.parse($jscon) приводит к ошибке??
    --- Добавлено ---
    вопрос закрыт, еще раз спасибо за совет смотреть в консоли - никакого парсинга делать не надо было, полученный $json - уже массив
     
  7. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.902
    Симпатии:
    969
    какой дословно ответ от сервера видит JS?
     
  8. IvanK

    IvanK Новичок

    С нами с:
    7 июн 2016
    Сообщения:
    20
    Симпатии:
    0
    Все ок, alert($jsonComments[0].com_id) выводит то, что надо upload_2016-6-29_15-12-9.png
     

    Вложения: