Načítání hlavní komentářů + odpovědí – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Načítání hlavní komentářů + odpovědí – PHP – Fórum – Programujte.comNačítání hlavní komentářů + odpovědí – PHP – Fórum – Programujte.com

 

jAkErCZ0
Stálý člen
11. 10. 2018   #1
-
0
-

Zdravím,

snažím se udělat funkci která bude vracet hlavní komentáře + odpovědi k danému komentáři ale nastal problém...

Maximum function nesting level of '256' reached, aborting! 

Tady přikládám funkci

public function getComments($article_id, $parent_id = null){
	    $comments = null;

	    if ($parent_id === null) {
            $comments = $this->database->table(self::TABLE_COMMENTS)->where(self::COLUMN_COM_ARTICLE_ID, $article_id)->order('created_at')->fetchAll();
        } else {
            $comments = $this->database->table(self::TABLE_COMMENTS)->where(self::COLUMN_COM_ARTICLE_ID ,$article_id)->where(self::COLUMN_COM_PARENT_ID, $parent_id)->fetchAll();
        }

        $_comments = [];

	    foreach ($comments as $comm) {
            // zpracování komentáře
            $_comment = [
                'comment_id' => $comm->comment_id,
                'user_id' => $comm->user_id,
                'created_at' => $comm->created_at,
                'content' => $comm->content,
            ];
        }

        if ($parent_id === null) { // pokud je to hlacní komentář zjistit pod-komentáře
            $_comment['comments'] = $this->getComments($article_id, $parent_id);
        }

        $_comments[] = $_comment;


        return $_comments; // vrátit komentáře

    }

A jak to mám v šabloně..

 {snippet comments}
                        <div n:foreach="$comments as $comment" class="media">
                            <a class="media-left" href="#">
                                <img src="{$basePath}/images/user/avatar3.jpg" alt="" />
                            </a>
                            <div class="media-body">
                                <div class="media-content">
                                    <a href="#" class="media-heading"></a>
                                    <a n:if="$user->isLoggedIn()" n:href="reply! $comment['comment_id']" id="reply" class="btn btn-sm btn-primary pull-right ajax">reply</a>
                                    <span class="date">{$comment['created_at']|date:'j. n. Y H.i'}</span>
                                    <p>{$comment['content']}</p>
                                </div>

                                <div n:foreach="$comment['comments'] as $comm" class="media">
                                    <a class="media-left" href="#">
                                        <img src="{$basePath}/images/user/avatar.jpg" alt="" />
                                    </a>
                                    <div class="media-body">
                                        <div class="media-content">
                                            <a href="#" class="media-heading">YAKUZI</a>
                                            <a href="#" class="btn btn-sm btn-primary pull-right">reply</a>
                                            <span class="date">{$comm['created_at']|date:'j. n. Y H.i'}</span>
                                            <p>{$comm['content']}</p></div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    {/snippet}

Co dělám blbě? 

Chtěl sem něco jako foreach na hlavní komentáře a pak druhý foreach na odpovědi. tak jak mám v šabloně..

Starý kód ze kterého sem vycházel

$pocetKomentaru = 0;

function processComments($clanek_id, $parent_id = NULL) {
    global $pocetKomentaru;
    $komentare = NULL;

    if ($parent_id === NULL) {
        $komentare = dibi::query("
		SELECT k.*, a.nick, a.avatar FROM komentare k 
		LEFT JOIN accounts a ON k.author_id = a.id
		WHERE k.clanek_id = %i AND k.parent_id IS NULL", $clanek_id);
    } else {
        $komentare = dibi::query("
		SELECT k.*, a.nick, a.avatar FROM komentare k 
		LEFT JOIN accounts a ON k.author_id = a.id
		WHERE k.clanek_id = %i AND k.parent_id 
		", $clanek_id, " = %i", $parent_id);
    }

    $_komentare = [];

    foreach ($komentare as $komentar) {
        // zpracování komentáře
        $_komentar = [
            'id' => $komentar->id,
            'avatar' => $komentar->avatar,
            'komentar' => $komentar->komentar,
            'pridano' => $komentar->pridano,
            'nick' => $komentar->nick,
        ];

        if ($parent_id === NULL) { // pokud je to hlacní komentář zjistit pod-komentáře
            $_komentar['komentare'] = processComments($clanek_id, $komentar->id);
        }

        $pocetKomentaru++;
        $_komentare[] = $_komentar; // přidat zpracovaný komentář do pole komentářů
    }

    return $_komentare; // vrátit komentáře
}

Díky všem za pomoc :)

Nahlásit jako SPAM
IP: 109.183.230.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 40 hostů

Podobná vlákna

Hlavní metoda — založil ViliX64

Hlavní panel v delphix — založil maherik

Hlavní formulář Lazarus — založil Irena

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý