PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Clickcounter?



Fanatic
09.09.2005, 09:40
Also ich brauche den Code für einen Clickcounter.
Die Downloads werden schon in eine Tabelle eingetragen. (Hab ich schon slebst geschafft ^^")
Sie werden wie folgt in folgende Felder by MySQL eingetragen:

ID / Name / Autor / Kategorie / link / downloads

Nun möchte ich das alle Daten ausgegeben werden wo die Kategorie zB. "rpg-maker" heißt.
Zusätzlich soll wenn man auf den Link klick, zu den Downloads 1 hinzugefügt werden.

Eigentlich ganz easy glaub ich, nur wie gehts? ^^"

Lucleonhart
09.09.2005, 12:49
Das mit der Kategorie ist sehr simpel:


$abfrage = "SELECT * FROM downloads WHERE Kategorie LIKE '$search' ";


Wenn du dann ein Feld hast, wo man eine Kategorie eingeben kann, oder ein Auswahlfenster, dann muss das halt die zu suchende Variable $search übergeben.
[EDIT:]
Mein Klickcounter von Freespace-search.de (back soon!^^)... Schonmal für dich angepasst:



<?php
include("database.php"); // Datenbankverbindung wird in der Datei aufgebaut.
$abfrage = mysql_query("SELECT downloads FROM files WHERE id LIKE '$thisid' "); //Aktuelle Klickzahl abfragen.
$ergebnis = mysql_fetch_object($abfrage); //PHP blabla
if ($ergebnis->downloads == "") { $downloads = 0; } else { $downloads = $ergebnis->downloads; } //Wenn Tabelle noch leer ist 0 statt "" nehmen.
$downloads++; //Um 1 erhöhen
$eintrag = mysql_query("UPDATE files Set downloads = '$downloads' WHERE id LIKE '$thisid' "); //Eintragen
?>


In meinem Code heißt deine Tabelle "files".. musste anpassen! ^^

Manni
09.09.2005, 14:29
Die Query müsste auch anders (einfacher gehen, ungetestet ;)):
UPDATE files Set downloads = '$downloads' WHERE id LIKE '$thisid' ");

mysql_query("UPDATE `files` SET `downloads` = `downloads` + 1 WHERE `id`= '".$id."';");

dadie
09.09.2005, 14:42
ein kleiner anreitz ,

Erstell eine weiter Tabele in der die Katigorien mit rechtvergabe und id aufgelistet sind z.B.



------------------------------
| ID | Name | Recht |
------------------------------
| 1 | Was weiss ich | 1 |
------------------------------
| 2 | Was weiss ich | 5 |
------------------------------
| 3 | Was weiss ich | 2 |
------------------------------


nun schreibst du in die Counter tabele nur Catigori 1 rein.
und verbindest es halt über ien script mit der Ctigorie Tabele.

Das hat nämlich den vorteil das wenn du später einen namen ändern willst es nicht so aufwänndig hast.

Aber das ist auch woll nur geschmakcs sache ^^,

codec
10.09.2005, 10:59
Das mit der Kategorie ist sehr simpel:


$abfrage = "SELECT * FROM downloads WHERE Kategorie LIKE '$search' ";



<?php
include("database.php"); // Datenbankverbindung wird in der Datei aufgebaut.
$abfrage = mysql_query("SELECT downloads FROM files WHERE id LIKE '$thisid' "); //Aktuelle Klickzahl abfragen.
$ergebnis = mysql_fetch_object($abfrage); //PHP blabla
if ($ergebnis->downloads == "") { $downloads = 0; } else { $downloads = $ergebnis->downloads; } //Wenn Tabelle noch leer ist 0 statt "" nehmen.
$downloads++; //Um 1 erhöhen
$eintrag = mysql_query("UPDATE files Set downloads = '$downloads' WHERE id LIKE '$thisid' "); //Eintragen
?>


Yeah! MySQL Injection detected!
Man sollte IMMER Variablen filtern die Userinput beinhalten (könnten).



$search = mysql_escape_string($search);
$abfrage = "SELECT * FROM downloads WHERE Kategorie LIKE '$search' ";




<?php
include("database.php"); // Datenbankverbindung wird in der Datei aufgebaut.
$thisid = mysql_escape_string($thisid); // dürfte so funktionieren
$abfrage = mysql_query("SELECT downloads FROM files WHERE id LIKE '$thisid' "); //Aktuelle Klickzahl abfragen.
$ergebnis = mysql_fetch_object($abfrage); //PHP blabla
if ($ergebnis->downloads == "") { $downloads = 0; } else { $downloads = $ergebnis->downloads; } //Wenn Tabelle noch leer ist 0 statt "" nehmen.
$downloads++; //Um 1 erhöhen
$eintrag = mysql_query("UPDATE files Set downloads = '$downloads' WHERE id LIKE '$thisid' "); //Eintragen
?>

Lucleonhart
14.09.2005, 07:47
Anmerkung: Diese Funktion ist seit PHP 4.3.0 veraltet. Benutzen Sie diese Funktion nicht und verwenden Sie stattdessen mysql_real_escape_string().
Aber danke, kannte ich noch net.. :eek: ^^