Jump to content
php.lv forumi

izvelne, kur viena apaksizvelne atkartojas


Alnis

Recommended Posts

man ir sekojoša tabula:

 

1. tabula

id | nosaukums| parent_id
1 | alus | 0
2 | vīns | 0
3 | tervetes alus | 1
4 | bauskas alus | 1
5 | užavas alus | 1
6 | pilsenes alus | 1
7 | cesu alus | 1
8 | sarkanis vins | 2
9 | baltais vins | 2
10 | tara | 0
11 | stikla pudele | 10
12 | pvc | 10
13 | tetra paka | 10

 

tagad man vajag uztaisīt tādu izvēlni:

1. alus:
1.1. stikla pudele
1.1.1 tervetes alus
1.1.2 bauskas alus
1.1.3 užavas alus
1.1.4 pilsenes alus
1.1.5 cesu alus

1.2. pcvc udele
1.2.1 tervetes alus
1.2.2 bauskas alus
1.2.3 užavas alus
1.2.4 pilsenes alus
1.2.5 cesu alus

1.3. tetra paka
1.3.1 tervetes alus
1.3.2 bauskas alus
1.3.3 užavas alus
1.3.4 pilsenes alus
1.3.5 cesu alus

2. vins:
2.1. stikla pudele
2.1.1 sarkanis vins
2.1.2 baltais vins

2.2. pcv udele
2.2.1 sarkanis vins
2.2.2 baltais vins

2.3. tetra paka
2.3.1 sarkanis vins
2.3.2 baltais vins

 

kā to dabūt gatavu? skaidrs, ka vajag vēl vienu tabulu, kura varētu izskatīties šadi:

 

tabula_nakamais_limenis

id | id_sadala | nextid_parentid
1 | 1 | 10
2 | 1 | 1
3 | 2 | 10
4 | 2 | 2

tātad doma tāda, ka sadaļai Alus (id_sadala=1) pirmā nākamā izvēle ir 10, ka sir tara un pēc tam nākamā izvēle ir alus šķirnes, kur parent_id= 10. Tieši tāpat arī vīniem?

 

Varbūt ir kāds ergonomiskāks risinājums?

Link to comment
Share on other sites

Vispirms ieteiktu atdalīt tos pudeļu tipus stikla/pvc/tetra uz atsevišķu tabulu. Kā arī atdalīt dzērienu tipus atsevišķā tabulā (alus/vīns). Citādi sanāk, ka tu vienā tabulā glabā trīs dažādus datu veidus - kas neatbilst nekādam veselajam saprātam (normālformām) :)

 

veidi

id | nosaukums
1 | alus
2 | vīns

 

pudeles

id | nosaukums
1 | stikla pudele
2 | pvc
3 | tetra paka

 

dzērieni

id | nosaukums | veida_id
1 | tervetes | 1
2 | bauskas | 1
3 | užavas | 1
4 | pilsenes | 1
5 | cesu | 1
6 | sarkanis | 2
7 | baltais | 2

 

Un tad taisīt starptabulu starp tām pudelēm un veidiem:

 

pudelju_veidi

pudeles_id | veida_id
2 | 1
3 | 1
1 | 2
2 | 2
3 | 3

 

Un tad jau no šīm tabulām tev vajadzētu būt skaidrs kā uzrakstī kverijus - visparastākie joini.

Link to comment
Share on other sites

nu jā, atsevišķās tabulās protams ir smukāk salikt, bet lieta ko es isti nesaprotu, iespejams nekorekti pavaicaju, ir tada:

kā noteikt secību, kas nākamais rādīsies, piemēram, viens variants ir:

izvēles secība:

1. dzersiena veids

2. kad izvelets veids, talak prasa izveleties no taras veida

3. talak, piemeram prasa, ar kadas krasas korki, pvc un stikla pudelem tiek piedavatas dazadas krasas, bet tetra pakam korku izvele betiek piedacata, jo saja piemera ta nav paredzeta un parlecam;

4. talak kam ir korki, ir jaizvelas- vai atraujams vai atskruvejams- tetra pakas akal sito izlaiz;

5. talak izvelamies alkohola grādus, tatad apritē atgriežās tetra pakas

 

un otrs piemērs:

1. sakuma jaizvelas gradi;

2. tad izvelamies taras veidu

3. nakama izvele dzeriena veids;

4. izvelamies korka krasu;

5. korkis atraujams vai noskruvejams;

 

tresais piemers

1. izvelamies taru

2. tad izvelamies dzeriena veidu;

3. izvelamies grādus

4. korka veidu

5. atskruvejams vai ataujams;

 

 

kā es tikai ar datubāzes palīdzibu vienkārši varētu no esošajām tabulām ātri pamainit veinu vai otru veidu vai kādu n-to veidu. Proti, lai lietotajs pats varetu pamainit kura izvele bus pirma, kura otra kura tresa (ja pie kadas izveles nakama nav paredzeta, tad parlec uz nakamo)?

Link to comment
Share on other sites

×
×
  • Create New...