login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Sorteren lukt niet

Offline qubus - 07/12/2004 16:34 (laatste wijziging 07/12/2004 16:36)
Avatar van qubusLid Ik ben al twee dagen aan het vogelen, maar kom er niet uit.
Het zal wel iets doms zijn, maar misschien kan iemand me op weg helpen. Ik heb een pagina waar je op een foto kunt stemmen. Je kunt een score geven van 1 to 5. De resultaten worden weggeschreven in een tekstfile. Ik schrijf de volgende gegevens weg met als seperator %% : idnr %% score %% aantal keer gestemd %% datum eerste stem.
Het tekstbestand komt er dus bijvoorbeeld alsvolgt uit te zien :

1%%12%%3%%6-12-2004
2%%5%%1%%6-12-2004
3%%18%%4%%6-12-2004

Nu wil ik hier een ranking van maken. Ik schrijf in een nieuw tekstbestand dezelfde string weg als hierboven. Alleen reken ik eerst nog het gemiddelde uit, en zet dat voor de string.
Nu wil ik deze sorteren van hoogste naar laagste score.

Hieronder heb ik het stukje code gezet. Het werkt prima, tot ik moet sorteren. Dit komt volgens mij omdat ik een string uitlees uit het tekstbestand. En dat zou een array moeten zijn?? De rest van de code kan vast optimaler gemaakt worden, maar daar gaat het me niet om. Graag een beetje hulp bij het sorteren.

Alvast bedankt.
  1. <?
  2. $score = "./wedstrijd/score.txt";
  3. $sorteren = "./wedstrijd/sorteren.txt";
  4. // Het bestand met de scores uitlezen
  5. $open = fopen($score, "r");
  6. $size = filesize($score);
  7. $temp = fread($open, $size);
  8. fclose($open);
  9.  
  10. $lines = file($score); // aantal regels van bestand bepalen
  11. $inhoud = explode("\n", $temp);
  12.  
  13. $open4 = fopen($sorteren, "w");
  14. foreach ($lines as $line_num => $line) {
  15. list($leesid,$leesscore,$leesaantal,$leesdatum)=explode("%%",$inhoud[$line_num]);
  16. // gemiddelde uitrekenen
  17. if ($leesaantal > 0) {
  18. $gemiddelde = $leesscore / $leesaantal;
  19. $afgerond = round($gemiddelde, 1);
  20.  
  21. }
  22. else {
  23. $afgerond = 0;
  24.  
  25. }
  26. // string regel anders sorteren
  27. $inhoud[$line_num] = $afgerond . "%%" . $leesid . "%%" . $leesscore . "%%" . $leesaantal . "%%" . $leesdatum;
  28. fwrite($open4, $inhoud[$line_num]); //nieuwe regel wegschrijven
  29. fwrite($open4, "\n");
  30. }
  31. fclose($open4);
  32. // bestand met nieuwe string uitlezen
  33. $open5 = fopen($sorteren, "r");
  34. $size = filesize($sorteren);
  35. $temp = fread($open5, $size);
  36. fclose($open5);
  37. sort($temp);
  38. // gesorteerde string weer wegschrijven
  39. $open6 = fopen($sorteren, "w");
  40. fwrite($open6, $temp);
  41. fclose($open6);
  42.  
  43.  
  44. ?>


Admin edit:
code-tags rond de code gezet

0 antwoorden

Gesponsorde links
Er zijn nog geen reacties op dit bericht.
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.175s