Navigacija iz MySQL baze

1

Navigacija iz MySQL baze

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

Imam tabelu u bazi (ID, tip, podtip, naziv, info, cena, stanje) i hocu da odatle "vucem" navigaciju... tj da zavisi od tipa i podtipa... nesto ovako
[ + Tip 1 ]    [ - Podtip 1 ]    [ - Podtip 2 ]    [ - Podtip 3 ]    [ - Podtip 4 ]    [ - Podtip 5 ] [ + Tip 2 ]    [ - Podtip 1 ]    [ - Podtip 2 ]    [ - Podtip 3 ] [ + Tip 3 ]    [ - Podtip 1 ]    [ - Podtip 2 ]    [ - Podtip 3 ]    [ - Podtip 4 ]

Ali da se, cim dodam neki tip/podtip, navigacija automatski azurira... Kako to da izvedem?!?



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 01 Mar 2005
  • Poruke: 549
  • Gde živiš: Apatin

Izdeli to napravi 3 baze podataka:

-tip
id1,tip

-podtip
id2,podtip,id_tip (id_tip=id1)

-artikli
ID3, id_podtip(id_podtip=id2), naziv, info, cena, stanje

Onda meni napravi iz 2 query-a iz baze:

1)selektujes sve tipove
2)selektujes sve podtipove gde je id_tip=id1
i to ce ti se sve vrteti u dve while petlje



offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

Rađe bi se odlučio za dvije bazu! Uz relacioni odnos.

Ako planiraš neki veći projekat, onda ti je bolji ovaj slučaj, u suprotnom može proći i tvoj (puno gubiš na ponavljanje tip, podtip).

1. baza polja ID, IME, OPIS, IDP
2. baza polja ID, IDT, NAZIV, INFO, CENA, STANJE

U prvoj bazi idp predstavlja tom unosu podatak koji mu je parent unos(ako razumješ šta hoću reći) tako da se može napraviti odlična rijerarhija.
U drugoj bazi IDT predstavlja podatak kojem tip-u pripada!

Skripta za ovo je jednostavna, a za tvoj gornji slučaj skipta je:

$sql = "SELECT tip FROM baza ORDER BY tip;"; $result = mysql_query($sql, $link); if (!$q=mysql_query($sql)) { echo "Nastala je gresk۫a pri izvodenju upita!" . mysql_query(); die(); } if (mysql_num_rows($q)==0) { echo "Nema niti jednog unosa !"; } else { $br=0; while ($red=mysql_fetch_array($q)) {$i=0; $t=1; while($s[$i]){ if ($red["tip"]==$s[$i]){ $t=0;break;} $i++;} if($t) {$s[$br++]=$red["tip"]; echo "$red["tip"]";}}}


I unutar ove petlje, poslije ispisa istu jednu ovaku petlju odradiš za podtipove!

Dopuna: 30 Nov 2006 13:01

Nema nikakve potrebe za dvije baze tip i podtip. Dovoljna ti je jedna baza, ako bolje pogledaš ovaj moj primjer vidjećeš da ova jedna baza radi isto što i tvoje dvije i još je univerzalnija.

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

igor86 ::Nema nikakve potrebe za dvije baze tip i podtip. Dovoljna ti je jedna baza, ako bolje pogledaš ovaj moj primjer vidjećeš da ova jedna baza radi isto što i tvoje dvije i još je univerzalnija.

Ja sam rekao da imam jednu bazu, a ne 2, 3 ili koliko vec... 2 baze si ti spomenuo Smile

Hm... probao sam nesto sam, sa jednom tabelom, ali ne mogu da testiram jer mi je baza prazna... A nisam bas siguran da radi...

Elem, imam ovakvu bazu:$artikl = "CREATE TABLE 'artikl_data' (      'id' int(10) NOT NULL auto_increment,      'tip' varchar(255) NOT NULL defalut='nista',      'podtip' varchar(255) NOT NULL defalut='nista',      'naziv' varchar(255) NOT NULL default 'nista',      'info' varchar(255) NOT NULL default 'nema',      'cena' float(10) NOT NULL default '0',      'stanje' int(10) NOT NULL default '0',      PRIMARY KEY  ('id'))";

i ovakav kod za njeno "listanje":$tipovi = mysql_query("SELECT DISTINCT tip FROM artikl_data ORDER BY tip"); foreach($tipovi as $tip) {    echo $tip;    $podtipovi = mysql_query("SELECT DISTINCT podtip FROM artikl_data WHERE tip=$tip ORDER BY podtip");    foreach($podtipovi as $tip) {       echo $podtip;       } }

