Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 2.363 pregleda

Najnovija ↓

PHP i Mysql breadcrumb 21.02.2013. u 09:47 · pre 166 meseci #1
Pozdrav ljudi, imam dva pitanja za vas! :) imam tabelu u bazi koja je hijerarhijski nastrojena, i hteo bih da napravim breadcrumb na osnovu nje (ne na osnovu foldera i stranica u njima). Da prilikom odabira nekog proizvoda putanja do tog prioizvoda bude iscitana iz baze, npr proizvodi->sportska oprema->patike->reebok. Kako doci do toga?
Drugo pitanje je, hteo bih da klikom na link nekog dela iz putanje npr sportska oprema, da se na strani proizvodi.php iscitaju svi proizvodi koji su u toj hijerarhijskoj grani tabele. Znaci sve sto spada u sportsku opremu (moze biti i nekoliko grupa i podgrupa tipa patike, kopacke, dresevi i sl). Kako da se svi proizvodi tih grupa ispisu na toj strani? :) nadam se da sam dobro objasnio sta vas pitam. :)
Re: PHP i Mysql breadcrumb 21.02.2013. u 18:36 · pre 166 meseci #2
Za oba problema imas dva pristupa:
1. Rekurzija: Za breadcrumbs trazis parent-a u svakoj iteraciji, dok ne stignes do vrha. Za listu proizvoda u svakoj iteraciji citas novi podnivo, poput: SELECT * FROM table WHERE idParent IN (x, y, z). Ovde je mana veci broj sukcesivnih upita.
2. Nested set model: Obidjes drvo record-a, ubelezis Left i Right vrednost za svaki record, i trazenje svih predaka, odnosno sve dece dobijas u jednom upitu. Za breadcrumbs:
Code (sql):
SELECT * FROM TABLE WHERE Lft <= targetLeft AND Rgt >= targetRight
Za proizvode:
Code (sql):
SELECT * FROM TABLE WHERE Lft >= targetLeft AND Rgt <= targetRgt
Potpis
Pera električar 0637129710, BG, preporučujem.
Re: PHP i Mysql breadcrumb 25.02.2013. u 00:45 · pre 166 meseci #3
Malo mi je nerazumljiv ovaj drugi deo, moze li malo opsirnije objasnjenje?
Re: PHP i Mysql breadcrumb 25.02.2013. u 17:37 · pre 166 meseci #4
Recimo da imas drvo:
Code:
    A
  /   \
 B     C
/ \   / \
D  E  F  G

Krenes da ga obilazis i redom dodeljujes brojeve.
Code:
      1A14
   /         \
  2B7        8C13
 /   \      /     \
3D4  5E6  9F10  11G12

Dakle, u tabelu koja ima kolone idCvor, Lft, Rgt upises:
('A', 1, 14), ('B', 2, 7), ...

Ako trazis breadcrumb za cvor E, onda onaj prvi upit izgleda:
Code (sql):
SELECT * FROM TABLE WHERE Lft <= 5 AND Rgt >= 6 ORDER BY Lft

I dobijes:
A 1 14
B 2 7
E 5 6

Sve u jednom upitu. Losa strana ovog sistema je sto insert i update traju dugo, jer moras sve cvorove desno od ciljanog da azuriras (Lft = Lft + 2, Rgt = Rgt + 2), pa da na prazno mesto upises novu vrednost.

Ako i dalje nesto nije jasno, pitaj.
Potpis
Pera električar 0637129710, BG, preporučujem.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme