Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako da izvrsim hijerarskijsko (tree-like) izlistavanje iz baze?

[es] :: PHP :: Kako da izvrsim hijerarskijsko (tree-like) izlistavanje iz baze?

[ Pregleda: 3104 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

define

Član broj: 41934
Poruke: 288
89.216.251.*



Profil

icon Kako da izvrsim hijerarskijsko (tree-like) izlistavanje iz baze?10.06.2007. u 17:38 - pre 205 meseci
Pomozite kako da odradim sledece

imam tabelu sa id,ime,parent

id |ime |parent
1 nesto 0
2 nesto2 0
3 podnesto 1
4 podpodnesto 3
5 podnesto2 2


i treba da izgleda ovako

nesto
-podnesto
--podpodnesto
nesto2
-podnesto2

Ovo znam da odradim sa nekoliko petlji, ali to mi nije bas ono sto hocu. Hocu da imam resenje po kome nemam ogranicenje koliko cu u dubinu da idem.
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.paws.umds.ac.uk.

Sajt: dejan.lekic.org


+2 Profil

icon Re: Kako da izvrsim hijerarskijsko (tree-like) izlistavanje iz baze?10.06.2007. u 19:15 - pre 205 meseci
define, neki DB sistemi tipa ORACLE daju mogucnost da ovo odradis jako jednostavno sa CONNECT BY klauzulom. Ako koristis MySQL, onda savetujem da procitas ovaj clanak: http://dev.mysql.com/tech-reso...rticles/hierarchical-data.html . MySQL implementacija "CONNECT BY" je planirana, i mislim da je vec negde u nekoj development grani.
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

mb_sa

Član broj: 50529
Poruke: 172
*.PPPoE-1080.sa.bih.net.ba.



Profil

icon Re: Kako da izvrsim hijerarskijsko (tree-like) izlistavanje iz baze?10.06.2007. u 21:32 - pre 205 meseci
Isto koristan materijal.

http://www.sitepoint.com/article/hierarchical-data-database

a evo i klasa: http://www.phpclasses.org/browse/package/2742.html
 
Odgovor na temu

hatebreeder
Sinisa Bobic
Belgrade

Član broj: 48145
Poruke: 192
*.cpe.vektor.net.

Jabber: sinisabobic@gmail.com
ICQ: 339407553
Sajt: www.sinisabobic.com


Profil

icon Re: Kako da izvrsim hijerarskijsko (tree-like) izlistavanje iz baze?10.06.2007. u 22:06 - pre 205 meseci
Obelezavaj ih jednostavno sa
1
1.1
1.2
1.2.1
2
3
itd i olaksaces sebi posao posle samo sortiras rastuci i ispisujes ih jednog po jednog a dubinu gledas tako sto vidis kolko je dugacko polje...
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
*.adsl.beotel.net.

Sajt: norway.dakipro.com


+190 Profil

icon Re: Kako da izvrsim hijerarskijsko (tree-like) izlistavanje iz baze?10.06.2007. u 22:21 - pre 205 meseci
Uf Sinisa, bas nisam ovo ocekivao od tebe
Najlakse i najgore resenje... Obicnom rekurzijom i eventualno jos jednom funkcijom se ovo veoma lako sortira. Cak je ovo jedan od ulaznih testova u nekim firmama koje se bave programiranjem, tako da, pogledaj rekurzijom da ih izvadis. Verujem da ima cak i na php manualu nekih smernica oko ovakvih stvari a i prethodni linkovi su dobri.
Stoji da je najlakse (na krace staze) 1.2, 1.2.1, ali ces jednom trebati da im promenis redosled i poziciju, pa ces onda uvideti koliko u stvari i nije bilo lakse... Jednom samo dok resis ovakvu situaciju, i posle je samo copy-paste i prepravljas.
 
Odgovor na temu

define

Član broj: 41934
Poruke: 288
77.46.255.*



Profil

icon Re: Kako da izvrsim hijerarskijsko (tree-like) izlistavanje iz baze?10.06.2007. u 23:08 - pre 205 meseci
Evo bas mi ovo treba
http://www.phpclasses.org/brow...file/11937/name/class_shot.jpg
Fino je ovo sto imam gotovu klasu ali bih ja voleo da vidim kako funkcionise ovo da se uredi sa funkcijama i rekurzijama kao sto ste pomenuli.
 
Odgovor na temu

brainbuger

Član broj: 9647
Poruke: 440
80.93.236.*



+52 Profil

icon Re: Kako da izvrsim hijerarskijsko (tree-like) izlistavanje iz baze?11.06.2007. u 09:53 - pre 205 meseci
Ovo bi bio neki potpuno jednostavan primer koji je nezavisan od dubine nivoa na kojem su podredjeni. Redovi prvog nivoa (top) moraju imati parent=0. Prvom funkcijom zgrabis sve u visestruki niz a zatim drugom funkcijom (rekurzivnom) prolazis kroz taj niz i prikazujes podatke iz njega onako kako ti je potrebno. Nadam se da ce ti pomoci da dodjes do jos neke ideje.

Struktura podataka u tabeli :
Code:
+---+------------+--------+
| id   ime           parent  
+---+------------+--------+
| 1   Zivotinje       0         
| 2   Biljke          0         
| 3   Sisari          1         
| 4   Ptice           1         
| 5   Ljudi           3         
| 6   Kitovi          3         
+---+------------+--------+


PHP kod:
Code:

class stabloX
{
    var $stablo;    

    //funkcija koja kreira visestruki niz od podataka iz baze
    function getArray()
    {
        $temp = array();
        $query = mysql_query("select * from stavke order by id");        

        while($row = mysql_fetch_array($query))
        {
            $temp[$row['parent']][] = $row;
        }
        $this->stablo = $temp;
    }

    //rekurzivna funk koja kreira izgled stabla    
    function kreiraj($lid=0, $indent=0)
    {   
        
        foreach($this->stablo[$lid] as $l)
        {
            $id = $l['id'];
            $ime = $l['ime'];
            $parent = $l['parent'];               

            //cisto zbog prikazivajna kako bi podredjeni
            // bili malo uvuceni u odnosu na nadredjene
            $razmak = str_pad("", $indent*36, " "); 
                
            $html .= "<b>".$razmak.$id.":".$ime."(nadredjeni :{$parent})</b><BR>";

            if(array_key_exists($l['id'], $this->stablo))
            {
                $html .= $this->kreiraj($l['id'], $indent+1); //rekurzija
            }
        }
        return $html;
    }
    
}//kraj klase
    
    
$s = new stabloX;
$s->getArray();
print $s->kreiraj();    

Rezultat:
Code:
1:Zivotinje(nadredjeni :0)
      3:Sisari(nadredjeni :1)
            5:Ljudi(nadredjeni :3)
            6:Kitovi(nadredjeni :3)
      4:Ptice(nadredjeni :1)
2:Biljke(nadredjeni :0)

edit: dodao sam i primer sa podacima radi lakseg snalazenja

[Ovu poruku je menjao brainbuger dana 11.06.2007. u 17:28 GMT+1]
 
Odgovor na temu

hatebreeder
Sinisa Bobic
Belgrade

Član broj: 48145
Poruke: 192
*.cpe.vektor.net.

Jabber: sinisabobic@gmail.com
ICQ: 339407553
Sajt: www.sinisabobic.com


Profil

icon Re: Kako da izvrsim hijerarskijsko (tree-like) izlistavanje iz baze?11.06.2007. u 12:11 - pre 205 meseci
Citat:
dakipro: Uf Sinisa, bas nisam ovo ocekivao od tebe :)
Najlakse i najgore resenje... Obicnom rekurzijom i eventualno jos jednom funkcijom se ovo veoma lako sortira. Cak je ovo jedan od ulaznih testova u nekim firmama koje se bave programiranjem, tako da, pogledaj rekurzijom da ih izvadis. Verujem da ima cak i na php manualu nekih smernica oko ovakvih stvari a i prethodni linkovi su dobri.
Stoji da je najlakse (na krace staze) 1.2, 1.2.1, ali ces jednom trebati da im promenis redosled i poziciju, pa ces onda uvideti koliko u stvari i nije bilo lakse... Jednom samo dok resis ovakvu situaciju, i posle je samo copy-paste i prepravljas.


Za pocetak ja sam ovo stavio kao NAJLAKSE moguce resenje mada veruj mi nije toliko bas tesko manipulisati sa tim. Neki projekat koji sam skoro pepravljao pisan je na ovaj nacin i pravo da kazem jako malo vremena je utroseno sa malo koda jer kada sortiras dobijas nesto nalik na

1
1.1
1.1.1
1.1.2
...
1.2
...
1.2.13
1.2.14
..
2
..
3
itd

e sad kada dodajes novi unos u drvo biras gde se unosi po principu prvi nivo =1 drugi nivo = 2 i onda dobijes 1.2.? e sad jedino kao sto si rekao problemi kada nesto ubacujes izmedju necega ali to jedna while petlja odradi bez problema tako da ne vidim ovo kao toliko nesavrseno resenje pogotovo za manje projekte pa ako neko nece da se muci neka koristi ovo.

Po mojoj proceni maksimalno sat-dva treba da se utrosi da sve radi na kraju kako treba, sve sa pravljenjem formi za sredjivanje hijerarhije...
 
Odgovor na temu

Zmaj
Predrag Krstić
web developer
Zrenjanin

Član broj: 1035
Poruke: 382

Sajt: https://pkrstic.wordpress..


+4 Profil

icon Re: Kako da izvrsim hijerarskijsko (tree-like) izlistavanje iz baze?11.06.2007. u 17:21 - pre 205 meseci
Za prikaz i kreiranje "u letu" pogledaj dtree http://www.destroydrop.com/javascripts/tree/

Takodje pogledaj i http://www.dhtmlgoodies.com/index.html?page=folderTree imas primere stabla i njihovog povezivanja sa bazom (manipulacija cvorovima) putem ajax-a, ali ovaj nacin ocekuje podatke u html u ul-li strukturi koja bi predstavljala stablo.

Da bi izvukao podatke iz baze pogledaj i kako da ih organizujes u bazi idi na http://www.brianhaveri.com/?id=42

Ovo ti je dosta da bi sklopio sliku o tome sta ti treba, ostalo je na tebi....
 
Odgovor na temu

define

Član broj: 41934
Poruke: 288
*.sbb.co.yu.



Profil

icon Re: Kako da izvrsim hijerarskijsko (tree-like) izlistavanje iz baze?12.06.2007. u 12:23 - pre 205 meseci
Bas vam hvala svima, svidja mi se resenje koje je uradio brainbuger.

Do sada nisam koristio klase u php-u, ali eto mozda je vreme da pocnem polako.
Nisam pisao rekurzivne funkcije pa cu i to malo da potrazim. Hvala opet na pomoci.
 
Odgovor na temu

[es] :: PHP :: Kako da izvrsim hijerarskijsko (tree-like) izlistavanje iz baze?

[ Pregleda: 3104 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.