Download Modul, MB anstatt KB

Begonnen von Nancy, 24 September 2005, 16:10:58

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 2 Gäste betrachten dieses Thema.

Nancy

Hallo

bei dem "Download Modul" kann doch die jeweilige Dateigrösse angegeben werden. Ich hätte die Angabe gerne in MB. Wie kann ich denn das abändern?? Einfach nur KB in MB umändern??

Bis bald
Nancy

JoergK

#1
Hi,

Du sprichst von der Anzeige bei den einzelnen DLs aus "User"-Sicht?
Die Anzeige wird in Abhängigkeit der Dateigröße in Byte, Kilobyte oder Megabyte angezeigt.
Der Code dazu befindet sich in modules/Downloads/index.php:

function CoolSize($size) {
   $mb = 1024*1024;
   if ( $size > $mb ) {
       $mysize = sprintf ("%01.2f",$size/$mb) . " MB";
   } elseif ( $size >= 1024 ) {
       $mysize = sprintf ("%01.2f",$size/1024) . " Kb";
   } else {
       $mysize = $size . " bytes";
   }
   return $mysize;
}


Du hast 2 Möglichkeiten, die Dateigröße nur in MB anzeigen zu lassen:

1. Du kommentierst in der obigen function alles, bis auf die Zeile, wo MB am Ende steht, aus:
function CoolSize($size) {
   # $mb = 1024*1024;
   # if ( $size > $mb ) {
       $mysize = sprintf ("%01.2f",$size/$mb) . " MB";
   # } elseif ( $size >= 1024 ) {
   #     $mysize = sprintf ("%01.2f",$size/1024) . " Kb";
   # } else {
   #     $mysize = $size . " bytes";
   # }
   return $mysize;
}


2. Du erstetzt an allen Stellen in modules/Downloads/index.php das Coolsize($filesize) durch den Code aus der obigen function:
Alt:
CoolSize($filesize)."

Neu:
$mysize = sprintf ("%01.2f",$filesize/$mb) . " MB


Gruss,
JoergK
Gruß,
Jörg


Nobody is perfect ... so don't call me Nobody

Nancy

Hallo JoergK,

erstmal vielen Dank für Dein Feedback.

Ich hatte mich zuerst für die erste Variante entschieden und die angegebenen Zeilen ausdokumentiert. Allerdings wird dann 0 MB angezeigt.
Leider brachte auch die zweite Variante kein Erfolg. Es wird auch da "0 MB" angezeigt.

Liebe Grüße
Nancy

JoergK

Hi Nancy,

Das kann natürlich passieren, wenn die Dateigrösse relativ klein ist (kleiner 10486 Byte / 10,24 Kilobyte), denn der ausgegebene Wert wird ja auf "nur" zwei Stellen nach dem Komma formatiert:

Zitatsprintf ("%01.2f",$size/$mb)

Ist das Ergebnis z. B. 0.00, dann wird nur 0 ausgegeben. Kann im PHP-Manual nachgelesen werden.  ;)

Von daher biste eigentlich gut beraten, wennste die Grössenangabe so belässt, wie's im Script vorgesehen ist/war und die Angabe in Abhängigkeit der Dateigrösse in Byte, Kilobyte oder Megabyte ausgegeben wird - oder Du änderste die Anzahl der Nachkommastellen auf 3, 4 oder mehr.

Allerdings ist fraglich, ob's Sinn macht, ne Dateigrösse von z. B. 8765 Byte / 8.55 Kb als 0.0083 MB auszugeben. :-\


Gruss,
JoergK
Gruß,
Jörg


Nobody is perfect ... so don't call me Nobody

Nancy

Hallo JoergK,

na so klein war die Dateigrösse auch nicht, immerhin 700 MB.  ::) Ich konnte eintragen was ich wollte immer stand da 0 MB.
Hast Du noch eine Idee?

LG
Nancy

JoergK

#5
Oops, my fault  :wall:

Wenn Du die Variante mit Änderung in der function nimmst, entkommentier mal bitte die erste Zeile wieder, dass es so aussieht:

function CoolSize($size) {
   $mb = 1024*1024;
   # if ( $size > $mb ) {
       $mysize = sprintf ("%01.2f",$size/$mb) . " MB";
   # } elseif ( $size >= 1024 ) {
   #     $mysize = sprintf ("%01.2f",$size/1024) . " Kb";
   # } else {
   #     $mysize = $size . " bytes";
   # }
   return $mysize;
}


Falls Du die andere Variante bevorzugst, bitte folgendes ändern:
Alte Änderung:
$mysize = sprintf ("%01.2f",$filesize/$mb) . " MB

Neue Änderung:
$mysize = sprintf ("%01.2f",$filesize/(1024*1024)) . " MB


Gruss,
JoergK - der sich fürchterlich schämt  :redhead: :redhead: :redhead:
Gruß,
Jörg


Nobody is perfect ... so don't call me Nobody

Nancy

Sorry JoergK

aber weder die erste noch die zweite Variante funktioniet bei mir.

Schade

LG
Nancy

JoergK

Hmmm... :gruebel:

Hab's eben mal (allerdings in der 0.1er) angetestet, funzt einwandfrei.

Wir reden aber schon von pragmaMx 0.1.6 ?!?
Gib mir mal per PN Deine Addy, dann schick ich Dir die angepasste index.php zu.


Gruss,
JoergK
Gruß,
Jörg


Nobody is perfect ... so don't call me Nobody

Nancy

Danke für Deine Datei. Sie war genauso wie ich sie auch hatte.
Ich habe bei einer Datei mal aus Spass eine Grösse von 123456789 eingegeben. Ausgegeben wird allerdings 117.74.

... verstehe ich nicht.

LG
Nancy

Nancy

Hi

Ich habe gerade bemerkt das ich ja die Angaben im Admin in byte angeben muss.
Dann klappt es ja doch. Sorry *schäm*

Und wenn ich die Angaben dort in MB machen möchte. Geht das auch?? Das wäre doch einfacher.

;)
Nancy

JoergK

ZitatUnd wenn ich die Angaben dort in MB machen möchte. Geht das auch?? Das wäre doch einfacher.

Machbar ist (fast) alles  ;)

Du brauchst "nur" das
CoolSize($filesize)."

an allen Stellen im Script durch das
$filesize . " MB

ersetzen.
Und dann noch den Text in den Sprachdateien modules/Downloads/language/lang-*.php
define("_INBYTES","in Bytes");

durch den
define("_INBYTES","in MB");

ersetzen.


Gruss,
JoergK
Gruß,
Jörg


Nobody is perfect ... so don't call me Nobody

Nancy

Soweit, so gut.

Nun werden aber keine Zahlen nach dem Komma angezeigt.

JoergK

ZitatNun werden aber keine Zahlen nach dem Komma angezeigt.

So'n Pech aber auch ...  ;D

Spass beiseite, das hatte ich nicht in der DB kontrolliert. Dort ist das Feld filesize als Integer formatiert, somit funzen keine Dezimalzahlen mit Nachkommastellen.

Du könntest in der DB den Feldtyp des Feldes filesize in der Tabelle (prefix)_downloads_downloads von int(11) auf decimal(9,2)ändern, damit kannste dann 2 Nachkommastellen angeben.


Gruss,
JoergK
Gruß,
Jörg


Nobody is perfect ... so don't call me Nobody

Nancy

Hi JoergK,

ein ganz dickes Lob an Dich.  :D Jetzt funktioniert es perfekt.

GLG
Nancy