php and Postgre
3 отговора
87 прегледа
php and Postgre
nqkoj moje li da pomogne za slednoto:
imam slednata tablica v PostgreSQL
CREATE TABLE scheme.category
(
id serial NOT NULL,
name varchar(255) NOT NULL,
id_parent int4 NOT NULL,
CONSTRAINT productscategories_pkey PRIMARY KEY (id)
)
koqto predstawq kategorii kato durwowidna struktura.
iskam da izwleka zapisite roditel->naslednik->naslednik ->t.n
koito da sa podredeni primerno taka
- cat1
- cat1.1
-cat1.1.1
- cat1.2
-cat2
- cat2.1
- cat2.2
-cat2.2.1
- i t.n
nqkakwa funciqa eventualno da se napishe v posgreto ili nqkakuv drug na4in
kato uslowiteo e 4e dyrwoto moje da e s bezkrajna dulbo4ina.
ako nqkoj ima ideq neka da napishe koda kakto misli 4e 6te e.
10x
imam slednata tablica v PostgreSQL
CREATE TABLE scheme.category
(
id serial NOT NULL,
name varchar(255) NOT NULL,
id_parent int4 NOT NULL,
CONSTRAINT productscategories_pkey PRIMARY KEY (id)
)
koqto predstawq kategorii kato durwowidna struktura.
iskam da izwleka zapisite roditel->naslednik->naslednik ->t.n
koito da sa podredeni primerno taka
- cat1
- cat1.1
-cat1.1.1
- cat1.2
-cat2
- cat2.1
- cat2.2
-cat2.2.1
- i t.n
nqkakwa funciqa eventualno da se napishe v posgreto ili nqkakuv drug na4in
kato uslowiteo e 4e dyrwoto moje da e s bezkrajna dulbo4ina.
ako nqkoj ima ideq neka da napishe koda kakto misli 4e 6te e.
10x
Re: php and Postgre
ами най-лесното в
ще е добре да си направиш индекс по id_parent (а и ако искаш супер стриктност и foreign key) и главната директория я приемам за 0
тва го написах за 2-3 минути, така че може да не е много проверено, ама идеата е такава
а и не винаги това е достатъчно бързо решение, но може да си намериш статии сега не се сещам къде (освен гугъл), където се обсъждат дърветата и тяхното представяне в БД
function draw_level($parent) {
$query = 'SELECT * FROM scheme.category WHERE id_parent = \''.pg_escape_string($parent).'\'';
$num_rows = pg_num_rows($res);
for ($cnt = 0; $cnt < $num_rows; ++$cnt) {
$row = pg_fetch_array($res, $cnt, PGSQL_ASSOC);
echo $row['name'], "\n";
draw_level($row['id']);
}
pg_free_result($res);
}
draw_level(0);
ще е добре да си направиш индекс по id_parent (а и ако искаш супер стриктност и foreign key) и главната директория я приемам за 0
тва го написах за 2-3 минути, така че може да не е много проверено, ама идеата е такава
а и не винаги това е достатъчно бързо решение, но може да си намериш статии сега не се сещам къде (освен гугъл), където се обсъждат дърветата и тяхното представяне в БД
по-добрият вариант
(винаги мисля по-късно ;-))
значи ако може да променяш нещата т.е. сега пишеш структурата на таблиците
разгледай contrib директорията на postgresql - модула ltree ..... много по-добро решение за дървета в общия случай
значи ако може да променяш нещата т.е. сега пишеш структурата на таблиците
разгледай contrib директорията на postgresql - модула ltree ..... много по-добро решение за дървета в общия случай