Chain / Trail System

  • Themenstarter Themenstarter grobi
  • Beginndatum Beginndatum
G

grobi

Ich baue gerade eine Linkliste, die in der obersten Zeile eine History führen soll, die ähnlich aufgebaut ist, wie die hier im Board

tutorials.de:: forum > Programming-Platform > PHP

Also, wenn ich in eine Unterkategorie klicke, soll in meiner Kopfzeile mein bisher begangener Pfad aufgelistet werden.
Hierfür suche ich am besten eine Funktion, die ich dann variabel verwenden kann.

Beispiel:
Ich hab ne SQL Tabelle, die so aussieht:

ID Name Description Parentcat
1 Musik Meine Sammlung 0
2 CDs alle CDs 1
3 MCs alle MCs 1
4 LPs alle LPs 1
5 60Min 60 Minuten MCs 3
wenn mich nun durch Kategorien klicke, soll irgenwo ausgegeben werden:

Musik >> MCs >> 60Min
 
Hm... sollte ungefähr so gehen:
PHP:
function getChainByID($id)
{
  do
  {
    $cat = mysql_fetch_array(mysql_query("SELECT * FROM tabelle WHERE ID='$id'"));
    // um einer Endlosschleife vorzubeugen:
    if (!$cat) $id=0;
    $chain[] = $cat;
    $id = $cat[Parentcat];
  } while ($id!=0);
  return array_reverse($chain);  
}

function printChain($chain)
{
  foreach ($chain as $part)
  {
    $links[] = "<a href=\"$PHP_SELF?id=$part[ID]\">$part[Name]</a>";
  }
  echo implode(" >> ", $links);
}

function getChildrenByID($id)
{
	$result = mysql_query("SELECT * FROM tabelle WHERE Parentcat='$id'");
	while ($children[] = mysql_fetch_array($result));
	return $children;
}

function printChildren($children)
{
	foreach ($children as $child)
	{
		echo "<a href=\"$PHP_SELF?id=$child[ID]\">$child[Name]</a><br>";
	}
}

if (!isset($id)) $id = 1;
printChain(getChainByID($id));
echo "<br><br>";
printChildren(getChildrenByID($id));
?>
Hab's grade mit einer Beispieltabelle bei mir getestet, funzt wunderbar.


reima
 
Whow, super.

Werds gleich mal testen. Aber so auf den ersten Blick siehts gut aus.

ist dir das auf die schnelle selbst eingefallen, oder hattest du das zufällig in der Schublade ??

Thanx for your Support.
 
Thanx

Habs in meinen Code eingebaut und es funktioniert prächtig. vor allem kann ich nachvollziehen, was passiert.

nachmal dickes Dankeschön.:)
 
Zurück