Avatar billede steen_hansen Forsker
29. marts 2017 - 00:59 Der er 2 kommentarer og
1 løsning

Fordelingen i 2 puljer

Jeg har et antal og 2 puljer.
Den ene dag kan antallet være 18 stykker (eksempelvis).
Den næste dag kan antallet være 19 stykker (eksempelvis).

Det samlede antal skal fordeles ligeligt i to puljer, så godt det nu kan lade sig gøre:

1. Er der 18 stykker (lige antal) den ene dag, skal der være 9 stykker i hhv pulje 1 og 2. I en formular vælger man v.hj.a. radio buttons om man placerer sit valg i pulje 1 eller pulje 2.

2. Er der 19 stykker (ulige antal) den næste dag, skal der være 10 stykker pulje 1, og 9 stykker i pulje 2, eller omvendt. Bare det bliver fordelt bedst muligt, nemlig med 10 i den ene, og 9 i den anden.

Er der 18 stykker, må man maks fylde 9 i pulje 1. Herefter SKAL resten over i pulje 2.

Dvs er der lagt i 9 stykker i pulje 1, laves der en msgBox, hvor der står, at pulje 1 kan ikke vælges. Der skal fra nu af lægges i pulje 2.

Er der 19 stykker, må der maks lægges 10 i pulje 1 eller 2.
Ligger der 10 stykker i pulje 1, laves der en msgBox, hvor man får at vide, at resten skal lægges i pulje 2. Og omvendt.

Dvs. der inden hver UPDATE skal laves et tjek på, om stykkerne bliver ligeligt fordelt i hver af de to puljer, og at ingen af de to puljer aldrig overstiger det maksimalt tilladte antal.

Den samlede pulje (inden fordelingen) har status 1 i MySQL DB (eksempelvis)
Pulje 1 har status 2 i MySQL DB (eksempelvis)
Pulje 2 har status 3 i MySQL DB (eksempelvis)

For at finde ud af hvor meget jeg i det hele taget har at arbejde med, tæller jeg antallet op med en SELECT COUNT.

Hvordan laver jeg det løbende tjek, så antallet aldrig overstiger maks?

Hvis der er 18 stykker til rådighed i dag:
Der skal være 9 i pulje 1, når alt er fordelt
Der skal være 9 i pulje 2, når alt er fordelt

Hvis der er 19 stykker til rådighed i dag:
Der må være 10 i pulje 1. Hvis det er tilfældet, skal der være 9 i pulje 2
Der må være 10 i pulje 2. Hvis det er tilfældet, skal der være 9 i pulje 1

Hvordan laver jeg det?
Avatar billede steen_hansen Forsker
29. marts 2017 - 01:08 #1
PS: Jeg laver en Response.Redirect, hvor der kommer en msgBox frem, hvis brugerens valg vil lave en skæv fordeling.

I den msgBox vil der stå, at pulje 1 er fyldt op. Vælg pulje 2.

Her kan man kun trykke OK, og så er man tilbage til formularen på siden, hvor man er nødt til at vælge den korrekte pulje.

Dvs. jeg har også lavet en SELECT COUNT  på hhv pulje 1 og 2.
Avatar billede steen_hansen Forsker
29. marts 2017 - 01:42 #2
Jeg kom lige i tanke om, at det smarteste nok ville være at disable/deactivate radio Pulje x, hvis maksimum er nået i den ene eller den anden pulje. Jeg har ikke undersøgt, om det kan lade sig gøre:

<input type="radio" disabled> Pulje 1
<input type="radio"> Pulje 2
Avatar billede steen_hansen Forsker
31. marts 2017 - 19:24 #3
Jeg har sådan set løsningen. Men jeg mangler at finde ud af lige/ulige antal. Opretter et nyt spørgsmål.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester