Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] Download-Counter (https://www.delphipraxis.net/64619-%5Bphp%5D-download-counter.html)

MisterNiceGuy 6. Mär 2006 20:41

Re: [PHP] Download-Counter
 
Ich hab jetzt eine meiner Meinung nach ganz schöne Lösung gefunden :)

Code:
<?php  
  switch ($_GET['file']) { 
    case 1:$NewHeader="EMail_Checker_setup.exe"; break;
    ...
    case 28:$NewHeader="MrOnline_zip.zip"; break;
  } 
  header('Location: Programme/'.$NewHeader);
  $db_link = @mysql_connect("localhost", "***", "***");            
  mysql_select_db("usr_web89_1");
  $dlid=$_GET['download'];
  mysql_query("UPDATE dlcounter Set counter = counter+1 WHERE id=$dlid");
?>
Dabei wird die jeweilige Fileid und die Downloadid übergeben, bespielsweise mit einem Aufruf wie diesem:
Code:
[url]www.schnick.de/hallo.php?file=1&download=2[/url]

himitsu 7. Mär 2006 12:53

Re: [PHP] Download-Counter
 
Und warum nimmst du nicht die FileID gleich mit als DownloadID?
Dann hast du die gleiche ID in der DB und PHP(switch).

Außerdem vergiß das intval nicht, da man dir sonst über die ID($dlid) ganz netten Code in die DB einschleusen könnte :zwinker:

Code:
<?php  
  switch ($_GET['file']) {
    case 1:$NewHeader="EMail_Checker_setup.exe"; break;
    ...
    case 28:$NewHeader="MrOnline_zip.zip"; break;
  } 
  header('Location: Programme/'.$NewHeader);
  $db_link = @mysql_connect("localhost", "***", "***");            
  mysql_select_db("usr_web89_1");
  $dlid=intval($_GET['file']);
  mysql_query("UPDATE dlcounter Set counter = counter+1 WHERE id=$dlid");
?>
www.schnick.de/hallo.php?file=1


Und wenn du nicht ständig an der PHP und der DB rumspielen willst, wenn du was hinzigefügt/gelöscht/geändert hast, dann mach doch alles in die DB, also
ID | Dateiname | Counter


Ach ja, es macht sich auch nicht schlecht, wenn du noch prüfst, ob es die gewünschte ID überhaupt gibt.

MisterNiceGuy 7. Mär 2006 13:08

Re: [PHP] Download-Counter
 
Naja ich hab immer ein Setup und eine Zip von jedem Programm. Ich biete also 28 Downloads an, aber ich zähle nicht jede einzelne Datei im Counter sondern jedes Programm. Deswegen 2 Variablen.

Das mit dem intval wusste ich nicht, danke ;)

himitsu 8. Mär 2006 10:30

Re: [PHP] Download-Counter
 
Zitat:

Zitat von MisterNiceGuy
Das mit dem intval wusste ich nicht, danke ;)

Büdde :)

Zitat:

Zitat von MisterNiceGuy
Naja ich hab immer ein Setup und eine Zip von jedem Programm. Ich biete also 28 Downloads an, aber ich zähle nicht jede einzelne Datei im Counter sondern jedes Programm. Deswegen 2 Variablen.

Also dafür gäbe es 2 mindestens Lösungen ...
entweder man rechnet die Counter der beiden Dateien bei der Ausgabe/Auswertung zusammen (hat aber zwei Counter),

oder man könnte natürlich immernoch Runden und dergleichen
Code:
<?php  
  switch ($_GET['file']) {
    case 0: $NewHeader = "EMail_Checker_setup.exe"; break;
    case 1: $NewHeader = "EMail_Checker_zip.zip"; break;
    ...
    case 26: $NewHeader = "MrOnline_setup.exe"; break;
    case 27: $NewHeader = "MrOnline_zip.zip"; break;
  }
  header('Location: Programme/'.$NewHeader);
  $db_link = @mysql_connect("localhost", "***", "***");
  mysql_select_db("usr_web89_1");
  mysql_query("UPDATE dlcounter Set counter = counter+1 WHERE id=" . [i][b](intval($_GET['file']) & ~1)[/b][/i]);
  @mysql_close($db_link);
?>
Also
Datei 0 und 1 = Counter 0
Datei 2 und 3 = Counter 2
Datei 4 und 5 = Counter 3
...


oder wie wäre es mit dividieren °_°
Code:
  mysql_query("UPDATE dlcounter Set counter = counter+1 WHERE id=" . [i][b]floor(intval($_GET['file']) / 2)[/b][/i]);
?>
Also
Datei 0 und 1 = Counter 0
Datei 2 und 3 = Counter 1
Datei 4 und 5 = Counter 2



Ach ja, wenn du eh nicht die DB wieder schließt, dann brauchst du auch nicht die Verbindungs-Kennung in $db_link zu speichern ;)

MisterNiceGuy 8. Mär 2006 11:09

Re: [PHP] Download-Counter
 
Tja man merkt wohl, dass ich noch ziemlich neu in diesem Metier bin :)
Also Frage: Wenn ich 1 durch 2 Teile, was bekomme ich bei PHP für ein Ergebnis? 1? Das wäre ja ideal!
Hatte ich auch anfangs drüber nachgedacht, aber wieder verworfen, da ich mir nicht im Klaren darüber war, was diese Rechnung ergeben würde.

Die Datenbank schiließen? Mach ich doch glatt :)

himitsu 8. Mär 2006 11:24

Re: [PHP] Download-Counter
 
1 / 2 = 0.5

also abgerundet (floor) = 0, oder aufgerundet (ceil) = 1 :zwinker:

und gerundet (round) ... weiß gerade nicht, oder PHP im gegensatz zu Dlphi mathematisch korret rundet, aber 0.5 sollte wohl auch 1 ergeben :?:

xaromz 8. Mär 2006 11:25

Re: [PHP] Download-Counter
 
Hallo,
Zitat:

Zitat von MisterNiceGuy
Wenn ich 1 durch 2 Teile, was bekomme ich bei PHP für ein Ergebnis? 1? Das wäre ja ideal!

Nö, Du bekommst 0.5. Durch floor() rundest Du nach unten ab -> Null.

Gruß
xaromz


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:26 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz