Hallo,

Ik ben bezig met een website, en moet nu een media-album maken. Dat is een gewone boomstructuur, en kunnen eindeloze subalbums in komen. Zoiets:

id | int
title | varchar
parent | int

Dat kan verder prima, het enige is dat ik gebruik maak van breadcrumps (home > videoalbum > album > subalbum > subsubalbum > etc.). Ik zou niet weten hoe ik kan zorgen dat ik alle parents op kan halen, iemand een idee?

Mvg,
Jonathan.
Diezelfde vraag had ik laatst ook.

Je moet dan een recursieve functie maken die steeds de parent van elke element zoekt. Op een gegeven moment kom je bij een element met parent NULL, en dat is dus de bovenste.
Oké, dat vreesde/dacht ik al. Bedankt!
Ik kom er even niet uit. Ik gebruik de volgende functie:
<?php
function getParents($iAlbum)
{
$aParent = array();
$sQuery = " SELECT
title,
parent
FROM
c_album
WHERE
id = '" . $iAlbum . "'";
$result = mysql_query($sQuery);
if ($result && mysql_num_rows($result))
{
$row = mysql_fetch_assoc($result);
$aParent[] = array
(
'id' => $iAlbum,
'title' => $row['title']
);
$aParent[] = getParents($row['parent']);
return $aParent;
}
else
{
return false;
}
}
?>
En nu is dit het resultaat:
<?php
Array
(
[0] => Array
(
[id] => 4
[title] => test4
)

[1] => Array
(
[0] => Array
(
[id] => 3
[title] => test3
)

[1] => Array
(
[0] => Array
(
[id] => 2
[title] => test2
)

[1] => Array
(
[0] => Array
(
[id] => 1
[title] => test1
)

[1] =>
)

)

)

)
?>
Snap je wat er mis gaat? Ikzelf kan even niet meer helder nadenken...

(Ik weet het, ik gebruik veel query's, maar ik ben iets te lui om die manier van Martijn te gebruiken. Of is dit echt dom?)
en daar hebben ze nou resursieve functionalieteit en http://nl2.php.net/spl voor uitgevonden denk ik....
Of is dit echt dom?
Echt dom wil ik niet zeggen, maar ik weet wel dat het echt slim is om de manier te gebruiken van de link uit de post van Martijn.

Je kunt het jezelf natuurlijk zo moeilijk maken als je wilt, maar ik ben lui dus kies meestal de makkelijkste manier ;-)
Die methode waar Martijn naar linkt heb ik ook gebruikt, het werkt prima.
Edit van Herjan
Blaaaat, PHPhulp is lek man! Check wie dit bericht gewijzigd heeft...
@Herjan: Dat is oud nieuws, er komt (wanneer?) niet voor niets een nieuwe versie.
Euhm, ik weet het niet zeker, maar kan ik die manier van Herjan wel gebruiken aangezien ik onderaan begin? Ik kan er zelf even niet op komen hoe dat zou moeten...

Dit idee dus:

id | title | parent
1  | test1 | 0
2  | test2 | 1
3  | test3 | 2
4  | test4 | 3

Dan wil ik dus als ik bijvoorbeeld in album 4 zit, een array krijgen als:
<?php
Array
(
[3] => 'Test3',
[2] => 'Test2',
[1] => 'Test1'
)
?>
De volgorde mag ook andersom, dat maakt niet uit.
Wil iemand a.u.b. even meedenken?

Edit:
Ik heb het inmiddels:
<?php
function getParents($iAlbum)
{
$aParent = array();
$sQuery = " SELECT
title,
parent
FROM
c_album
WHERE
id = '" . $iAlbum . "'";
$result = mysql_query($sQuery);
if ($result && mysql_num_rows($result))
{
$row = mysql_fetch_assoc($result);
$aParent[] = array
(
'id' => $iAlbum,
'title' => $row['title']
);
$aTParent = getParents($row['parent']);
if ($aTParent)
{
foreach ($aTParent as $aTArray)
{
$aParent[] = array
(
'id' => $aTArray['id'],
'title' => $aTArray['title']
);
}
}
return $aParent;
}
else
{
return false;
}
}
?>
Maar als jullie weten hoe dit op een nettere manier kan, dan hoor ik het graag.

Reageren