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 1082 korisnika na forumu :: 45 registrovanih, 6 sakrivenih i 1031 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: A.R.Chafee.Jr., babaroga, banebeograd, bobomicek, bojank, BraneS, bufanje, ccoogg123, DENIRO, Dorcolac, dragan_mig31, draganl, GAGI, gomago, hologram, hyla, jeen yuhs, kalens021, kolle.the.kid, Kubovac, kubura91, kybonacci, Mendonca, Mi lao shu, mikrimaus, naki011, nemkea71, Neutral-M, nikoladim, operniki, Panter, Parker, pein, procesor, Shinobi, SlaKoj, solic, Tas011, Tila Painen, virked, VJ, Wrangler, x9, Žoržo, 79693