Ja licno sumnjam da ovo radi, a kao sto rekoh ne mogu da testiram... Gresim li u ovom kodu i gde?

offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

Inače ovaj kod što sam ti poslao je za tvoj slučaj i izveden je na mnogo primitivan način, ali odlično radi!

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

igor86 ::Inače ovaj kod što sam ti poslao je za tvoj slučaj i izveden je na mnogo primitivan način, ali odlično radi!

Inace ja mislim da si ti od svih mojih postova na ovu temu procitao 2 recenice max. Mr. Green

Ajde pogledaj onaj drugi kod (iz mog prethodnog posta) i reci mi da li imam neku gresku i gde Zagrljaj

offline
  • Pridružio: 01 Mar 2005
  • Poruke: 549
  • Gde živiš: Apatin

OK ako radi ali recimo ajmo jedan primer:
Uneo si 10 istih tip-ova (na primer graficke kartice)
i skontas da si pogresio slovo ili zelis da pise tu Video Adapteri
Moraces ici od unosa do usnosa i ispravljati to...

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

Razmisljao sam i o tome Smile

Kod upisa novog artikla (u admin delu) stavio sam select box gde mi izlista sve tipove, i opciju novi tip, pa ako tip koji hocu ne postoji, pojavi se input za unos novog tipa, kao i opciju izmeni tip (opet select i input), pa izmenu tipa radi PHP Smile

Prilikom projektovanja baze imam u vidu 3 pravila:

1) Pazljivo.
2) Pazljivo.
3) Pazljivo.

offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

@Rastafarii ja sam ti pokušao pomoći.
Citat:
Inace ja mislim da si ti od svih mojih postova na ovu temu procitao 2 recenice max.


Iz čega si to zaključio!

Kod sam ti poslao iz projekta koji sam radio, ideš u pogrešnom smjeru, ali nema veze. Nema više mojih komentara!

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

@igor86: Zakljucio sam iz prostog citanja teme.

Rastafarii ::Imam tabelu u bazi (ID, tip, podtip, naziv, info, cena, stanje)

igor86 ::Rađe bi se odlučio za dvije bazu! Uz relacioni odnos.

igor86 ::ako bolje pogledaš ovaj moj primjer vidjećeš da ova jedna baza radi isto što i tvoje dvije i još je univerzalnija.

Rastafarii ::Hm... probao sam nesto sam, sa jednom tabelom, ali ne mogu da testiram jer mi je baza prazna... A nisam bas siguran da radi...

Elem, imam ovakvu bazu: (Kod) i ovakav kod za njeno "listanje": (Kod)
Ja licno sumnjam da ovo radi, a kao sto rekoh ne mogu da testiram... Gresim li u ovom kodu i gde?


igor86 ::Inače ovaj kod što sam ti poslao je za tvoj slučaj i izveden je na mnogo primitivan način, ali odlično radi!

Da ne bude zabune, citirao sam obojicu.

Zasto idem u pogresnom smeru?

Ko je trenutno na forumu
 

Ukupno su 1886 korisnika na forumu :: 74 registrovanih, 3 sakrivenih i 1809 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 15694 - dana 01 Feb 2026 12:23

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: amaterSRB, Automaticar, Bahuss, BB, Belisarius, BORUTUS, Burovnyak, BWG, cifra, Cirkon, Coabelgrade, Dejan_vw, Denaya, Despot1, djonsule, Drugsparrow, Electron, Fabius, Fliper, g_g, gasazem, Georgius, Goldman, HrcAk47, istina, Ivan Campo, jalos, Jomini, K a s p e r, king011, king111, Koce, Konda, krkalon, Kubovac, kybonacci, leopard83, Levi, littlebunny, LjubisaR, m94j, MarijaC84, mercedesamg, Miletić Zoran, milimoj, Milos1389, miodrag, Mldo, naval brigadier, nemkea71, nuke92, OldKresoje, opt1, Petarvu, renvoi, rokokoko, ruso, sales, sap, Sarmat, sasics, Sharpshooter, simicnenadbg, stalja, tmanda323, tvlada, VanZan, vaso1, Vatreni Zmaj, Viktor Vuk, voja64, Volkcho, vuksa72, Đurđevdan