Portál AbcLinuxu, 25. dubna 2024 07:14


Dotaz: Jak doplnit odkazy k výpisu kategorií

21.1.2018 20:13 Důchodce
Jak doplnit odkazy k výpisu kategorií
Přečteno: 412×
Odpovědět | Admin
Dobrý večer, potřeboval bych poradit v php s výpisem kategorií. Logika dané metody je na mne už moc velká.

Kód sem nešel vložit, proto jsem ho dal sem

Hrál jsem se s tím celý víkend ale nezvládl jsem to. Jediné co jsem dokázal, bylo nahradit řádek 5

$html .= "<li>" . $tree[$i]['name'];

tímto
$html .= "<li><a href="'.$tree[$i]['url'].'">" . $tree[$i]['name'] . "</a>";
což sice odkazy vypisuje ale nevloží to předchozí odkaz
<a href="cat1">...
správně by to mělo být takto
<a href="cat1/cat2/cat3">...
Může mi s tím prosím někdo mladší pomoci? Předem všem děkuji. Honza.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

21.1.2018 20:30 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Jak doplnit odkazy k výpisu kategorií
Odpovědět | | Sbalit | Link | Blokovat | Admin
Vypadá to dost šíleně. Pokud to chceš zjednodušit, místo for použij foreach. Tím zmizí všechny indexy s $i.

Ten strom vypadá dost podivně. Je to vůbec strom?
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
22.1.2018 13:37 Důchodce
Rozbalit Rozbalit vše Re: Jak doplnit odkazy k výpisu kategorií
Odpovědět | | Sbalit | Link | Blokovat | Admin
To nikdo vážně nevíte, nebo to není vhodný dotaz do fóra?
22.1.2018 14:17 NN
Rozbalit Rozbalit vše Re: Jak doplnit odkazy k výpisu kategorií
Co to ma vubec delat?
22.1.2018 15:49 Důchodce
Rozbalit Rozbalit vše Re: Jak doplnit odkazy k výpisu kategorií
No vypisuje to kategorie z pole $tree.
Item-1
  Item-2
  Item-3
    Item-4
Item-5
Item-6
  Item-7
    Item-8
      Item-9
Ale s tou mou opravou to vkládá odkazy pouze takto
<a href="item-1">Item-1</a>
  <a href="item-2">Item-2</a>
  <a href="item-3">Item-3</a>
    <a href="item-4">Item-4</a>
<a href="item-5">Item-5</a>
<a href="item-6">Item-6</a>
  <a href="item-7">Item-7</a>
    <a href="item-8">Item-8</a>
      <a href="item-9">Item-9</a>
ale potřebuji aby to vkládalo odkazy takto
<a href="item-1">Item-1</a>
  <a href="item-1/item-2">Item-2</a>
  <a href="item-1/item-3">Item-3</a>
    <a href="item-1/item-3/item-4">Item-4</a>
<a href="item-5">Item-5</a>
<a href="item-6">Item-6</a>
  <a href="item-6/item-7">Item-7</a>
    <a href="item-6/item-7/item-8">Item-8</a>
      <a href="item-6/item-7/item-8/item-9">Item-9</a>
V tom $tree v $row['url'] je vždy jen název kategorie bez diakritiky a mezer, není tam celá cesta a já nevím jak to pospojovat.
23.1.2018 22:05 ehmmm
Rozbalit Rozbalit vše Re: Jak doplnit odkazy k výpisu kategorií
A nebyl by nejaky var_dump toho $tree? At vime, co je presne na vstupu.
25.1.2018 02:00 Důchodce
Rozbalit Rozbalit vše Re: Jak doplnit odkazy k výpisu kategorií
Určitě, tady je výpis z var_dump($tree).
array(12) {
  [0]=>
  array(5) {
    ["id"]=>
    string(1) "1"
    ["name"]=>
    string(4) "root"
    ["url"]=>
    string(4) "root"
    ["parent"]=>
    string(1) "0"
    ["level"]=>
    string(1) "0"
  }
  [1]=>
  array(5) {
    ["id"]=>
    string(1) "2"
    ["name"]=>
    string(6) "První"
    ["url"]=>
    string(5) "prvni"
    ["parent"]=>
    string(1) "1"
    ["level"]=>
    string(1) "1"
  }
  [2]=>
  array(5) {
    ["id"]=>
    string(2) "12"
    ["name"]=>
    string(11) "Jedenáctá"
    ["url"]=>
    string(9) "jedenacta"
    ["parent"]=>
    string(1) "2"
    ["level"]=>
    string(1) "2"
  }
  [3]=>
  array(5) {
    ["id"]=>
    string(1) "3"
    ["name"]=>
    string(6) "Druhá"
    ["url"]=>
    string(5) "druha"
    ["parent"]=>
    string(1) "1"
    ["level"]=>
    string(1) "1"
  }
  [4]=>
  array(5) {
    ["id"]=>
    string(1) "4"
    ["name"]=>
    string(7) "Třetí"
    ["url"]=>
    string(5) "treti"
    ["parent"]=>
    string(1) "1"
    ["level"]=>
    string(1) "1"
  }
  [5]=>
  array(5) {
    ["id"]=>
    string(1) "5"
    ["name"]=>
    string(8) "Čtvrtá"
    ["url"]=>
    string(6) "ctvrta"
    ["parent"]=>
    string(1) "4"
    ["level"]=>
    string(1) "2"
  }
  [6]=>
  array(5) {
    ["id"]=>
    string(1) "6"
    ["name"]=>
    string(6) "Pátá"
    ["url"]=>
    string(4) "pata"
    ["parent"]=>
    string(1) "5"
    ["level"]=>
    string(1) "3"
  }
  [7]=>
  array(5) {
    ["id"]=>
    string(1) "7"
    ["name"]=>
    string(7) "Šestá"
    ["url"]=>
    string(5) "sesta"
    ["parent"]=>
    string(1) "1"
    ["level"]=>
    string(1) "1"
  }
  [8]=>
  array(5) {
    ["id"]=>
    string(1) "8"
    ["name"]=>
    string(6) "Sedmá"
    ["url"]=>
    string(5) "sedma"
    ["parent"]=>
    string(1) "7"
    ["level"]=>
    string(1) "2"
  }
  [9]=>
  array(5) {
    ["id"]=>
    string(1) "9"
    ["name"]=>
    string(5) "Osmá"
    ["url"]=>
    string(4) "osma"
    ["parent"]=>
    string(1) "8"
    ["level"]=>
    string(1) "3"
  }
  [10]=>
  array(5) {
    ["id"]=>
    string(2) "10"
    ["name"]=>
    string(8) "Devátá"
    ["url"]=>
    string(6) "devata"
    ["parent"]=>
    string(1) "9"
    ["level"]=>
    string(1) "4"
  }
  [11]=>
  array(5) {
    ["id"]=>
    string(2) "11"
    ["name"]=>
    string(8) "Desátá"
    ["url"]=>
    string(6) "desata"
    ["parent"]=>
    string(2) "10"
    ["level"]=>
    string(1) "5"
  }
}
25.1.2018 08:26 ehmmm
Rozbalit Rozbalit vše Re: Jak doplnit odkazy k výpisu kategorií
Hned je to jasnejsi.

Klicove slovo je "rekurze". (A potom jeste poucka, ze jakakoliv rekurze se da prepsat do smycky.)

Zkusim nastrelit algoritmus slovne:

Postupne projizdim pole, az narazim na prvek s level=1. Vypisu jej a hledam prvek, ktery ma jako parenta prave vypsany prvek a level=2. (V podstate ten level je zbytecny. Teoreticky staci informace o parentovi, pricemz ti v prvnim patre zadneho parenta nemaji.) Kdyz najdu, tak vypisu a hledam deti tohoto prvku. Takhle se zanoruju, dokud najdu nejake deti. Kdyz nenajdu deti, tak zkusim dalsiho sourozence. Kdyz nenajdu sourozence, tak se o patro vynorim. Behem zanorovani si samozrejme pamatuji, jak jsem hluboko a sveho rodice, prarodice, ...

Pokud to sam nezvladnes, tak o vikendu napis.

A podle toho, co s tim chces delat dal. Tak jeste existuje moznost, prerovnat si to pole nejdriv do nejakeho stromu objektu. Kde kazdy prvek/objekt krome svych identifikacnich udaju bude mit jeste pole "children" a v nem objekty se svymi detmi. A dite by pripadnemelo take svoje children s vnoucaty. Tohle by se pak docela hezky prochazelo.
29.1.2018 16:05 Důchodce
Rozbalit Rozbalit vše Re: Jak doplnit odkazy k výpisu kategorií
Tak jsem nad tím strávil celý víkend ale nepodařilo se mi to :-(

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.