webForumDet fria alternativet

Uppgift till nån frivillig 2 ..

PHP

7 svar · 399 visningar · startad av Batboy

Medlem sedan jan. 20001 006 inlägg
Frågan#1

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..

------------------
/joakim
http://batboy.net/
http://nokiatricks.com/

Medlem sedan dec. 19996 721 inlägg
#2

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

Medlem sedan jan. 20001 006 inlägg
#3

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..

------------------
/joakim
http://batboy.net/
http://nokiatricks.com/

[Redigerat av Batboy den 11 jun 2000]

Medlem sedan dec. 19996 721 inlägg
#4

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]

Medlem sedan jan. 20001 006 inlägg
#5

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)) {" ;)

------------------
/joakim
http://batboy.net/
http://nokiatricks.com/

Medlem sedan dec. 19996 721 inlägg
#6

<?
$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);
?>
Medlem sedan maj 20002 597 inlägg
#7

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

Medlem sedan feb. 20001 270 inlägg
#8

Que!?

------------------
woodi

Svenska FF1
www.johan-skog.nu

260 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)