Tha_Zaynt Skrevet 24. juni 2005 Del Skrevet 24. juni 2005 Jeg vil gjerne lage et filarkiv i php der et script lister opp alle filer og mapper inni en valgt mappe. mappene skal komme opp som kategorier og filene skal listes opp under hver kategori. Jeg vil også logge hver nedlasting av en fil og vise antall ganger en den er lastet ned. Jeg vet ikke helt hvordan jeg skal få gjennomført dette, men jeg har sett noen eksempel på hvordan man lister opp filer og mapper, jeg er dog ikke sikker på hvordan jeg skal bruke dette til å bli slik jeg vil ha det...noen forslag? Lenke til kommentar
Tha_Zaynt Skrevet 24. juni 2005 Forfatter Del Skrevet 24. juni 2005 (endret) Jeg fant et script som gjorde det jeg var ute etter, så jeg bare tok bort litt av de funksjonene jeg ikke trengte. Nå blir hver undermappe i den valgte mappen til kategorier og filene som ligger i mappene blir listet opp under de forskellige kategoriene, men loggingen funker ikke helt bra enda... Jeg har laget en database med 4 felt: id, ip, kategori og filnavn. All info blir lagret riktig i databasen, men noe går galt nå jeg prøver å hente ut infoen, så det står bare at filen er lastet ned 0 ganger uansett hvor mange oppføringer det er i databasen. her er koden som brukes for å hent ut infoen: //finne ut hvor mange ganger filen er lastet ned include"config3.php"; $q = "SELECT * FROM downloads WHERE filnavn = '$displayfilename' AND kategori = '$dir'"; $resultat = mysql_query($q) or die("Could not connect:". mysql_error()); $dls = mysql_num_rows($resultat); Dette er koden i sin helhet: <?php $DownloadDir ="./inc/files"; $MaxLenFilename = 32; $TableWidth = "100%"; $BGColor1 = "#EBE4D4"; echo "<table cellpadding=\"2\" cellspacing=\"0\" border=\"0\" width=\"$TableWidth\">\n"; // putte alle mappene inni et array if ($handle = opendir($DownloadDir)) { $dirs = array(); while (false !== ($dir = readdir($handle))) { if ($dir != "." && $dir != ".." && is_dir("$DownloadDir/$dir")) { array_push($dirs, $dir); } } closedir($handle); } sort($dirs); $a2 = 0; while ($dirs[$a2]) { $dir = $dirs[$a2]; $a2++; // putte alle filene inn i et array if ($handle = opendir("$DownloadDir/$dir")) { $files = array(); while (false !== ($file = readdir($handle))) { if ($file != "." && $file != ".." && !is_dir("$DownloadDir/$dir/$file")) { array_push($files, $file); } } closedir($handle); } sort($files); // unngå lange navn på mapper $length = strlen($dir); if ($length >= $MaxLenFilename) { $length = $MaxLenFilename-3; $displaydir = substr($dir, 0, $length) . "..."; } else $displaydir = $dir; if (count($files) != 0) { echo "<tr><td colspan=\"5\"></td></tr>\n"; echo "<tr><td colspan=\"3\"><b>$displaydir</b></td><td><b>Størr.:</b></td><td><b>Dl's:</b></td></tr>\n"; } $bgcolor = $BGColor1; $b = 0; while ($files[$b]) { $filename = $files[$b]; $b++; // finne filstørrelsen $filesize = filesize("$DownloadDir/$dir/$filename"); if ($filesize >= 1073741824) $filesize = round($filesize / 1073741824 * 100) / 100 . " GB"; elseif ($filesize >= 1048576) $filesize = round($filesize / 1048576 * 100) / 100 . " MB"; elseif ($filesize >= 1024) $filesize = round($filesize / 1024 * 100) / 100 . " KB"; else { $filesize = $filesize . " B"; } //finne ut hvor mange ganger filen er lastet ned include"config3.php"; $q = "SELECT * FROM downloads WHERE filnavn = '$displayfilename' AND kategori = '$dir'"; $resultat = mysql_query($q) or die("Could not connect:". mysql_error()); $dls = mysql_num_rows($resultat); // unngå lange filnavn $length = strlen($filename); if ($length >= $MaxLenFilename) { $length = $MaxLenFilename-3; $displayfilename = substr($filename, 0, $length) . "..."; } else $displayfilename = $filename; echo "<tr bgcolor=\""; // mekke annenhver bakgrunnsfarge if ($bgcolor == $BGColor1) { echo $bgcolor; $bgcolor = $BGColor2; } else { echo $bgcolor; $bgcolor = $BGColor1; } echo "\"><td>$b.</td><td><a href=\"inc/download.php?file=$dir/$filename\">$displayfilename</a></td><td>"; echo "</td><td>$filesize</td><td>$dls</td></tr>\n"; } echo "</table><br>\n";} ?> Noen som ser hvor feilen kan ligge? Endret 24. juni 2005 av Tha_Zaynt Lenke til kommentar
kakkle Skrevet 24. juni 2005 Del Skrevet 24. juni 2005 jupp... $displayfilename blir ikke definer før etter spørringen. Så du må bruke $filename i spørringen istedetfor. Og det er vel den verdien som også ligger lagret i databasen ? Lenke til kommentar
Tha_Zaynt Skrevet 24. juni 2005 Forfatter Del Skrevet 24. juni 2005 (endret) åhh selvfølgelig...la ikke merke til det. Takk skal du ha! EDIT: Oppdaget en liten bug. Når jeg legger til en ny mappe, blir ikke tabelen med infoen printet ut riktig. feilen er at det ikke blir startet en ny <table> men alt det andre er der.. EDIT 2; Never mind, fant ut av det. Kan poste den komplette koden hvis noen ønsker det ,men gidder ikke hvis ingen har interesse av det fordi da må jeg endre en del på scriptet. Endret 24. juni 2005 av Tha_Zaynt Lenke til kommentar
stian123 Skrevet 14. juli 2005 Del Skrevet 14. juli 2005 Kan poste den komplette koden hvis noen ønsker det ,men gidder ikke hvis ingen har interesse av det fordi da må jeg endre en del på scriptet. Jatakk Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå