Kako napraviti da bude neogranicen broj podkategorija u kate

Kako napraviti da bude neogranicen broj podkategorija u kate

offline
  • susok  Male
  • Novi MyCity građanin
  • Pridružio: 03 Sep 2009
  • Poruke: 23
  • Gde živiš: BH

Napisano: 26 Nov 2010 20:58

Pozdrav!

Pravim jedan sajt, i sad bi da napravim da mogu na sajtu dodavati kategorije, i kako da napravim da u kategoriju mogu dodavati podkategorije i u podkategorije podkategorije (da neograniceno mogu dodavati podkategorija u podkateoriju). npr.

=>Automobili
==>Mercedes
===>djelovi mercedesa
====>karburator mercedesa
=>Životinje
==>krava

Dopuna: 26 Nov 2010 21:03

evo ja sam probo vako

mysql tablica

CREATE TABLE `blog_kategorije` (   `id_blog_kategorije` int(11) NOT NULL AUTO_INCREMENT,   `ime_kategorije` varchar(50) NOT NULL,   `opis_kategorije` varchar(250) NOT NULL,   `kljucne_rijeci_kategorije` varchar(300) NOT NULL,   `kategorija_u_kategoriji` int(11) NOT NULL default '0',   `datum_stvaranja_kategorije` datetime NOT NULL,   PRIMARY KEY (`id_blog_kategorije`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci AUTO_INCREMENT=1;


a php ko mi je vako

<?php //Ovo spaja na mysql server i ispisuje grešku ako se ne spoji uspiješno. if (!$db=@mySQL_connect($server, $korisnicko_ime, $lozinka)) {    echo'Nismo se mogli spojiti na MySQL server'; } if (!mySQL_select_db($naziv_baze, $db)) {    echo'Greska pri odabiru baze!'; } function showMenu($data,$current=0,$padding=0){     $out = '';     if(isset($data['kategorije'][$current])){              $style = ($data['polja'][$current]['kategorija_u_kategoriji'] == 0) ? '' : 'style="padding-left:'.$padding.'px;"';                   $out .= '<option '.$style.'>'.$data['polja'][$current]['ime_kategorije'].'</option>';            foreach($data['kategorije'][$current] as $id){             if(isset($data['kategorije'][$id])){                      $out .= showMenu($data,$id,$padding+=10);                    }else{                 $out .= '<option value="'.$data['polja'][$id]['id_blog_kategorije'].'" style="padding-left: '.$padding.'px;">';                 $out .= $data['polja'][$id]['ime_kategorije'].'</option>';             }                    }      }     return $out; } $rez = mysql_query('select * from blog_kategorije') or die(mysql_error()); while($row = mysql_fetch_array($rez)){     $kat['polja'][$row['id_blog_kategorije']] = $row;     $kat['kategorije'][$row['kategorija_u_kategoriji']][] = $row['id_blog_kategorije']; } ?> <select> <option selected></option> <?php  echo showMenu($kat); ?> </select>

e ovo dobro radi al sad je problem sto nemogu da napravim da mi kategorije budu poredane npr. vako

=>Automobili
==>Mercedes
===>djelovi mercedesa
====>karburator mercedesa
=>Životinje
==>krava

već su poredane vako

Automobili
Mercedes
djelovi mercedesa
karburator mercedesa
Životinje
krava


Molio bih vas za pomoć

Hvala!

Dopuna: 27 Nov 2010 23:10

dajte nije valjda da niko nezna kako da ovo napravim,

moželi te mi vi reći koji drugi način da ovo napravim

da mogu neograniceno ubacivati kategorije u kategorije



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • lnenad  Male
  • Stručni saradnik
    Web
  • Nenad
  • Arhitetak
  • Pridružio: 16 Jan 2007
  • Poruke: 2860
  • Gde živiš: Bijeljina

Nemam vremena sad da pogledam citav kod. Uglavnom to sto ti hoces zahtijeva logiku i malo komplikovaniji unos podataka, ali ima vise rjesenja za ovaj problem pa mozda ti neko ponudi bolji, ja bih to ovako uradio.

Kad upisujes ime kategorije pored nje upises i broj, e sad taj broj bi predstavljao nivo te kategorije.

0
1
2
3

Razumijes, i ti to samo treba da tako pri obradi podataka prikazes, prostije ja mislim ne moze a dozvoljava ti da ides do n kategorija.

E sad, konkretan primjer za mercedesa, stavis za njega 01, mercedes ovo 02, mercedes ono 03. Itd, pa mozes i 2 broja da stavis 01 01, 01 02. Nadam se da si me shvatio.



offline
  • susok  Male
  • Novi MyCity građanin
  • Pridružio: 03 Sep 2009
  • Poruke: 23
  • Gde živiš: BH

pa ja sam stavio u bati

  `kategorija_u_kategoriji` int(11) NOT NULL default '0',

kategorije koje imaju 0 one su glavne

a one koje imaju u `kategorija_u_kategoriji` int(11) NOT NULL id od neke kategorije bice podkategorije te kategorije, nadam se da me svatate, e sad sam ja dobro napravio kod

<?php require('Postavke.php'); ?> <html>    <head>       <meta http-equiv="content-type" content="text/html; charset=<?php echo $kodiranje ?>" />    </head>    <body>    <?php function showMenu($data,$current=0,$padding=0) {     $out = '';         if(isset($data['kategorije'][$current]))    {              $style = ($data['polja'][$current]['kategorija_u_kategoriji'] == 0) ? '' : 'style="padding-left:'.$padding.'px;"';                   $out .= '<div '.$style.'>'.$data['polja'][$current]['ime_kategorije'].'</div>';                foreach($data['kategorije'][$current] as $id)       {             if(isset($data['kategorije'][$id]))          {                      $out .= showMenu($data,$id,$padding+=10);                    } else          {                 $out .= '<div style="padding-left:'.$padding.'px;">';                 $out .= $data['polja'][$id]['ime_kategorije'].'</div>';             }                   }             }         return $out;     } $rez = mysql_query('select * from blog_kategorije') or die(mysql_error()); while($row = mysql_fetch_array($rez)) {     $kat['polja'][$row['id_blog_kategorije']] = $row;     $kat['kategorije'][$row['kategorija_u_kategoriji']][] = $row['id_blog_kategorije']; } ?> <?php  echo showMenu($kat); ?>    </body> </html>

Al nemogu da poredam da mi stoje jedna ispod druge

vako

=>Automobili
==>Mercedes
===>dijelovi mercedesa

u mene stoji sve vako

=>Automobili
=>Mercedes
=>dijelovi mercedesa

neznam kako da napravim da mi za svaku podkategoriju se doda jedan znak =

offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3675
  • Gde živiš: 127.0.0.1

Ne moze to tako Smile tebi treba rekurzivna funkcija, odnosno funkcija koja ce da poziva samu sebe Wink

function children($id,$indent) {    $q = mysql_query("SELECT id_blog_kategorije,ime_kategorije                     FROM `blog_kategorije`                     WHERE `kategorija_u_kategoriji` = '" . $id . "'                     ORDER BY `ime_kategorije` ASC");    if (mysql_num_rows($q)) {       while ($d = mysql_fetch_assoc($q)) {          $indent .= ($id == 0) ? '' : "   ";          echo $indent . " => " . $d['ime_kategorije']          children($d['id_blog_kategorije'],$indent);          $indent = substr($indent,0,18);       }    } }

i onda, tamo gde zelis da se izlistaju kategorije, jednostavno je pozoves:

children('0','');

offline
  • susok  Male
  • Novi MyCity građanin
  • Pridružio: 03 Sep 2009
  • Poruke: 23
  • Gde živiš: BH

Hvala Rastafarii

skripta dobro radi, možeš li mi samo još reći kako da napravim da za svaku podkategoriju doda po jedan =

vako

=>Automobili
==>Mercedes
===>dijelovi od mercedesa
=>Životinje

offline
  • PHP developer
  • Pridružio: 22 Mar 2006
  • Poruke: 3675
  • Gde živiš: 127.0.0.1

Ovako:

function children($id,$indent) {    $q = mysql_query("SELECT id_blog_kategorije,ime_kategorije                     FROM `blog_kategorije`                     WHERE `kategorija_u_kategoriji` = '" . $id . "'                     ORDER BY `ime_kategorije` ASC");    if (mysql_num_rows($q)) {       while ($d = mysql_fetch_assoc($q)) {          $indent .= ($id == 0) ? '' : "=";          echo $indent . "=&gt; " . $d['ime_kategorije']          children($d['id_blog_kategorije'],$indent);          $indent = substr($indent,0,1);       }    } }

Verujem da mozes da se snadjes da ubacis linkove sam Smile

offline
  • susok  Male
  • Novi MyCity građanin
  • Pridružio: 03 Sep 2009
  • Poruke: 23
  • Gde živiš: BH

Kako sad da ubacim linkove

evo probo sam ovako al neradi
<?php     require('sajt/Postavke.php'); //Poziva Postavke.php.    function blog_kategorije($id,$indent,$a) {    $pribavlja=mysql_query("SELECT id_blog_kategorije, ime_kategorije FROM blog_kategorije WHERE kategorija_u_kategoriji='$id' ORDER BY datum_stvaranja_kategorije ASC");    if(mysql_num_rows($pribavlja))    {       while($redak=mysql_fetch_array($pribavlja))       {          $indent.=($id==0)?'':' _ ';                    echo $a;          blog_kategorije($redak['id_blog_kategorije'],$indent,$a);          $indent=substr($indent,0,1);       }    } } $t='<div>'.$indent.''.$redak['ime_kategorije'].'</div>'; blog_kategorije(0,'',$t); ?>

offline
  • Pridružio: 21 Apr 2007
  • Poruke: 98

Pogledaj ovo:
phpkode.com/scripts/item/unlimited-sub-categories/

offline
  • Blood  Male
  • Ugledni građanin
  • Pridružio: 26 Jul 2003
  • Poruke: 384
  • Gde živiš: Beograd

Evo ovde primera kako je najbolje konstruisati bazu:
http://dev.mysql.com/tech-resources/articles/hierarchical-data.html

Ko je trenutno na forumu
 

Ukupno su 870 korisnika na forumu :: 28 registrovanih, 5 sakrivenih i 837 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: AK - 230, ALBION101, amaterSRB, aramis s, Atomski čoban, Boris90, Ctrl x, GreenMan, havoc995, Hipnotizer, ikan, kalens021, krkalon, lukac, MarKhan, MB120mm, Mercury, Milos ZA, nikoladim, Reddot, sevenino, Snorks, sovanova95, Toni, VJ, vlvl, voja64, zexoni