PHP - Czy dobra rekurencyjna funkcja?

0

witam

mam strukture mysql: (kategorie) tabela cats: ID | NAME | PARENT
parent to oczywiście rodzic, wiadomo o co chodzi.

chce sobie wygenerowac jakby url do wybranej kategorii ($row['category']) (rekurencyjnie) na podstawie namów np. aaa/bbb/ccc

function genUrl($parent, $url = '')
{
	$sql = mysql_query('SELECT id, name, parent FROM cats WHERE id=' . $parent);
	if($sql->rowCount() > 0)
	{
		$row = mysql_fetch_array($sql);
		$url = genUrl($row['parent'], $url) . '/' . $row['name'];
	}
	return $url;
}
echo albumUrl($row['category']);

kod dziala, ale mam pytanie co o nim sadzicie? jest ok ale moze zrobilem cos nieoptymalnie lub da sie zrobić ladniej ? choc watpie, pytam z ciekawosci
pozdr.

0

przepraszam, maly blad w kodzie (dla uproszczenia przepisalem na standardowe funkcje mysql itp.)

function genUrl($parent, $url = '')
{
        $sql = mysql_query('SELECT id, name, parent FROM cats WHERE id=' . $parent);
        if(mysql_num_rows($sql) > 0)
        {
                $row = mysql_fetch_array($sql);
                $url = genUrl($row['parent'], $url) . '/' . $row['name'];
        }
        return $url;
}
echo genUrl($row['category']);
0

Nie lepiej pobrać wszystkich kategorii, zbudować z tego drzewo i trzymać w cache? Wtedy nie zajeżdżasz bazy setkami zapytań, żeby wygenerować 1 link w n-tej podkategorii.

1 użytkowników online, w tym zalogowanych: 0, gości: 1