Avatar billede mkjaer Nybegynder
11. februar 2004 - 10:27 Der er 7 kommentarer og
1 løsning

Udregn perfekt fremvisning i <table>

Hejsa,

Jeg har følgende udfordring: Jeg har 2 MySQL-tabeller, én som indeholde en række data og én som indeholder de kategorier data er ordnet efter.

Jeg skal så generere et html-output, som fylder disse data ud i en tabel(<table>) med 3 kolonner. Kategorierne skal placeres så der tages hensyn til hvor mange data der er i hver af dem - så alle 3 kolonner har nogenlunde lige mange data.

Har du en god ide til den opgave?

Hilsen
Martin
Avatar billede codebase Praktikant
11. februar 2004 - 10:34 #1
3 kolonner? <td>1</td><td>2</td><td>3</td> ??
Avatar billede tefcke Nybegynder
11. februar 2004 - 10:40 #2
Ja >> Men så har du jo ikke taget højde for om alle 3 kolonner er lige store!
Avatar billede erikjacobsen Ekspert
11. februar 2004 - 10:42 #3
Hvis det kun er en idé: put alle data i et array i PHP, og brug det til at regne
på opdelingsstederne.
Avatar billede tefcke Nybegynder
11. februar 2004 - 10:47 #4
Jeg havde faktisk samme problem da jeg lavede et link system med tilhørende kategorier. Dog skulle jeg kun bruge 2 kolonner. Man kan selvfølig vælge at putte det skiftesvis i hver kolonne, men som sagt, så risikerer du at højden på kolonnerne kommer til at varierer kraftigt. Jeg løste mit problem ved at indse at rent herustics vil de ikke ændre det store om man putter dem skiftevis, frem for at beregne det (havde kun 2 kolonner, så mit problem var en del enkler).

Jeg ville nok ikke gøre som jeg gjorde (og som du sikkert selv har tænkt på at gøre), da sandsynlighedden for at 3 kolonner er nogenlunde lige store, ikke er lige så sandsynlig som at 2 kolonner er lige store.

Jeg ville hvis nok først hive alt den data jeg skulle bruge ud, og sorterer det i 3 arrays, så outputtet (altså dataen i de 3 kolonner) ville blive lige store.

Skriv hvis du skal have en nærmere forklaring
Avatar billede mkjaer Nybegynder
11. februar 2004 - 10:52 #5
Hejsa,

Jeg vil gerne ha' en nærmere forklaring. Men husk, at kategori-navnet skal stå først, og så tilhørende data efterfølgende:

Kategori 1

Data 1
Data 2
Data 3

Kategori 2

Data 4
Data 5

osv... og så i 2 tabeller.
Avatar billede mkjaer Nybegynder
11. februar 2004 - 10:52 #6
...3 tabeller, naturligvis :-)
Avatar billede tefcke Nybegynder
11. februar 2004 - 21:26 #7
Det er faktisk ikke et trivielt problem du har rodet dig ud i der.
Først tager vi lige nogen overvejelser:
Først henter du alt dataen du skal bruge ud af databasen, og lægger det over i et array. Dernæst kan du ved at tælle antallet af elementer i arrayet finde ud af hvor mange elementer som skal puttes i hver kolonne for at kolonnerne bliver lige store (eriks opdelingssted).
Spørgsmålet er nu, hvordan sørger vi for at alle kolonner bliver lige store?
Er det lige meget hvor kategorier der er i hver kolonne? eller skal der være nogenlunde lige mange?

Det nemmeste her, er at tage den største kategori (talt ud fra antallet af Data elementer i kategorien) og putte den i kolonne 1. Fortsæt med at tage den største kategori ud og put i kolonne 1, indtil at du vil gå over dit opdelingssted. Se om der findes en kategori med den størrelse som passer lige til opdelingsstedet, ellers brug den største som er mindre end det du mangler for at nå opdelingsstedet.

Gør det samme for kategori 2 og 3.

Det er klart der kan opstå nogen kedelige tilfælde hvis kategoriernes størrelse er fordelt uheldigt. Hvis du vil være på den sikre side, skal du nok ud i en algoritme som tjekker samtlige kombinations mulighedder og vælger den bedste. Men det er nok overkill for at få det formateret flot.
Avatar billede mkjaer Nybegynder
16. juni 2004 - 14:00 #8
jeg lukker den her!
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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