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: 3760
  • 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: 3760
  • 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 990 korisnika na forumu :: 37 registrovanih, 4 sakrivenih i 949 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: Aleksandar Tomić, babaroga, Bickoooo, Bloody, bojanM84, Bubimir, DeerHunter, Denaya, Doca, dolinalima, Dorcolac, draganl, esx66, Georgius, havoc995, ILGromovnikM2, kolle.the.kid, koom0001, kubura91, kybonacci, ladro, ljuba, maiden6657, micoboj, milenko crazy north, Milometer, novator, Pohovani_00, royst33, sap, SD izvidjac, Stoilkovic, Tila Painen, vathra, wizzardone, Zoca, |_MeD_|