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