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

Kategorije i podkategorije unutar njih!

[es] :: PHP :: Kategorije i podkategorije unutar njih!

[ Pregleda: 2205 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

_CaRtMan_

Član broj: 126731
Poruke: 305
*.PPPoE-6838.sa.bih.net.ba.



+1 Profil

icon Kategorije i podkategorije unutar njih!06.12.2008. u 19:48 - pre 186 meseci
Imam dvije tabele.

tpkategorija

| idkategorija | nazivkategorija

tppodkategorija

| idpodkategorija | idkategorija | nazivpodkategorija

Code:

$kategorija = $this->query("select * from tpkategorija");
    while($a=mysql_fetch_array($kategorija)){
        $kat[] = $a;
            
        
    }
    
    $this->assign('kategorija', $kat);


I na ovaj kod:

Code:

<ul>
{foreach from=$kategorija item=w}
    <li>{$w.nazivkategorija} - {$w.idkategorija}</li>
    
{/foreach}
</ul>


lijepo ispise kategorije, ali hocu i podkategorije unutar kategorije. Ali nemam pojma kako, prije nekad sam ovo uspio, ali ne ide me sad. Moze pomoc?

 
Odgovor na temu

Mister_rap
SE at Viacom

Član broj: 8822
Poruke: 2540
93.86.139.*

Jabber: mister_rap@jabber.com


+21 Profil

icon Re: Kategorije i podkategorije unutar njih!06.12.2008. u 20:03 - pre 186 meseci
Za svaku stavku iz kategorija posalji upit tabeli podkategorija u kojme selektujes samo one redove ciji je id nadkategoirje=id-u trenutne stavke...
 
Odgovor na temu

_CaRtMan_

Član broj: 126731
Poruke: 305
*.PPPoE-6838.sa.bih.net.ba.



+1 Profil

icon Re: Kategorije i podkategorije unutar njih!06.12.2008. u 20:08 - pre 186 meseci
Znam ja to sve "teoretski", ali ne uspijevam da to uradim prakticno :)

Code:

    $kategorija = $this->query("select * from tpkategorija");
    while($a=mysql_fetch_array($kategorija)){
        $kat[] = $a;
            
    $podkategorija = $this->query("select * from tppodkategorija where idkategorija = $a[idkategorija]");
    while($a=mysql_fetch_array($podkategorija)){
        $podkat[] = $a;
            
        
    }
        
    }
    $this->assign('kategorija', $kat);
    $this->assign('podkategorija', $podkat);



Code:
<ul>
{foreach from=$kategorija item=w}
    <li>{$w.nazivkategorija} - {$w.idkategorija}</li>
        <ul>
        {foreach from=$podkategorija item=w}
            <li>{$w.nazivpodkategorija}</li>
        {/foreach}
        </ul>
{/foreach}
</ul>



Probao sam tako, ali u svaku kategoriju ucita sve podkategorije. :)
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-a-1.sezampro.yu.



+33 Profil

icon Re: Kategorije i podkategorije unutar njih!06.12.2008. u 22:09 - pre 186 meseci
Mozhe to i kroz jedan upit, npr. ovaj:
Code:

SELECT tpk.*, tpp.* FROM tpkategorija tpk, tppodkategorija tpp WHERE tpk.idkategorija  = tpp.idkategorija

Posle pri ispisivanju treba da upotrebish chuvene markere... :) Prvo deklarishesh markere iznad te petlje za ispisivanje, npr. $marker = 0; $tekuci_id_kat = 0;, a onda u ispisivanju pitash:
Code:

if ($marker == 0 || $tekuci_id_kat != $red['idkategorije']){ //ako nije ispisana kategorija ili ako je u petlji "dosla" sledeca kategorija, ispisi je, ali samo jednom
   echo $red['nazivkategorije'];
   $marker = 1;
   $tekuci_id_kat = $red['idkategorije'];
}
//a pritom uvek ispsujesh podkategorije, ovako:
echo $red['nazivpodkategorije'];

Poshto cesh ti iz upita dobiti npr. ovako neshto:
1 PrvaKategorija 1 1 podKategorija1
1 PrvaKategorija 2 1 podKategorija2
2 DrugaKategorija 3 2 podKategorija3
2 DrugaKategorija 4 2 podKategorija4
2 DrugaKategorija 5 2 podKategorija5
3 DrugaKategorija 6 3 podKategorija6
3 DrugaKategorija 7 3 podKategorija7,
tebi je cilj da ispisujesh naziv kategorije samo jednom, i to kada ti pri fetch-ovanju dodje sledeca kategorija, odnosno, kad "primetish" da je "doshao" novi id kategorije. Za to sluzhi onaj marker $tekuci_id_kat.
 
Odgovor na temu

[es] :: PHP :: Kategorije i podkategorije unutar njih!

[ Pregleda: 2205 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

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