Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Numeroiden aakkosjärjestys

SysRq868 [07.08.2006 16:48:51]

#

Tulin juuri kesämökiltä, jossa ei, ylläri pylläri, ollut internetyhteyttä. Joten siellä EasyPHP:n ja ladattavan PHP -oppaan kanssa virittelin koodeja, ja tulin kehittäneeksi eräänlaisen toplistan sivujen hittimääristä.

Tiedostot:
index.php:

<?php
if($_GET["topic"] != ""){
  $fn = "haccess-count.txt";
  $cf = file($fn);
  $fc = array();
  $fk = fopen($fn, "w+");
  for($i=0;$i<count($cf);$i++){
    $rd = explode("|", $cf[$i]);
    $nnum = $rd[0] + 1;
    $con = $nnum."|".$_GET["topic"]."|".$rd[2]."|\r\n";
    if($rd[1] == $_GET["topic"]){
      fwrite($fk, $con);
    } else {
      fwrite($fk, $cf[$i]);
    }
  }
  fclose($fk);
}

echo "Top-10:<br><br>";
$fn2 = "haccess-count.txt";
$cf2 = file($fn2);
array_multisort(($cf2), SORT_DESC, SORT_STRING, $cf2);
for($a=0;$a<10;$a++){
  $rd = explode("|", $cf2[$a]);
  echo "<a href=\"?topic=".$rd[1]."\">".$rd[2]."</a>, ".$rd[0]." osumaa.<br>\r\n";
}

if($_GET["topic"] == "juttu"){ ?>
Juttua, pöö.
<?php } if($_GET["topic"] == "asia"){ ?>
Asiaa, paa.
<?php } if($_GET["topic"] == "homma"){ ?>
Hommaa, jee.
<?php } ?>

haccess-count.txt:

16|juttu|Juttua|
3|asia|Asiaa|
1|homma|Hommaa|

Vitsi on siinä, että nyt se tulostaa seuraavaa:

Hommaa, 1 osumaa.
Juttua, 16 osumaa.
Asiaa, 3 osumaa.

kun "Juttua" pitäisi olla ensimmäisenä. Tiedän, että tämän voisi korjata helposti pistämällä nollia eteen, mutta tällöin tuloste olisi jotain ihme sekoilua

Juttua, 00016 osumaa.
Hommaa, 00001 osumaa
Asiaa, 00003 osumaa.

...mitä sen ei välttämättä tarvitsisi olla. Sitä paitsi, PHP tuppaa unohtamaan edessä olevat nollat, jolloin

echo "00002" + 1;

tulostaa "3", vaikka sen pitäisi tulostaa "00003".

Toplista on nyt hieman kummallinen, voisiko kukaan auttaa? Kiitos etukäteen! :)

Antti Laaksonen [07.08.2006 21:46:40]

#

Muuta järjestelyssä SORT_STRING muotoon SORT_NUMERIC.

Merkkijonojen vertailussa "16" on pienempi kuin "3".

SysRq868 [08.08.2006 13:35:32]

#

Kiitos! ^.^

Vastaus

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

Tietoa sivustosta