Problem mit Smarty Templates

Kalma

Erfahrenes Mitglied
Hallo,

ich habe ein Problem. Ich habe nachgeguckt, aber bis jetzt nichts gefunden.

Ich habe Links in verschiedenen Kategorien zugeordnet:

Kategorie
-- link
-- link

Kategorie 2
-- link

Kategorie 3
-- link

und so weiter.


Ich arbeite mit Smarty, also weiß ich nicht so recht, wie ich das machen soll.

Mein Script sieht bisher so aus:

PHP:
	// Links
	$query	=	'SELECT
					*
				FROM
					link_kategorien
				ORDER BY
					`link_name` ASC';
	$result	=	@mysql_query($query);

	$inhalt =	array();
	while($select = mysql_fetch_assoc($result))
	{
		// Kategorien
		$id			= $select['link_id'];
		$name		= $select['link_name'];

		// Links der Kategorie auslesen
		$link_query		=	'SELECT
								*
							FROM
								links
							WHERE
								`link_kategorie` = "'.$id.'"
							ORDER BY
								`link_id` DESC';
		$link_result	=	@mysql_query($link_query);
		$link_result_co	=	mysql_num_rows($link_result);
		$fetch			=	mysql_fetch_array($link_result);

		$select['kat_entrys']	= $link_result_co == 0 ? false : true;
		$select['link_url']		= $fetch['link_url'];
		$select['kat_name']		= $name;
		$inhalt[]				= $select;
	}
	$tpl->assign('links_content', $inhalt);

und die Template Datei:
HTML:
					{foreach from=$links_content item=select}
						<div class="entry_title">
							{$select.kat_name}
						</div>

						{if ($select.kat_entrys == false)}
							<p>Keine Links in dieser Kategorie vorhanden!</p>
						{else}
							<p>{$select.link_url}</p>
						{/if}

						<br /><br />
					{/foreach}


Wie lasse ich jetzt die Links in einer Schleife ausgeben?
Er zeigt immer nur einen Link an!!



mfG
David
 
Ich habe mir jetzt nicht deinen ganzen Quellcode oben durchgelesen, aber in Smarty kannst du wie folgt auf einzelne Elemente eines Arrays zugreifen:

HTML:
{section name=i loop=$links_content}

  <div class="entry_title">
    {$links_content[i].0}
	</div>

  {if ($links_content[i].1 == false)}
    <p>Keine Links in dieser Kategorie vorhanden!</p>
  {else}
    <p>{links_content[i].2}</p>
  {/if}

{/section}

Hast du hingegen ein weiteres Array in einem Array schachtelst du ganz einfach die SECTION ..
 
Zuletzt bearbeitet:
Hallo,

ich mache das mit der Foreach Schleife. Ich hatte das schonmal, weiß aber nicht mehr wie, hinbekommen...

Könnte man im PHP Teil ein 2. Array machen und dann das 2. Array in einer 2. Foreach Schleife ausgbene?
 
Hallo,

ich habe es imemr noch nicht hinbekommen :(
Könnte mir vielleicht einer ein Beispiel machen?
Wäre sehr freundlich :)
 
Hallo,

ich mache das mit der Foreach Schleife. Ich hatte das schonmal, weiß aber nicht mehr wie, hinbekommen...

Könnte man im PHP Teil ein 2. Array machen und dann das 2. Array in einer 2. Foreach Schleife ausgbene?



Speichere einfach die links in der while schleife in einem extra array


......

<?
$query = 'SELECT
*
FROM
link_kategorien
ORDER BY
`link_name` ASC';
$result = @mysql_query($query);

$cats = array();
$links = array();

while($select = mysql_fetch_assoc($result))
{
// Kategorien
$cats[] = $select;


// Links der Kategorie auslesen
$link_query = 'SELECT
*
FROM
links
WHERE
`link_kategorie` = "'.$id.'"
ORDER BY
`link_id` DESC';
$link_result = @mysql_query($link_query);

while($select_link = mysql_fetch_assoc($result))
{
$links[$select["link_kategorie"]][] = $select_link;
}
}

$tpl->assign('cats', $cats);
$tpl->assign('links', $links);



in der Template dann

{foreach from=$cats item=select}
<div class="entry_title">
{$select.link_name}
</div>

{if isset($links[$select[link_id]])}
{foreach from=$links[$select[link_id]] item=select_link}
<div>{$select_link.link_url}</div>
{/foreach}
{else}
<p>Keine Links in dieser Kategorie vorhanden!</p>
{/if}

<br /><br />
{/foreach}


ich habs jetzt nicht ausprobiert aber so sollte es gehen
 
Zurück