Der er egenligt to problemer i dit spørgsmål, først hvordan dataerne i mysql udtrækkes fra tabellerne og derefter hvordan dataerne præsenteres i php. Det andet problem, hvordan dataerne præsenteres efter at de er trukket ud, vil sikkert ikke være så svært, men jeg kan ikke ud fra dine oplysninger se, hvordan det første problem kan løses, hvordan du kan trække dataerne ud fra tabellerne. Du vil, så vidt jeg forstår, udtrække hvilke 'nicks' der er registreret på hvilke tidspunkter og hvor mange points disse nicks fik. Men hvordan kender du tidspunktet for en nick? Jeg kan ikke se noget link mellem de to tabeller.
Hvis du vil anvende to tabeller, en med dato og tid og en med nicks og points, så kan du i ludom_point tilføje en ekstra kolonne 'tidspunkt' som referer til ludom_dato tabellen, såsom:
ludom_dato id dato tid 1 2013-04-01 12:30 2 2013-04-01 13:30 ...
ludom_plads id tidspunkt plads nick point 1 1 plads1 test1 8 2 1 plads2 test2 6 3 1 plads3 test3 4 4 2 plads4 test3 8 5 2 plads5 test1 6 6 2 plads6 test2 4 ...
Men hvad er formålet med at have en separat tabel for tidspunktet? Og hvad er formålet med at have en kolonne for dato og en anden kolonne for tid i stedet for at anvende datatypen DATETIME? Med mindre der er specielle forhold du ikke har fortalt om, så kunne det måske være simpler med en enkel tabel såsom denne:
ludom id datotid plads nick point 1 2013-04-01 12:30 plads1 test1 8 2 2013-04-01 12:30 plads2 test2 6 ......
Fortæl hvordan du ser på ovenstående og om du vil være i stand til og interested i at tilpasse din tabelstruktur, så de nødvendige data kan udtrækkes. Derefter kan vi kikke på hvordan du kan præsentere de udtrukne data i php.
..... eller ligger landet således, at der på forskellige tidspunkter fyres en masse nicks af (du viser tre nicks på hvert tidspunkt, måske er der 25)? I så fald kan jeg se formålet med at have tidspunktet i en separat tabel, så hvert tidspunkt kun skal skrives en enkelt gang og ikke en gang for hver nick. Men så er du som sagt nødt til i ludom_point tabellen at have en kolonne der refererer til tidspunktet i ludom_dato tabellen, og så dunne du overveje i ludom_dato tabellen at have dato og tid i en enkelt kolonne og bruge datatypen DATETIME.
AOT1977, jeg står og skal afsted, jeg er nok tilbage i morgen tidlig. I mellemtiden nogle spørgsmål med hensyn til tabelstrukturen og dine data. Fra det du beskriver i #4 kunne det se ud til at en turnering fandt sted 1 april 2013, og der var to runder, en klokken 1230 og en klokken 1330. I hver turneringsrunde var der 8 'tests' der hver fik points. Det du så vil have vist på din første php side forstår jeg godt. Men på den anden php side, vil du have vist den højeste score en bestemt test nogen sinde har opnået, eller vil du vise den højeste score en test har opnået i en bestemt turnering? Hvis du vil vise de højeste scores i en bestemt turnering, så er du også nødt til i dine tabeller at definere en turnering. Det kunne lede til brug af to, eller endda tre, tabeller, såsom:
turnering id dato plads 1 2013-4-1 København 2 2013-4-13 Odense ..
runde id turnering tid 1 1 12:30 2 1 13:30 3 2 10:30 ..
(Altså turnering nummer 1 har to runder, runde 1 klokken 12:30 og runde 2 klokken 13:30. Turnering nummer 2 har en enkelt runde, runde nummer 3 10:30.)
2 personers spil: 1. pladsen: 8 point 2. pladsen: 6 point 3. pladsen: 4 point 4. pladsen: 2 point
3 personers spil: 1. pladsen: 8 point 2. pladserne: 6 point 3. pladserne: 2 point
4 personers spil: 1. pladsen/rne: 8 point 2. pladsen/rne: 6 point 3. pladserne: 4 point
Makkerspil: 1. pladserne: 8 point 2. pladserne: 6 point 3. pladserne: 4 point
Lad os lege at vi har 16 deltager med i en turnering hvor de spiller 1 mod 1 (2 personers spil) taber man en kamp er man ude af turneringen, dvs der er 8 der ingen point få og 8 der få point, på siden hvor jeg indtaster resultatet skriver jeg: Hvornår turnering startet eks. 2013-04-24 12:30 Så resultatet for turneringen: Nick plads point Lis 1 8 Max 2 6 Bo 3 4 Ole 3 4 Maria 4 2 Jens 4 2 Pia 4 2 Jette 4 2
Lad os lege at vi har 16 deltager med i anden turnering hvor de spiller 2 mod 2 (makkerspil) taber man en kamp er man ude af turneringen, dvs der er 8 der ingen point få og 8 der få point, på siden hvor jeg indtaster resultatet skriver jeg: Hvornår turnering startet eks. 2013-04-24 13:30 Så resultatet for turneringen: Nick plads point Lis 1 8 Max 1 8 Bo 2 6 Ole 2 6 Maria 3 4 Jens 3 4 Pia 3 4 Jette 3 4
De eneste data jeg få fra en turnerig er:
Dato Tid Nicks på dem der skal havde point Deres plads Deres point
Håber det gav en idé og hjalp, hvis det er kan vi også tage en snak på skype hvis det er.
Det du ikke har forklaret og som jeg ikke har forstået er dette.
Du siger i #4:
En anden side men en highscore som gerne skulle se sådan ud:
1 test1 10 2 test3 8 test5 8 4 test4 6
Vil du vide hvor mange points medlemmer har fået ialt i al den tid de har spillet? Således, at efter de to turneringer du nævner ovenfor, hvis det er de første turneringer der nogensinde er spillet, bliver highscore:
1. Lis 16 2. Max 14 3. Bo 10 ...
Og hvis der dagen efter spilles flere turneringer hvor Lis får 10 points, Max 14, og Bo 8 bliver highscore:
1. Max 28 2. Lis 26 3. Bo 18 ...
Hvor mange skal der stå på highscore listen? Ubegrænset, således at hvis der i tidens løb er 87 der har spillet og fået points får highscore listen 87 rækker? Eller de højeste 10? Eller??
Så tror jeg, at jeg er ved at forstå situationen. En turnering identificeres ved dens dato og starttidspunkt. I ludom_point tabellen vil der være et antal rækker (i dit eksempel otte rækker) der hører til den samme turnering, altså samme dato og tid. Så jeg kan se det fornuftige i at holde dato og tid i en særskilt tabel, ludom_dato. Men så er du nødt til i ludom_point tabellen at have en kolonne med ludom_dato id'en. Ellers kan der ikke holdes rede på hvilke points der hører til hvilke turneringer. Og jeg foreslår som sagt at gemme dato og tid i en enkelt kolonne, med datatype DATETIME, i stedet for i to kolonner.
Så i det følgende går jeg ud fra disse tabeller:
ludom_dato id datotid
ludom_point id dato_id plads nick point
For så i din php fil at udtrække og præsentere pointene, så er her en "quick and dirty" måde det kan gøres på. Jeg må lige sige, at det er nogen tid siden jeg selv har arbejdet med disse ting, og jeg har ikke testet det, men det følgende burde virke.
<?php ...... ..forbindelse til databasen [jeg går ud fra at du selv har check på det.] ......
Altså først henter du alle dato-tid'erne. For hver dato-tid, i den yderste while løkke, skriver du dato-tid'en ud og så henter du alle nicks/points for den pågældende dato-tid og, i den inderste while løkke, udskriver disse nicks og points.
Dine highscores kunne så klares således:
<?php ....... forbindelse med databasen...
$i = 1; $result = mysql_query("SELECT nick, SUM(point) score FROM ludom_point GROUP BY nick ORDER BY score DESC"); while($highscore = mysql_fetch_array($result)) { echo $i ." ".$highscore['nick']. " " . $highscore['score']."<br>"; $i++; } ?>
Her giver du først en variabel $i værdien 1. Det skal du bruge for at kunne nummerere dine highscores. Derefter henter du alle de forskellige nicks, og for hver nick henter du summen af points og kalder det 'score'. Det henter du i rækkefølge med de højeste scores først. For hver score, i while løkken, skriver du $i, som til at begynde med er 1, og derefter den første nick med totalscore, og derefter forøger du $i med 1. Derefter skriver du på en ny linje $i, som nu er 2, plus den anden nick med dennes totalscore, og du forøger igen $i med 1. Og så videre.
Nu vil jeg sige, at efterhånden som du får en del turneringer i databasen, så kan det gå hen og blive nogle meget lange php sider. Du vil så velsagtens gerne begrænse udskriften, for eksempel for turneringer i en bestemt måned eller år. Du vil sikkert også ønske at forbedre udskriften med nogle overskrifter og måske placere rækkerne i en tabel. Det ligger alt sammen udenfor dette spørgsmål.
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.