Gjest Slettet+98128394 Skrevet 3. januar 2007 Del Skrevet 3. januar 2007 (endret) Jeg har tenkt til å lag en liste som kan sortere resultater og plasseringer. Siden det ofte skjer at at noen får lik poengsum vil jeg at de skal dele plasseringen, men hvordan får jeg til det? Slik jeg ønsker lista skal se ut: 1. Hans 1000 1. Ole 1000 3. Ivar 900 4. Klaus 800 Endret 4. januar 2007 av Slettet+98128394 Lenke til kommentar
Beethoven Skrevet 3. januar 2007 Del Skrevet 3. januar 2007 Skal dataen hente fra en fil? Lenke til kommentar
Gjest Slettet+98128394 Skrevet 3. januar 2007 Del Skrevet 3. januar 2007 Nei, de skal hentes fra en mysql-database. Lenke til kommentar
Ståle Skrevet 3. januar 2007 Del Skrevet 3. januar 2007 (endret) SELECT * FROM rank ORDER BY poengsum DESC kanskje? edit; åja.. misforstod problemet. =/ Endret 3. januar 2007 av Ståle Lenke til kommentar
ZoRaC Skrevet 3. januar 2007 Del Skrevet 3. januar 2007 (endret) Problemet er vel at når man looper vil den ikke nummerere riktig... $plass = 1; $sistePoeng = ""; foreach ($poeng as $key => $value) { echo $plass . " " . $value . "<br>"; if ($value != $sistePoeng) { $plass++; } } Slik da? Endret 3. januar 2007 av ZoRaC Lenke til kommentar
Gjest Slettet+98128394 Skrevet 4. januar 2007 Del Skrevet 4. januar 2007 Jeg har brukt det du foreslo pluss med litt justering. Men jeg har enda ikke fått det helt som jeg vil. Dette er mitt nåværende script for denne handlingen: $plass = 0; $sistePoeng = ""; foreach ($sjekkliste as $el => $value) { if($value != $sistePoeng) { $plass++; } echo $plass . ". " . $value . "</br>"; if($value == $sistePoeng) { $plass++; } $sistePoeng = $value; } Problemet med denne koden er at den kun takler at maks 2 personer får lik poengsum. Er det flere som får likt blir tallene i lista feil. Dette er det som vises av scriptet i nettleseren: 1. 243 2. 240 2. 240 4. 238 4. 238 5. 238 6. 238 8. 235 9. 230 Da ser man at når det er 4 stk med 238 poeng blir det trøbbel. Men når det er slutt på like poengsummer så begynner den å telle riktig igjen. Det er derfor den hopper over 7. plassen. Lenke til kommentar
Kagee Skrevet 4. januar 2007 Del Skrevet 4. januar 2007 $plass = 0; $sistePoeng = ""; foreach ($sjekkliste as $el => $value) { if($value != $sistePoeng OR $value == $sistePoeng) { $plass++; } echo $plass . ". " . $value . "</br>"; $sistePoeng = $value; } 7638654[/snapback] Tror dette blir mere riktig. Lenke til kommentar
Ernie Skrevet 4. januar 2007 Del Skrevet 4. januar 2007 Den blir jo en smule ulogisk siden if-en alltid vil være true. Det her fungerer: PHP $plass = 0;$ant_like = 0; $siste = 0; $size = count($liste); for ($i = 0; $i < $size; $i++) { if ($liste[$i] === $siste) $ant_like++; else { $plass += 1 + $ant_like; $ant_like = 0; $siste = $liste[$i]; } echo $plass.'. '.$liste[$i]."<br />\n"; } Lenke til kommentar
Kagee Skrevet 4. januar 2007 Del Skrevet 4. januar 2007 PHP $plass = 0;$ant_like = 0; $siste = 0; $size = count($liste); for ($i = 0; $i < $size; $i++) { if ($liste[$i] === $siste) { $ant_like++; } else { $plass += 1 + $ant_like; $ant_like = 0; $siste = $liste[$i]; } echo $plass.'. '.$liste[$i]."<br />\n"; } Det var noe rart med en if-setingen min. Men må du ikke ha ed de to {} jeg la til? Lenke til kommentar
Ernie Skrevet 4. januar 2007 Del Skrevet 4. januar 2007 Nope, if kan skrives på endel måter og det er en av de. Compound statment (som er { /*kode*/ }) regnes som en linje og da er det naturlig at det er mulig å gjøre det slik også. Lenke til kommentar
Gjest Slettet+98128394 Skrevet 4. januar 2007 Del Skrevet 4. januar 2007 Takk for hjelpa, Ernie. Det funker glimrende! Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå