Funkce v sablone pro výpis z databáze podle id
- wopice
- Člen | 21
Myslím, že nejlepší bude se podívat na příklad z nové dokumentace. Pomocí Nette\Database to jde velmi snadno a rychle.
- Martin7
- Člen | 23
V sablone se mi vypisuje id uzivatele:
{foreach $news as $post}
<div class="post">
<h3>{$post['nazev']}</h3>
<small>Přidal {$post['autor']}</small> // vypisuje id uživatele
<p>{$post['obsah']}</p>
<p><a href="{link single $post->id}">více..</a></p>
</div>
{/foreach}
a ja bych potřeboval nejak propojit promnennou $post[‚autor‘]
s touto funkcí:
public static function zjisti_jmeno($id) {
dibi::fetch('
SELECT [username]
FROM [user]
WHERE [id] = %i', $id
);
Editoval Martin7 (25. 7. 2011 19:18)
- joe
- Člen | 313
@Martin7:
Asi začínáš i s SQL, protože na tohle by ses neptal. Správně vytvořený dotaz by měl vypadat nějak takhle
SELECT c.*, a.* FROM clanky c JOIN autor a ON a.id = c.autor_id
Na ten nápad co jsi napsal ve 3. příspěvku zapomeň :-) Osobně upřednostňuju jednoduché použití dibi s vlastně napsaným dotazem.
- Martin7
- Člen | 23
@joe:
díky to mi pomohlo :)
ted se pokouším ke článkům vypsat počet komentářů.
v modelu mam:
public static function Select_count_comments()
{
return dibi::query('
SELECT COUNT(comments.news_id) AS komentu
FROM [news]
JOIN [comments]
ON comments.news_id = news.id
');
}
a v sablone:
{foreach $news as $post}
{foreach $pocet_komentu as $pocet}
<div class="post">
<h3>{$post['nazev']}</h3>
<small>Přidal {$post['username']} Počet komentářů: {$pocet['komentu']}</small>
<p>{$post['obsah']}</p>
<p><a href="{link single $post->id}">více..</a></p>
</div>
{/foreach}
{/foreach}
takhle se mi pouze vypíše počet komentářů celkově ve všech
článcích. Když přidám do modelu GROUP BY comments.news_id
tak
se mi začne každý článek vypisovat víckát než kolikrát je uložen
v databázi. Kde dělám chybu ?
- Claudie1
- Člen | 21
ahoj,
zkus ještě GROUP BY news.id
edit: když se na to dívám znovu, tak to asi taky nepomůže. přiznám se, že úplně nerozumím tomu, proč jsou tam dva cykly v sobě, jak to má fungovat – přijde mi, že každou novinku to vypisuje tolikrát, kolik je různých součtů komentářů, ale to jistě není to, co to má dělat…
Editoval Claudie1 (26. 7. 2011 15:00)