Avatar billede hypofysen Nybegynder
18. januar 2010 - 14:08 Der er 9 kommentarer og
1 løsning

udskrive placering i et løb

hvordan får jeg beregnet en placering ud fra tider.

eks har jeg 10 tider i min db
01.00.00 (1)
01.00.01 (2)
01.00.02 (3)
01.00.03 (4)
01.00.04 (5)
01.00.05 (6)
01.00.06 (7)
01.00.07 (8)
01.00.07 (8)
01.00.08 (10)

hvordan udskriver man nemmest en placering hvor hurtigste tid naturligvis er nr 1. altså det tal i parantes

mit problem kommer der hvor der er 2 ens tider.
Avatar billede intenz Novice
18. januar 2010 - 14:20 #1
De tider; er de sat ind som char felter eller som int felter i databasen?
Avatar billede hypofysen Nybegynder
18. januar 2010 - 14:25 #2
Tiderne kommer ved at trække to datetime fra hinanden 'YYYY-MM-DD HH:MM:SS og derfter indsættes de som int, men det er ikke noget problem at ændre hvis der er andre formater der er bedre
Avatar billede intenz Novice
18. januar 2010 - 14:57 #3
Hvis de er int felter i databasen, kan du så ikke bare lave en ORDER BY?

mysql_query("SELECT * FROM tabel WHERE noget=noget_andet ORDER BY tid_int ASC");
Avatar billede hypofysen Nybegynder
18. januar 2010 - 15:03 #4
det vil vel bare give et resultatet sorteret på tid, hvilket jo også er en start men når jeg skal have det skrevet ud som en placering hvad gør jeg så..

hvis jeg for eksempel udskriver rækkenummeret tager den jo ikke hensyn til, hvis der er to ens tider
Avatar billede repox Seniormester
18. januar 2010 - 15:28 #5
#4
Du må påberegne noget manuelt arbejde; det er jo ikke synderligt svært at give 'placering' på en liste der er sorteret på tid:


<?php
...
  $placering = 1;
  while( $row = mysql_fetch_assoc($row) )
  {
    echo $row["tid"]." (".$placering++.") <br />";
  }
...
?>

Avatar billede intenz Novice
18. januar 2010 - 15:29 #6
Du kan bare tilføje placeringen i dit loop og tage højde for hvis de skal have samme placering der.

Noget i den stil her:
$res = mysql_query("SELECT * FROM tabel WHERE noget=noget_andet ORDER BY tid_int ASC");

$placering = 1;
while ($row = mysql_fetch_assoc($res)) {
$placering_output = ($row['tid'] == $tid_foer) ? $placering_foer : $placering;

print $row['tid']." - ".$placering_output;
$tid_foer = $row['tid'];
$placering_foer = $placering_output;
$placering++;
}
Avatar billede repox Seniormester
08. februar 2010 - 21:58 #7
Fik du løst din problemstilling eller er spørgsmålet stadig åbent?
Avatar billede hypofysen Nybegynder
09. februar 2010 - 15:02 #8
Sorry jeg ikke har svaret tilbage!

Jeg har delvist løst problemet.

Koden kommer senere når jeg har fri fra arbejde :)

Jeg har fået det til at lykkedes, men løsningen er ikke særlig smart, men den virker så jeg er stadig interesseret i inputs
Avatar billede hypofysen Nybegynder
11. februar 2010 - 17:19 #9
lige nu bruger jeg følgende, jeg er godt klar over det ikke er optimal så modtager gerne inputs

foreach($getRace -> result as $raceInfo)
        {
            $getRaceResult = new Database;
            $getRaceResult -> select($table,'*','Race_id = "'.$raceInfo['rid'].'" AND Finishtime_individual > 0 AND Timeofficial_calc > 0 AND Timeofficial_calc_net > 0','Timeofficial_calc ASC');
            $i = 1;
            $_SESSION['time'] = "";
            $_SESSION['place'] = 1;
            foreach($getRaceResult -> result as $row)
            {
           
                if(@$_SESSION['time'] == $row['Timeofficial_calc'])
                {
                    $place1 = $_SESSION['place'];
                }else{
                    $place1 = $i;
                    $_SESSION['place'] = $i;
                }   
                $i++;
                $_SESSION['time'] = $row['Timeofficial_calc'];
                $updPlace1 = new Database;

                $insArrayPlace1 = array('Placement_overall' => $place1);
                foreach($insArrayPlace1 as $key1 => $value1)
                {
                    $updPlace1 -> update($table,$key1,$value1,'Event_id = "'.$event.'" AND Race_id = "'.$raceInfo['rid'].'" AND Start_number = "'.$row['Start_number'].'"');
                }
               
            }
        }
    }
Avatar billede hypofysen Nybegynder
27. juni 2010 - 10:55 #10
lukker
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

IT-JOB

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Analytiker til Security Operations Center i Cyberdivisionen

Banedanmark

License Manager

Nextway Software A/S

Software Architect