19. august 2013 - 01:01Der er
15 kommentarer og 1 løsning
Søger hjælp til et spørgsmål og efterfølgende opgave
Jeg er kommet i en lidt spændende situation, på et kedeligt grundlag.
Jeg spiller et computerspil sammen med en masse andre herlige mennesker. Vi har en hjemmeside som ikke er helt tidssvarende. Desværre mistede vi for kort tid siden vores Webmaster på tragisk vis til en dum sygdom.
Inden hans død havde jeg fået adgang til vores server og database, da han ville have min hjælp og lære mig op, til at kunne arbejde med siden. Nu står jeg så bare alene om det. Et spændende projekt som jeg er begyndt på. Jeg tager en ting ad gangen og er startet fra bunden.
Jeg har dog fået en haste sag, som jeg gerne vil have meget hjælp til at lave. Men jeg har først et spørgsmål.
I forbindelse med opgaven, har vi en tabel i databasen, der består af en masse data for hver spillers spil igennem flere sæsoner. Den ser ud nogenlunde som følgende: id - playerid - teamid - kills - assist - bombspla - bombsdef - flag - ...mm... - game - season
Men der er rigtigt mange rækker, der er ca 50.000. Vil det ikke være smartere at dele den op i flere tabeller, så der er en tabel for hver sæson?
OPGAVEN: Jeg skal lave en lidt avanceret point liste.
For at forstå point, fungere det på en lidt speciel måde: Man får point pr game og for forskellige ting, fx 4 point for 10 kills, 4 point for 25 assist og 5 point for en bombspla.
Det vil sige at hvis en spiller i game1 har 14 kills, får han 4 point (ingen decimaler). Hvis han i game2 har 24 kills får han 8 point og har dermed ialt 12 point lige ud, igen ingen decimaler.
Jeg vil nu gerne have lavet en liste for sæson nummer 10 hvor den med flest point står øverst:
SPILER - SÆSON10 spiller1 - 1. XX POINT spiller5 - 2. YY POINT spiller2 - 3. ZZ POINT
i en kolone ved siden af, vil jeg gerne have en liste med pointene og placeringen i sæson 9:
SPILLER - SÆSON10 - SÆSON9 spiller1 - 1. XX POINT - 3. WW POINT spiller5 - 2. YY POINT - 1. VV POINT spiller2 - 3. ZZ POINT - 5. UU POINT
Det vil jeg gerne have lavet for fx 5 runder. Hvis så spilleren kun har været med i 4 skal der bare være streger:
SPILLER - SÆSON10 - SÆSON9 - SÆSON8 spiller1 - 1. XX POINT - 3. WW POINT - 2. SS Point spiller5 - 2. YY POINT - 1. VV POINT - -------- spiller2 - 3. ZZ POINT - 5. UU POINT - 3. TT Point
Der ud over vil jeg gerne have farvet teksten grøn eller rød alt efter om de har gjort det bedre eller ringere end sæsonen før. Fx spiller1 skal have en grøn tekst i sæson10 og rød i sæson9 spiller2 skal have rød i sæson10 og grøn i sæson9. Hvis pladens er den samme, skal teksten bare være sort.
Jeg håber min beskrivelse er forståelig.
Hvilke problemer har jeg i forbindelse med at lave det her: 1. Grundet pointsystemet, skal pointene udregnes og ligges sammen game for game, og kan ikke bare ligges sammen for sæsonen. Det ved jeg ikke lige hvordan jeg kan gøre, og der er 24 games pr sæson.
2. Jeg kan godt lave en liste for sæson10, men jeg ved ikke hvordan jeg får sæson 9 i næste kolonne, og hvordan jeg får den til at finde ud af, hvad nummer spilleren var i den sæson.
3. Jeg er i forholdsvis stor tidsnød, så stik imod min egen politik, vil jeg spørger om der er en venlig sjæl, der kan lave en skabelon af sådan et script for mig.
På forhånd tak for jeres opmærksomhed, og forhåbentlig også jeres evt hjælp.
Nej, det ville ikke være smartere at oprette tabeller for hver sæson der er spillet. 50.000 entries er forsvindende lidt data og ved at dele det op, mister du hele fordelen ved at have tingene i en database.
Der er for lidt information om din tabel og indholdet i den til at vi kan hjælpe dig.
Hej Repox, tak for svaret. Jeg troede at det ville være nemmere med det opdelt, så der var mindre data scriptet skulle bladre igennem.
Tabellen hedder 'gamesdata'
Når en bruger har spillet et spil, bliver hans (playerid) lagt ind i tabellen og spillets id langt ind under cellen game.
Tabellen indholder har nok 20 ting der giver point. Jeg tænkte at for at lave lidt og lære lidt selv, så ham/hende der hjalp, bare lave 3 af dem (de 3 jeg gav som eksempel). Så kunne jeg selv lave resten, og muligvis lære lidt på den måde.
Det samme med antallet af sæsoner. Hvis der bare kan laves for de første 3 sæsoner (season 10, 9 og 8), så kan jeg selv lære lidt ved at skrive de sidste 2 sæsoner (7 og 6).
Playerid, game, season og alle de celler der giver point er af typen 'int'.
Er der andre oplysninger i gerne vil have, så skriver jeg dem gerne. :)
Der er ikke rigtig noget formål i at begrænse opgaven til x antal sæsoner da det - alt andet lige - bare er den samme stump kode der skal genbruges for hver sæson.
Der er også en konflikt i det du ønsker dig. Du vil gerne have spiller rangeret i en tabel sorteret efter score vertikalt og sorteret efter sæson horisontalt. Og så vil du også vise det baseret på antal kampe man har deltaget i - men her mangler altså en dimension i forhold til tabellens muligheder. Hvordan vil du have det med?
Det med at selv at skulle skrive det, er også mere for at selv skrive lidt, jeg lære bedst ved at lade det gå igennem mit hovedet, ned i hånden og ud på et papir/eller i et dokument på computeren. Så hvis jeg læser mig igennem koderne og selv skriver dem ned/af, har jeg bedre ved at forstå dem. Det er sådan set bare derfor.
Jeg havde ikke planer om at lave noget med hvor mange spil de har spillet. Bare den totale score i løbet af en sæson.
Repox, hvorfor er jeg gal med rangeringen. Det er meningen at den skal vise rangeringen for den sidste sæson (sæson 10), og derefter hvordan hans udvikling har været over de sidste 5 sæsoner.
Det vil jeg gerne have lavet for fx 5 runder. Hvis så spilleren kun har været med i 4 skal der bare være streger:
SPILLER - SÆSON10 - SÆSON9 - SÆSON8 spiller1 - 1. XX POINT - 3. WW POINT - 2. SS Point spiller5 - 2. YY POINT - 1. VV POINT - -------- spiller2 - 3. ZZ POINT - 5. UU POINT - 3. TT Point
Der er en del der ville have været en del lettere med en smule databasenormalisering, from for at samle alt i en tabel, men jeg har brygget noget sammen som giver en snært af en fornemmelse af hvad det er du skal ud i.
2 (tillæg). Jeg tænkte lidt på, om det var bedre at have de udregnet point langt ind i databasen. På den måde skal der ikke regnes så meget ud når de trækkes ud af databasen?
Ralf_l: Nej, din udregning tager ingen tid. Normalt er det, der "sinker" et website og gør det tungt at køre foreach-loops, for-loops og database-kald. Når det er helt galt er det disse tre i forening.
Selve udregningen bør ikke være et problem for dig. MEDMINDRE du pludseligt har 1.000 sæsoner, som du skal vise på én gang, men du bør jo gøre, så man vælger hvilken sæson, man vil se osv.. :)
Jeg er meget taknemlig for at i vil hjælpe, og det er ikke sidste gang jeg vil spørger om hjælp. Jeg sætter meget pris på at i giver jer tid og har lyst til at hjælpe os der er knap så gode.
Jeg er ked af, at jeg lukkede dette spørgsmål uden at tildele jer point. Jeg er blevet gjort bekendt med, at det var forkert af mig, at selv lukke dette spørgsmål. Derfor vil jeg gerne hvis i vil skrive, hvis i vil have pointene.
Grunden til lukningen var som sagt, at jeg ikke længede havde brug for svaret. Jeg fandt selv en primitiv måde at gøre det på. På samme tid var der gået 5 dage uden svar på mit hovedspørgsmål, og jeg mente derfor at det var gået lidt dødt.
Jeg er ked af hvis jeg har trådt på nogen i forbindelse med lukningen. Det har ikke været min mening.
Synes godt om
Ny brugerNybegynder
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.