lav album liste
Hejsa.Jeg har en album liste i db som er ala: a_id, a_level hvor a_id er autoinc. og a_level er id på det album som det aktuelle album tilhører (parent til child)
jeg vil gerne lave en liste som finder albums. Og de albums som har children.
Så jeg f.eks. får en liste ala:
(efter albumnavnet angiver jeg nu a_id, a_level)
Albums:
Fodbold (1,0)
-Afslutning (2,1)
-Turen 2007 (3,1)
Sverige (4,0)
-Bjuv (5,4)
-Gøteborg (6,4)
-Stockholm (7,4)
Jeg har lavet to små funktioner der rekursivt henter skidtet men den laver et mellemrum (tomt array) når den finder at der er children til en parent.
Resultat:
Albums:
Fodbold (1,0)
-Afslutning (2,1)
-Turen 2007 (3,1)
Sverige (4,0)
-Bjuv (5,4)
-Gøteborg (6,4)
-Stockholm (7,4)
Code:
function get_album_list($a=0)
{
$sql = "SELECT MAX(a_id) FROM g3_albums";
$res = mysql_query($sql);
$max_a_id = mysql_fetch_assoc($res);
if ($_SESSION[status] == 3)
$sql = "
SELECT * FROM g3_albums
WHERE a_level=$a
ORDER BY a_id, a_level ASC
";
else
$sql = "
SELECT * FROM g3_albums
WHERE u_id = '".$_SESSION[u_id]."'
AND a_level=$a
ORDER BY a_id, a_level ASC
";
$res = mysql_query($sql);
$num_rows = mysql_num_rows($res);
if ($num_rows == 0)
return;
while ($row = mysql_fetch_assoc($res))
{
// We have reached the end of the list
if ($row[a_id] == $max_a_id[a_id])
break;
$alb_array[$row[a_id]] = array ("a_id" => $row[a_id], "a_name" => $row[a_name], "a_level" => $row[a_level]);
$alb_array[$row[a_id]][] = get_album_list($row[a_id]);
} // end while row
return $alb_array;
} // end function get_album_list
function create_album_list($alb_arrays, $x=0)
{
foreach($alb_arrays AS $alb_array)
{
if (is_array($alb_array))
{
if($alb_array[a_level] > 0) $x++;
$tegn = str_repeat("-", $x);
echo "<option value='$alb_array[a_id]' ".(($a == $alb_array[a_id]) ? " selected" : "").">".(($alb_array[a_level] > 0) ? $tegn : "")."$alb_array[a_name]";
create_album_list($alb_array, $x);
if($alb_array[a_level] > 0) $x--;
}
} // end foreach alb_arrays
} // end function create_album_list
Er der nogen der kan se hvorfor den gør det og evt. hvordan jeg stopper den med det.
Det aktuelle array er her: (resultat af get_album_list)
array(5) {
[1]=>
array(4) {
["a_id"]=>
string(1) "1"
["a_name"]=>
string(7) "Bitches"
["a_level"]=>
string(1) "0"
[0]=>
array(2) {
[4]=>
array(4) {
["a_id"]=>
string(1) "4"
["a_name"]=>
string(9) "blackpics"
["a_level"]=>
string(1) "1"
[0]=>
NULL
}
[13]=>
array(4) {
["a_id"]=>
string(2) "13"
["a_name"]=>
string(10) "WallPapers"
["a_level"]=>
string(1) "1"
[0]=>
NULL
}
}
}
[2]=>
array(4) {
["a_id"]=>
string(1) "2"
["a_name"]=>
string(5) "Cross"
["a_level"]=>
string(1) "0"
[0]=>
array(1) {
[10]=>
array(4) {
["a_id"]=>
string(2) "10"
["a_name"]=>
string(5) "Anton"
["a_level"]=>
string(1) "2"
[0]=>
NULL
}
}
}
[25]=>
array(4) {
["a_id"]=>
string(2) "25"
["a_name"]=>
string(5) "Trane"
["a_level"]=>
string(1) "0"
[0]=>
array(5) {
[31]=>
array(4) {
["a_id"]=>
string(2) "31"
["a_name"]=>
string(8) "div junk"
["a_level"]=>
string(2) "25"
[0]=>
NULL
}
[33]=>
array(4) {
["a_id"]=>
string(2) "33"
["a_name"]=>
string(3) "bbq"
["a_level"]=>
string(2) "25"
[0]=>
NULL
}
[36]=>
array(4) {
["a_id"]=>
string(2) "36"
["a_name"]=>
string(11) "Tanegashima"
["a_level"]=>
string(2) "25"
[0]=>
NULL
}
[38]=>
array(4) {
["a_id"]=>
string(2) "38"
["a_name"]=>
string(10) "Mt. Ontake"
["a_level"]=>
string(2) "25"
[0]=>
NULL
}
[72]=>
array(4) {
["a_id"]=>
string(2) "72"
["a_name"]=>
string(5) "Nepal"
["a_level"]=>
string(2) "25"
[0]=>
array(3) {
[73]=>
array(4) {
["a_id"]=>
string(2) "73"
["a_name"]=>
string(7) "everest"
["a_level"]=>
string(2) "72"
[0]=>
NULL
}
[74]=>
array(4) {
["a_id"]=>
string(2) "74"
["a_name"]=>
string(9) "Annapurna"
["a_level"]=>
string(2) "72"
[0]=>
NULL
}
[75]=>
array(4) {
["a_id"]=>
string(2) "75"
["a_name"]=>
string(15) "Nepal and India"
["a_level"]=>
string(2) "72"
[0]=>
NULL
}
}
}
}
}
[26]=>
array(4) {
["a_id"]=>
string(2) "26"
["a_name"]=>
string(15) "Lars´s Billeder"
["a_level"]=>
string(1) "0"
[0]=>
array(16) {
[12]=>
array(4) {
["a_id"]=>
string(2) "12"
["a_name"]=>
string(9) "AcidSpunk"
["a_level"]=>
string(2) "26"
[0]=>
NULL
}
[14]=>
array(4) {
["a_id"]=>
string(2) "14"
["a_name"]=>
string(9) "GriseFest"
["a_level"]=>
string(2) "26"
[0]=>
NULL
}
[23]=>
array(4) {
["a_id"]=>
string(2) "23"
["a_name"]=>
string(14) "Træf på Toppen"
["a_level"]=>
string(2) "26"
[0]=>
NULL
}
[24]=>
array(4) {
["a_id"]=>
string(2) "24"
["a_name"]=>
string(8) "SunnyDay"
["a_level"]=>
string(2) "26"
[0]=>
NULL
}
[29]=>
array(4) {
["a_id"]=>
string(2) "29"
["a_name"]=>
string(7) "Gedesby"
["a_level"]=>
string(2) "26"
[0]=>
NULL
}
[52]=>
array(4) {
["a_id"]=>
string(2) "52"
["a_name"]=>
string(19) "Luxembourg_oct_2006"
["a_level"]=>
string(2) "26"
[0]=>
NULL
}
[56]=>
array(4) {
["a_id"]=>
string(2) "56"
["a_name"]=>
string(11) "Brovst_2007"
["a_level"]=>
string(2) "26"
[0]=>
NULL
}
[58]=>
array(4) {
["a_id"]=>
string(2) "58"
["a_name"]=>
string(7) "diverse"
["a_level"]=>
string(2) "26"
[0]=>
NULL
}
[59]=>
array(4) {
["a_id"]=>
string(2) "59"
["a_name"]=>
string(31) "Frederiksberg Have 2006 Efterår"
["a_level"]=>
string(2) "26"
[0]=>
NULL
}
[62]=>
array(4) {
["a_id"]=>
string(2) "62"
["a_name"]=>
string(16) "HLS - Pinse 2007"
["a_level"]=>
string(2) "26"
[0]=>
NULL
}
[63]=>
array(4) {
["a_id"]=>
string(2) "63"
["a_name"]=>
string(10) "Lejre-2007"
["a_level"]=>
string(2) "26"
[0]=>
NULL
}
[64]=>
array(4) {
["a_id"]=>
string(2) "64"
["a_name"]=>
string(8) "Kronborg"
["a_level"]=>
string(2) "26"
[0]=>
NULL
}
[65]=>
array(4) {
["a_id"]=>
string(2) "65"
["a_name"]=>
string(19) "Smuttur til Holland"
["a_level"]=>
string(2) "26"
[0]=>
NULL
}
[67]=>
array(4) {
["a_id"]=>
string(2) "67"
["a_name"]=>
string(10) "Ferie 2007"
["a_level"]=>
string(2) "26"
[0]=>
NULL
}
[70]=>
array(4) {
["a_id"]=>
string(2) "70"
["a_name"]=>
string(12) "Sverigeturen"
["a_level"]=>
string(2) "26"
[0]=>
NULL
}
[76]=>
array(4) {
["a_id"]=>
string(2) "76"
["a_name"]=>
string(7) "Fodbold"
["a_level"]=>
string(2) "26"
[0]=>
array(2) {
[32]=>
array(4) {
["a_id"]=>
string(2) "32"
["a_name"]=>
string(15) "Fodbold Weekend"
["a_level"]=>
string(2) "76"
[0]=>
NULL
}
[35]=>
array(4) {
["a_id"]=>
string(2) "35"
["a_name"]=>
string(18) "Fodbold Afslutning"
["a_level"]=>
string(2) "76"
[0]=>
NULL
}
}
}
}
}
[68]=>
array(4) {
["a_id"]=>
string(2) "68"
["a_name"]=>
string(15) "Britts Billeder"
["a_level"]=>
string(1) "0"
[0]=>
array(3) {
[55]=>
array(4) {
["a_id"]=>
string(2) "55"
["a_name"]=>
string(7) "Zoo2007"
["a_level"]=>
string(2) "68"
[0]=>
NULL
}
[69]=>
array(4) {
["a_id"]=>
string(2) "69"
["a_name"]=>
string(13) "Mallorca 2007"
["a_level"]=>
string(2) "68"
[0]=>
NULL
}
[71]=>
array(4) {
["a_id"]=>
string(2) "71"
["a_name"]=>
string(27) "Claus og Charlottes Bryllup"
["a_level"]=>
string(2) "68"
[0]=>
NULL
}
}
}
}
