Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Top-lista

Sivun loppuun

Stinky [22.03.2004 17:01:23]

#

Joku viksu immeinen voisi kertoa aloittelijalle, miten sais tehtyä sellasen skriptin joka lajittelisi nopeimmin ajetut kierrokset siten, että nopein olisi ylimpänä. Listalla ei siis tarvitsisi näkyä mitään muuta kuin ajajan nimi ja aika.
Suuri apu olisi tällaisesta, kiitos..

Antti Laaksonen [22.03.2004 17:06:41]

#

Kerro toki, missä muodossa kierroksien tiedot on tallennettu.

Stinky [22.03.2004 19:30:11]

#

Kieroksien tietoja ei ole tallennettu vielä mitenkään, mutta olisi hyvä, että mysqliä ei tarvitsisi käyttää eli tiedot tallennettaisiin tekstitiedostoon. Tiedot tallennetaan tulevaisuudessa siten, miten skripti laitetaan tiedot tallentamaan =)

Olga [22.03.2004 19:47:46]

#

varmaan sit haet ne tiedot sit moniulotteiseen taulukkoon tms., joten array_multisort() lienee yksi ratkaisu lajitteluun.

Stinky [22.03.2004 20:19:57]

#

Okei.. Mitenkäs sitten onnistuu se, että pienin aika tulee ensimmäiseksi, sitten tokaks toisiks pienin jne. Mikään aika ei mene yli minuutin eli sellasista ei tartte välittää..

Olga [22.03.2004 20:24:05]

#

https://www.php.net/manual/en/function.array-multisort.php:

Sorting order flags:
* SORT_ASC - sort in ascending order
* SORT_DESC - sort in descending order

ajv [22.03.2004 20:36:09]

#

No eihän tohon nyt mitään multisorttia tartte.

<?php
$t = array("8"=>"a","7"=>"b","6"=>"c","5"=>"d","4"=>"e","3"=>"f","2"=>"g","1"=>"h");
ksort($t);
print "<pre>";
print_r($t);
/* tulostaa
Array
(
    [1] => h
    [2] => g
    [3] => f
    [4] => e
    [5] => d
    [6] => c
    [7] => b
    [8] => a
)
*/
?>

Olga [22.03.2004 21:44:20]

#

Nyt olikin kyse moniulotteisesta taulukosta...

ajv [22.03.2004 21:54:31]

#

Stinky kirjoitti:

Listalla ei siis tarvitsisi näkyä mitään muuta kuin ajajan nimi ja aika.
Suuri apu olisi tällaisesta, kiitos..

No eikös tuo mun esimerkki nyt aja juuri tuon asian?

Edit, paitsi joo, toi ei toimi jos on kaksi samaa aikaa. Sormet toimi ennen aivoja, kuten aina.

Antti Laaksonen [23.03.2004 16:59:26]

#

Jos tulokset ovat tiedostossa muodossa:

Pekka|36.77
Lauri|40.19
Ville|37.20
Mikko|34.12

Voi koodin tehdä esim. näin:

<?php

/* luetaan tulokset tiedostosta taulukkoon */
$tiedot = file("tulokset.txt");

/* muodostetaan pystyviivoilla erotetuista tiedoista taulukko,
   jonka indeksinä on nimi ja arvona tulos */
foreach ($tiedot as $tulos) {
    $tulos = explode("|", $tulos);
    $lista[$tulos[0]] = $tulos[1];
}

/* järjestellään taulukko tulosten mukaan suurimmasta pienimpään */
arsort($lista, SORT_NUMERIC);

/* tulostetaan taulukon näyttävä HTML-koodi */
echo "<table>
<tr><td><b>Nimi</b></td><td><b>Aika</b></td></tr>";

foreach ($lista as $nimi => $aika) {
    echo "<tr><td>$nimi</td><td>$aika</td></tr>";
}

echo "</table>";

?>

Stinky [23.03.2004 21:01:07]

#

Antti Laaksoselle suuri kiitos tuosta skriptistä! Muutin sitä vain sen verran, että laitoin arsortin tilalle asort.. Tänk juu veri mats!


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta