PHP-Script für Downloadzeit

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
oliver12345
Mitglied
Beiträge: 613
Registriert: 22.05.2003 16:58
Wohnort: Thale
Kontaktdaten:

PHP-Script für Downloadzeit

Beitrag von oliver12345 »

Hallo phpBB-Freunde,

da mein alter Thread leider gesperrt/gelöscht wurde, hier nochmal alles ausführlich.

Ich habe mir ein PHP-Script gebastelt, das ich auf meiner Homepage verwenden möchte, um die Zeiten für meine angebotenen Downloads automatisch zu ermitteln. Dazu habe ich bisher folgenden Code zusammengestellt:

Code: Alles auswählen

<html>
<head>
</head>
<body>
<?php
if ($submit) 
{
$filesize = filesize($file);
$time = ($filesize / 1024) / ($speed / 8);
$time = round($time, 0);
$hours = $time / 3600;
$hours = floor($hours);
if($hours < 10) {
$hours = '0' + $hours;
}
if($hours >= 1) {
$new_time = $hours;
$secs_left = $time % 3600;
if($secs_left > 60) {
$mins  = $secs_left / 60;
$mins = floor($mins);
if($mins < 10) {
$mins = '0' + $mins;
}
$new_time = $new_time + ':' + $mins;
$secs  = $secs_left % 60;
if($secs < 10) {
$secs = '0' + $secs;
}
if($secs == '00') {
$secs = '01';
}
$new_time = $new_time + ':' + $secs;
}
else {
$mins = 0;
if($mins < 10) {
$mins = '0' + mins;
}
$new_time = new_time + ':' + mins;
$secs = secs_left;
if($secs < 10) {
$secs = '0' + secs;
}
if(secs == '00') {
$secs = '01';
}
$new_time = $new_time + ':' + $secs;
}
}
else {
$mins  = $time / 60;
$mins = floor($mins);
if($mins < 10) {
$mins = '0' + $mins;
}
if($mins >= 1) {
$new_time = '00:' + $mins;
$secs = $time % 60;
if($secs < 10) {
$secs = '0' + secs;
}
if($secs == '00') {
$secs = '01';
}
$new_time = $new_time + ':' + $secs;
}
else {
$secs = $time % 60;
if($secs < 10) {
$secs = '0' + secs;
}
if($secs == '00') {
$secs = '01';
}
$new_time = '00:00:' + $secs;
}
}
$dl_time = "Der Download dauert ca. $hours Stunden, $mins Minuten und $secs Sekunden.";
echo $dl_time; 
}
?>
<form>
<select name="speed" id="speed">
<option>Bitte eine Geschwindigkeit wählen
<option>---------------------------------------------------
<option value="28.8">28.8 KB/s
<option value="56">56 KB/s
<option value="128">ISDN (128 KB/s)
<option value="1024">DSL1000 (1024 KB/s)
<option value="2048">DSL2000 (2048 KB/s)
<option value="3072">DSL3000 (3072 KB/s)
</select>
<input type="submit" onSubmit="alert('<?php echo $dl_time; ?>')" value="Downloadzeit">
</form>
</body>
</html>
Leider habe ich ein Problem mit der Variable "speed". Ich hoffe, ihr könnt mir helfen, denn ich bin noch Anfänger in Sachen PHP.

Hinweise: Die im Browser angezeigte URL hat am Ende immer das hier stehen:
.php?file=datei.zip
Somit wird die Variable "file" definiert. Die Variable "speed" soll mit Hilfe des Pulldown-Menüs ermittelt werden. Klickt man danach auf den Button "Downloadzeit", wird die entsprechende Dauer für den Download in einem "alert"-Fenster angezeigt. Nur leider funktioniert das alles nicht.

Es wäre sehr freundlich, wenn ihr mir helfen würdet. :) Danke!

edit:
Eine Testseite habe ich hier eingerichtet.
ollis-page-online.de - Alles zum verrücktesten Huhn Deutschlands.
ollis-forum-online.de.vu - Das Forum zum Kulthuhn
Jack9027
Mitglied
Beiträge: 344
Registriert: 05.01.2004 18:46

Beitrag von Jack9027 »

Code: Alles auswählen

<html> 
<head> 
</head> 
<body> 
<?php 

if ($submit == "Downloadzeit") 
{ 
$filesize = filesize($file);
$time = ($filesize / 1024) / ($speed / 8); 
$time = round($time, 0); 
$hours = $time / 3600; 
$hours = floor($hours); 
if($hours < 10) { 
$hours = '0' + $hours; 
} 
if($hours >= 1) { 
$new_time = $hours; 
$secs_left = $time % 3600; 
if($secs_left > 60) { 
$mins  = $secs_left / 60; 
$mins = floor($mins); 
if($mins < 10) { 
$mins = '0' + $mins; 
} 
$new_time = $new_time + ':' + $mins; 
$secs  = $secs_left % 60; 
if($secs < 10) { 
$secs = '0' + $secs; 
} 
if($secs == '00') { 
$secs = '01'; 
} 
$new_time = $new_time + ':' + $secs; 
} 
else { 
$mins = 0; 
if($mins < 10) { 
$mins = '0' + mins; 
} 
$new_time = new_time + ':' + mins; 
$secs = secs_left; 
if($secs < 10) { 
$secs = '0' + secs; 
} 
if(secs == '00') { 
$secs = '01'; 
} 
$new_time = $new_time + ':' + $secs; 
} 
} 
else { 
$mins  = $time / 60; 
$mins = floor($mins); 
if($mins < 10) { 
$mins = '0' + $mins; 
} 
if($mins >= 1) { 
$new_time = '00:' + $mins; 
$secs = $time % 60; 
if($secs < 10) { 
$secs = '0' + secs; 
} 
if($secs == '00') { 
$secs = '01'; 
} 
$new_time = $new_time + ':' + $secs; 
} 
else { 
$secs = $time % 60; 
if($secs < 10) { 
$secs = '0' + secs; 
} 
if($secs == '00') { 
$secs = '01'; 
} 
$new_time = '00:00:' + $secs; 
} 
} 
$dl_time = "Der Download dauert ca. $hours Stunden, $mins Minuten und $secs Sekunden."; 
echo $dl_time; 
} 
?> 
<form action="dl.php?file=<?=$file ?>" method="post"> 
<select name="speed"> 
<option>Bitte eine Geschwindigkeit wählen 
<option>--------------------------------------------------- 
<option value="28.8">28.8 KB/s 
<option value="56">56 KB/s 
<option value="128">ISDN (128 KB/s) 
<option value="1024">DSL1000 (1024 KB/s) 
<option value="2048">DSL2000 (2048 KB/s) 
<option value="3072">DSL3000 (3072 KB/s) 
</select> 
<input type="submit" name="submit" value="Downloadzeit"> 
</form> 
</body> 
</html>
so jetzt gibt es schon mal was von sich funktioniert zwar nochimmer nicht, ich schaus mir aber nochmal an ;)
[edit]
ich hab keine ahnung ob des die beste oder schnellste lösung ist aber es funktioniert ;)

mich würde aber aus etwas intressieren: wie könnte man das problem mit get und PHP_SELF lösen. wenn ich nämlich sowas schreib:

Code: Alles auswählen

<form action="<?=$PHP_SELF ?>?file=<?=$file ?>&" method="get"> 
wird immer das ?file=bla.bla& "vergessen"[/code]
Benutzeravatar
oliver12345
Mitglied
Beiträge: 613
Registriert: 22.05.2003 16:58
Wohnort: Thale
Kontaktdaten:

Beitrag von oliver12345 »

@ Jack9027

Danke, dass du mir hilfst. Ich habe die Testseite jetzt aktualisiert. :wink:
ollis-page-online.de - Alles zum verrücktesten Huhn Deutschlands.
ollis-forum-online.de.vu - Das Forum zum Kulthuhn
Jack9027
Mitglied
Beiträge: 344
Registriert: 05.01.2004 18:46

Beitrag von Jack9027 »

sollte auch funktionieren oder? weil für die kleine zip datei stimmt eine sekunde schon. ich habs bei mir mit größeren dateien auch probiert und da ist die zeit schon größer geworden. ob es aber wirklich stimmt weiss ich auch nicht...
Benutzeravatar
oliver12345
Mitglied
Beiträge: 613
Registriert: 22.05.2003 16:58
Wohnort: Thale
Kontaktdaten:

Beitrag von oliver12345 »

@ Jack9027

Ich denke auch, dass es so weit funktioniert, nur soll ja eigentlich die Downloadzeit in einem "alert"-Fenster angezeigt werden. :-?
ollis-page-online.de - Alles zum verrücktesten Huhn Deutschlands.
ollis-forum-online.de.vu - Das Forum zum Kulthuhn
Jack9027
Mitglied
Beiträge: 344
Registriert: 05.01.2004 18:46

Beitrag von Jack9027 »

Code: Alles auswählen

<html> 
<head> 
</head> 
<body> 
<?php 

if ($submit == "Downloadzeit") 
{ 
$filesize = filesize($file); 
$time = ($filesize / 1024) / ($speed / 8); 
$time = round($time, 0); 
$hours = $time / 3600; 
$hours = floor($hours); 
if($hours < 10) { 
$hours = '0' + $hours; 
} 
if($hours >= 1) { 
$new_time = $hours; 
$secs_left = $time % 3600; 
if($secs_left > 60) { 
$mins  = $secs_left / 60; 
$mins = floor($mins); 
if($mins < 10) { 
$mins = '0' + $mins; 
} 
$new_time = $new_time + ':' + $mins; 
$secs  = $secs_left % 60; 
if($secs < 10) { 
$secs = '0' + $secs; 
} 
if($secs == '00') { 
$secs = '01'; 
} 
$new_time = $new_time + ':' + $secs; 
} 
else { 
$mins = 0; 
if($mins < 10) { 
$mins = '0' + mins; 
} 
$new_time = new_time + ':' + mins; 
$secs = secs_left; 
if($secs < 10) { 
$secs = '0' + secs; 
} 
if(secs == '00') { 
$secs = '01'; 
} 
$new_time = $new_time + ':' + $secs; 
} 
} 
else { 
$mins  = $time / 60; 
$mins = floor($mins); 
if($mins < 10) { 
$mins = '0' + $mins; 
} 
if($mins >= 1) { 
$new_time = '00:' + $mins; 
$secs = $time % 60; 
if($secs < 10) { 
$secs = '0' + secs; 
} 
if($secs == '00') { 
$secs = '01'; 
} 
$new_time = $new_time + ':' + $secs; 
} 
else { 
$secs = $time % 60; 
if($secs < 10) { 
$secs = '0' + secs; 
} 
if($secs == '00') { 
$secs = '01'; 
} 
$new_time = '00:00:' + $secs; 
} 
} 
$dl_time = "Der Download dauert ca. $hours Stunden, $mins Minuten und $secs Sekunden."; 
echo $dl_time; 
?>
<script type="text/javascript">
<!--
alert("<?=$dl_time ?>");
//-->
</script>
<?php
} 
?> 
<form action="dl.php?file=<?=$file ?>" method="post"> 
<select name="speed"> 
<option>Bitte eine Geschwindigkeit wählen 
<option>--------------------------------------------------- 
<option value="28.8">28.8 KB/s 
<option value="56">56 KB/s 
<option value="128">ISDN (128 KB/s) 
<option value="1024">DSL1000 (1024 KB/s) 
<option value="2048">DSL2000 (2048 KB/s) 
<option value="3072">DSL3000 (3072 KB/s) 
</select>
<input type="submit" name="submit" value="Downloadzeit" onSubmit="alert('<?php echo $dl_time; ?>')" value="Downloadzeit"> 
</form> 
</body> 
</html>
so vielleicht?
Benutzeravatar
oliver12345
Mitglied
Beiträge: 613
Registriert: 22.05.2003 16:58
Wohnort: Thale
Kontaktdaten:

Beitrag von oliver12345 »

Das

Code: Alles auswählen

echo $dl_time;
in Zeile 81 habe ich entfernt, da sonst die Meldung mit der Downloadzeit geöffnet wurde und es auf der Seite selbst stand. Es reicht aber, wenn es nur in der Meldung ist. :wink:

Das Script ist jetzt schon nicht schlecht, nur würde ich gerne verhindern, dass sich die Seite aktualisiert, wenn man auf den "Downloadzeit"-Button klickt. Ob das noch geht? :-?
ollis-page-online.de - Alles zum verrücktesten Huhn Deutschlands.
ollis-forum-online.de.vu - Das Forum zum Kulthuhn
Jack9027
Mitglied
Beiträge: 344
Registriert: 05.01.2004 18:46

Beitrag von Jack9027 »

ich glaub nicht das man sowas machen kann, weil das formular muss ja abgeschickt werden. ich kenn auch keine website bei das ohne ohne laden geht außer, wenn man z.B dl.php?file=irgenwas.zip aufruft und dann gleich die verschiedenen zeiten für alle geschwindigkeiten ausgibt
Benutzeravatar
oliver12345
Mitglied
Beiträge: 613
Registriert: 22.05.2003 16:58
Wohnort: Thale
Kontaktdaten:

Beitrag von oliver12345 »

ollis-page-online.de - Alles zum verrücktesten Huhn Deutschlands.
ollis-forum-online.de.vu - Das Forum zum Kulthuhn
Jack9027
Mitglied
Beiträge: 344
Registriert: 05.01.2004 18:46

Beitrag von Jack9027 »

Jack9027 hat geschrieben:außer, wenn man z.B dl.php?file=irgenwas.zip aufruft und dann gleich die verschiedenen zeiten für alle geschwindigkeiten ausgibt
genau des schreib ich ja... weil auf der seite kann man auch nicht wählen welche geschwindigkeit man hat sondern es wird für alles angezeigt....
Antworten

Zurück zu „Coding & Technik“