---
title: "Uppgift till nån frivillig 2 .."
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/14569-uppgift-till-nån-frivillig-2"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Batboy"
published: "2000-06-10T17:56:00.000Z"
updated: "2000-06-13T06:36:00.000Z"
replies: 7
views: 403
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/14569-uppgift-till-nån-frivillig-2"
---

# Uppgift till nån frivillig 2 ..

## #1 — Batboy, 2000-06-10T17:56Z

Hej,

Hoppas nån har lust och tid att hjälpa mig.

Jag behöver ett PHP-script som tillverkar en html-fil. Jag har ett gäng textfiler ('id=1.dat','id=2.dat' osv. upp till ca. 'id=2000.dat'), innehållet i dessa textfiler ser t.ex. ut såhär: 

```
76|5|3.6|213.114.241.135|212.151.439.105
```

Det viktiga i innehållet i dat-filerna är första siffran/siffrorna (76 ovan). Jag behöver en toplista där den dat-fil som innehåller högsta siffran står överst och sedan resten i fallande skala. Jag behöver även namnet på filen utan filtillägget (id=xxx) bredvid själva siffran.
Typ: 

```
76 -> id=548
57 -> id=872
40 -> id=51
osv
osv
```

Allt detta ska alltså skrivas till en fil.

Ahh.. attans vad rörigt det blev, hoppas nån förstår vad jag menar. Behövs mer info så säg till..

Permalänk: https://www.webforum.nu/p/14569

## #2 — emission, 2000-06-10T21:52Z

Får man först fråga varför du har alla dessa filer? ;)

Permalänk: https://www.webforum.nu/p/311114

## #3 — Batboy, 2000-06-11T00:05Z

Visst får man det..

De tillhör ett betygsättnings-script (php). Man inkluderar ett php-script på den sida man vill ha betygsatt så genereras dessa filer automagiskt.
76 = Antal hits
5 = Antal röster
3\.6 = Medelbetyg

Jag vill alltså ha en toplista på de sidor som genererar mest hits.

Ah.. svårt att förklara. Här kan det ses i action  <http://nokiatricks.com/logos/db/dl.php3?id=1292> i just detta fall är det själva logon som betygsätts men det är alltså hitsen som är det primära..

Permalänk: https://www.webforum.nu/p/311115

## #4 — emission, 2000-06-11T15:40Z

Okej, en databas eller en central fil hade känts mer smidigt, men du hade säkert en bra anledning till att göra så här.

Jag förutsätter att alla dat-filer ligger i samma mapp.

```

<?
$path="sökväg till mappen";
$dir=opendir($path);
while ($file = readdir($dir)) {
   if (substr ($file, -4)==".dat"){
      $id=substr($file,0,strlen($file)-4);

      $f=fopen("$path/$file","r");
      if ($f){
         $line=fgets($f,10);
         $arr=explode("|",$line);
         $count=(int) $arr[0];
         $list[$id]=$count;
         fclose($f);
      }
    }
}
arsort($list);

for (reset ($list); $key = key ($list); next ($list)) {
   echo $list[$key]." -> $key<BR>\n";
}    
closedir($dir);
?>
```

\[Redigerat av emission den 11 jun 2000\]

Permalänk: https://www.webforum.nu/p/311116

## #5 — Batboy, 2000-06-11T18:20Z

Tack!

Fungerar perfekt.

Visst vore en databas betydligt smidigare, mina kunskaper i PHP räcker dock inte till ännu. Det är inte jag som gjort detta betygsättnings-script..

Hrm.. du skulle inte ha lust att förklara varje del i ditt eminenta script, hur det fungerar alltså? Framför allt delen efter "while ($file = readdir($dir)) {" ;)

Permalänk: https://www.webforum.nu/p/311117

## #6 — emission, 2000-06-11T18:32Z

```

<?
$path="sökväg till mappen";
$dir=opendir($path);

//för varje $file i mappen

while ($file = readdir($dir)) {

// om de 4 sista i filnamnet är ".dat" så..
   if (substr ($file, -4)==".dat"){

//Sätt $id till namnet utan de 4 sista 

      $id=substr($file,0,strlen($file)-4);

//öppna filen och spara handtaget i $f

      $f=fopen("$path/$file","r");

//om filöppningen lyckades så...
      if ($f){

//lägg de 10 första tecknen i filen i $line
         $line=fgets($f,10);

//splitta upp $line till en array - $arr

         $arr=explode("|",$line);
//antalet hits lagras i $count, och kommer från det första elementet arr $arr

         $count=(int) $arr[0];

//lagra värdet i den associativa arrayen $list, men $id som nyckel

         $list[$id]=$count;
//stäng filen
         fclose($f);
      }
    }
}

//sortera arrayen omvänt

arsort($list);

//gå igenom den sorterade arrayen och skriv ut resultaten
for (reset ($list); $key = key ($list); next ($list)) {
   echo $list[$key]." -> $key<BR>\n";
}    
//stäng mappen
closedir($dir);
?>
```

Permalänk: https://www.webforum.nu/p/311118

## #7 — Sico, 2000-06-12T23:09Z

Grrrrrrr... du snodde mitt inläggsnamn.. grrrrrrrr...  :)

Permalänk: https://www.webforum.nu/p/311119

## #8 — woodi, 2000-06-13T06:36Z

Que!?

Permalänk: https://www.webforum.nu/p/311120

---

Tråden på webben: https://www.webforum.nu/amne/php/14569-uppgift-till-nån-frivillig-2
