Indledningsvis, dette indlæg bliver en smule langt og komplekst
Jeg har en tabel med konfigurationsdata.
Dette data skal rekursivt bygges op til et array.
Arrayet skal ende med at se sådan ud:
$arr ['modules'] ['allowed_modules'] [0] = 'images';
$arr ['modules'] ['allowed_modules'] [1] = 'sounds';
$arr ['jewellery'] ['2007_collection'] ['images'] [0] = 'img01.jpg';
$arr ['jewellery'] ['2007_collection'] ['images'] [1] = 'img02.jpg';
$arr ['jewellery'] ['2007_collection'] ['thumbnails'] [0] = 'img01.jpg';
$arr ['jewellery'] ['2007_collection'] ['thumbnails'] [1] = 'img02.jpg';
Pointen er altså at jeg kan modellere fra key->value til key->[masse
key's]->key->value.
Der er således behov for rekursivt at bygge indexet i arrayet op og det er
der jeg kommer til kort.
Jeg har lavet nedenstående kode, som ikke er kørt da den ikke vil fungere.
config_SNO er en fremmednøgle der peger på tabellen selv.
Er der nogen der kan komme med nogle pointers til hvordan pokker jeg kommer
videre?
$arr_complete = fetch_config (0);
function fetch_config ($config_SNO)
{
$SQL = "
SELECT config_SNO,
key,
value
FROM config
WHERE config_SNO = '". $config_SNO ."'
";
$data = mysql_query ($SQL) or die (mysql_error());
while ($hr = mysql_fetch_array ($data, MYSQL_ASSOC))
{
$key = $hr ["key"];
$value = $hr ["value"];
$config_SNO = $hr ["config_SNO"];
if ($config_SNO)
{
# Defekt del!
$arr [$key] = fetch_config ($config_SNO);
}
else
{
$arr [$key] = $value;
}
}
return $arr;
}
CREATE TABLE `config` (
`SNO` int(10) unsigned NOT NULL auto_increment,
`config_SNO` int(10) unsigned default NULL,
`key` varchar(255) NOT NULL,
`value` text,
PRIMARY KEY (`SNO`),
KEY `config_SNO` (`config_SNO`)
) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=latin1;
INSERT INTO config (SNO, config_SNO, `key`, value) VALUES
('1',NULL,'modules',NULL);
INSERT INTO config (SNO, config_SNO, `key`, value) VALUES
('2','1','allowed_modules','images');
INSERT INTO config (SNO, config_SNO, `key`, value) VALUES
('3','1','allowed_modules','sounds');
INSERT INTO config (SNO, config_SNO, `key`, value) VALUES
('4',NULL,'jewellery',NULL);
INSERT INTO config (SNO, config_SNO, `key`, value) VALUES
('5','4','2007_collection',NULL);
INSERT INTO config (SNO, config_SNO, `key`, value) VALUES
('6','5','images','img01.jpg');
INSERT INTO config (SNO, config_SNO, `key`, value) VALUES
('7','5','images','img02.jpg');
INSERT INTO config (SNO, config_SNO, `key`, value) VALUES
('8','5','thumbnails','img01.jpg');
INSERT INTO config (SNO, config_SNO, `key`, value) VALUES
('9','5','thumbnails','img02.jpg');