Tříd pro načtení stromového menu – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Tříd pro načtení stromového menu – PHP – Fórum – Programujte.comTříd pro načtení stromového menu – PHP – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
plasmo0
Věrný člen
8. 2. 2009   #1
-
0
-

Ahoj, snažím se na jendom webu vytvořit stromové menu. Web je dělán komplet v OOP a je na něm použito Smarty.

Struktura tabulky kategoire:



| id | nazev | seo | jazyk | tata |


Již se mi povedlo napsat metodu, která mi vytvoří cestu k danému prvku ve stromové strukutře:


public function najdi($tata){
$max = 100;
do{
$dotaz = $this->db->dotaz("SELECT * FROM kategorie WHERE id='".$tata."' LIMIT 1");
$res = $this->db->vysledek();
$id = $res->id;
$tata = $res->tata;

if ($id > 0)$menu[]= $id;
$urovni++;
}while(($tata!=0) and ($urovni < $max));
$menu[] =0;
$menu = array_reverse($menu);
return $menu;
}

Defakto se jedná o upravenou fci, kterou jsem našel na webu.
Výstup metody je u sturktury Software -> Účetní -> Money následující:


Array ( [0] => 0 [1] => 2 [2] => 5 [3] => 7 )


No a teď bych potřeboval poradi s metodou která mi to menu bude zobrazovat. Potřebuji aby výsledk byl zase fomrou pole, ktere pak budu moc zpracovat v šabloně.

Nahlásit jako SPAM
IP: 82.150.166.–
Jak vzniká vynález? To všichni vědí, že je něco nemožné, a pak se objeví nějaký blázen, který neví, že je to nemožné, a udělá vynález. [br] Albert Einstein [br][br] http://plasmo.cz [br] http://bleskovaregistrace.cz [br] http://livetrading.cz
Reklama
Reklama
hrach
~ Redaktor
+1
Boss
9. 2. 2009   #2
-
0
-

takze, nevim jestli s tim kodem, ktery sem davam, se da vyresit to,ze chci zobrazit jen urcitou cast stromu. Ja myslim ze ne.
k tomu by se melo pouzit toto: http://dev.mysql.com/tech-resources/articles/hierarchical-data.html

Kazdopadne, jednoduchy kod pro vypis:



/*
Text 1
Text 2
Text 3
Text 4
Text 5
Text 6
*/
$test = array(
array('id'=>1,'parent_id'=>0,'text'=>'Text 1'),
array('id'=>2,'parent_id'=>1,'text'=>'Text 2'),
array('id'=>3,'parent_id'=>1,'text'=>'Text 3'),
array('id'=>4,'parent_id'=>3,'text'=>'Text 4'),
array('id'=>5,'parent_id'=>1,'text'=>'Text 5'),
array('id'=>6,'parent_id'=>0,'text'=>'Text 6'),
);

print_r(fetchTree($test, 'id', 'parent_id'));

function fetchTree($res, $id, $parent_id)
{
$i = 0;

$row = $res[$i];
if (!$row)
return array();

$refs = array();
$data = NULL;

if (!array_key_exists($id, $row) || !array_key_exists($parent_id, $row))
throw new Exception("Column '$id' or '$parent_id' is not in record");

do {
$ref = &$refs[$row[$id]];

$ref[$parent_id] = $row[$parent_id];
$ref = array_merge($ref, $row);

if ($row[$parent_id] == NULL)
$data[$row[$id]] = &$ref;
else
$refs[$row[$parent_id]]['children'][$row[$id]] = &$ref;

$i++;
} while(!empty($res[$i]) && $row = $res[$i]);

unset($ref);
unset($refs);
return $data;
}

Nahlásit jako SPAM
IP: 193.179.169.–
http://jan.skrasek.com@hrachcz – webdeveloper
plasmo0
Věrný člen
9. 2. 2009   #3
-
0
-

Děkuju. Moc mi to pomohlo k napsání vlastní metody.

Nahlásit jako SPAM
IP: 82.150.166.–
Jak vzniká vynález? To všichni vědí, že je něco nemožné, a pak se objeví nějaký blázen, který neví, že je to nemožné, a udělá vynález. [br] Albert Einstein [br][br] http://plasmo.cz [br] http://bleskovaregistrace.cz [br] http://livetrading.cz
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 35 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý