Counter hochzählen...

Simi

Angesehenes Mitglied
Hi all,

Habe einen totalen Blackout.
huh.gif
--> eigentlich wie immer.
biggrin.gif


Ich lasse mir einen Link aus einer Datenbank anzeigen:

CODE

<a href="http://<?= $row['link']; ?>" target="_blank"><?= $row['link'] ?> <img src="images/link.gif" border="0"></a>




Nun habe ich auch eine Spalte mit Hits in der Datenbank. Ich möchte das jedes mal wenn jemand den Link anklickt einen UPDATE gemacht wird und den Counter um 1 erhöht wird.

Aber ehrlich gesagt, kommt mir nicht in Sinn wie.

Kann mir jemand helfen?

Danke und Gruss
Simi
 
Hallo Simi,

Also, in der Tabelle, wo du die Links speicherst, teilst du jedem Link eine ID zu. Bei der Ausgabe deiner Homepage gibst du dann folgenden Link aus:

CODE echo "<a href="link.php?id=$link_id>Link</a>";


Im Script link.php zählst du nun per UPDATE die Counter-Spalte um eins nach oben:


CODE $sql = "UPDATE tabelle SET counter = counter + 1 WHERE id = '$link_id' LIMIT 1";


Dann rufst du noch den eigentlichen Link aus derselben Tabelle, den du aber in einer separaten Spalte gespeichert hast, und speicherst ihn in der Variabel $link:


CODE $sql = "SELECT link FROM tabelle WHERE id = '$link_id' LIMIT 1";


Dann gibst du eine Weiterleitung auf den Link aus:


CODE header("Location: $link");


Ist jetzt vielleicht nicht ganz optimal, aber so gehts grundsätzlich
tongue.gif


Greats,

Stefan B.
 
Hi Stefan,

Vielen Dank!

Stimmt du hast Recht das ist eine Lösung.
biggrin.gif


Hat sonst noch jemand einen Vorschlag wie ich das noch einfacher lösen könnte?

So das gleich nach dem Link gecheckt wird ob er angeklickt wurde, damit einen UPDATE gemacht werden kann...?

Hier noch mal mein Code:

CODE
<a href="http://<?= $row['link']; ?>" target="_blank"><?= $row['link'] ?> <img src="images/link.gif" border="0">



Danke im voraus und Gruss
Simi
 
QUOTE Hat sonst noch jemand einen Vorschlag wie ich das noch einfacher lösen könnte?

So das gleich nach dem Link gecheckt wird ob er angeklickt wurde, damit einen UPDATE gemacht werden kann...?

Zu dem Weg den Stefan Bötschi geschildert hat wird in Kombination mit php und serverseitiger Verarbeitung keine große Alternative geben.
@Simi
Hast du denn einen Vorschlag, wie es einfacher gehen könnte, wo du schon nachhakst?


Grob umrissen wäre ein alternativer Weg eine Funktion, die bei onclick() ausgelöst wird und per XML-RPC an den Server sendet, welcher Link gerade aufgerufen wurde.

 
Hi Ansgar,

Ja hatte etwas was mit im Hinterkopf so rum schwebte.
biggrin.gif

Aber ich werde das genau so machen wie Stefan beschrieben hat.

Danke und nice Weekend.
Simi
 
QUOTE header("Location: $link");

Das ist typischer PHP-Frickelmist von Hobbyprogrammierern. Hier wird ein HTTP Status Code 302 zurückgegeben, der auch heute noch zu URL-Hijacking führen kann, ganz abgesehen davon, daß die Zielseite um eines Counters willen um einen ordentlichen Link gebracht wird. Wenn man schon in dieser Manier glaubt verlinken zu brauchen, muß dem Location wenigstens ein header("HTTP/1.1 301 Moved Permanently"); vorgestellt werden.

In der Tat gibt es onclick-Lösungen, welche aber naturgemäß nicht alle Klicks erfassen, dafür allerdings den Vorteil eines sauberen, direkten Links bieten. Man betrachte hierzu beispielsweise das HTML mancher Google-Suchergebnisse.
 
QUOTE (bull @ Do 16.2.2006, 8:41)
QUOTE header("Location: $link");

Das ist typischer PHP-Frickelmist von Hobbyprogrammierern ...

Hi,

Na ja, ich hab das ja nicht erfunden. Es ist doch wohl eher so, dass das in der Praxis relativ oft gemacht wird, obwohl das zum von dir angesprochenen URL-Hijacking führen kann. Viele Coder wissen entweder nix davon, oder sie tun es aus Mangel an bekannten Alternativen ...

Greats,

Stefan B.
 
Zurück
Oben