Smarty -> Kategorie und Ausgabe

Zicke20

New Member
Abend,

Für ein kleines Projekt brauche ich einige Kategorien die ich mit PHP und MySQL realisieren will.
Soweit klappt auch alles, nur die Ausgabe ist nicht so wie ich es gerne hätte.

Die Ausgabe ist

Kategorie1
---- Inhalt
Kategorie1
---- Inhalt2

Kategorie2
---- Inhalt1
Kategorie2
---- Inhalt1

Sie sollte aber so aussehen
Kategorie1
---- Inhalt
---- Inhalt2

Kategorie2
---- Inhalt1
---- Inhalt1

Leider bekomme ich das nicht hin. Als Template Engine nutze ich Smarty. Hier mal mein Code und hoffe ihr könnt mir helfen

PHP:
$sql = 'SELECT u.ID, u.title, t.CAT_ID, t.dl_title FROM
    download_cat AS u,
    download AS t WHERE u.ID=t.CAT_ID ORDER BY t.CAT_ID, u.ID DESC';

$result = db_query($sql);
while ($row = mysql_fetch_assoc($result)) {
$data[] = $row;
}
$smarty->assign('news', $data);

Code:
{foreach item=con from=$news}
     {$con.title}
    {$con.dl_title}
    {$con.inhalt}
  <br />
{/foreach}
 

elias5000

Site Reliability Engineer
Du brauchst zwei verschachtelte foreach-Konstrukte.
Dazu sollte deine Menüstruktur ungefähr so assigned werden:
PHP:
$navi = array(
  'Kategorie 1' => array(
    'Inhalt1' => 'URL zu Inhalt1',
    'Inhalt2' => 'URL zu Inhalt2',
    'u.s.w.' => 'URL zu u.s.w.'
  ),
  'Kategorie 2' => array(
    ...
  )
);
$template->assign('navi', $navi);

Im Smarty sieht das dann so aus:
PHP:
{foreach from=$navi key=category item=subcategory}
  {$category}
  {foreach from=$subcategory key=caption item=url}
    <a href="{$url}">{$caption}</a>
  {/foreach}
{/foreach}
(Styles und Zeilenumbrüche bitte hinzudenken. ;))
 
Last edited by a moderator:

Zicke20

New Member
HiHo,

Danke, wie mache ich das den wenn ich nicht weiß wieviel Kategorien es sind oder downloads?
 
Last edited by a moderator:

elias5000

Site Reliability Engineer
Die Datenstruktur für den $navi-Hash musst du entsprechend aus der Datenbank generieren. Die feste Belegung sollte nur die Struktur verdeutlichen, die der Smarty-Schnipsel für die verschachtelten foreach-Konstrukte braucht.
Den wirst du so natürlich nicht direkt per SQL bekommen sondern musst ihn im PHP algorithmisch erzeugen.
 

Zicke20

New Member
Morgääääääääänn!

Hm, ich habe jetzt einiges versucht aber ich schaff es einfach nicht.
Evtl sollte ich doch auf ein Kostenloses Script zurück greifen
 
Top