PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Links zählen - Problem mit While Schleife


Rick11
10.07.2008, 08:53:34
Hallo. Ich bin neu im Forum und schreibe einfach mal mein Problem hier rein.

Also.. ich habe eine kleine Seite gemacht, auf der man Bilder uploaden/betrachten/bewerten und kommentieren kann. Ich bin auch auf die Idee gekommen, die Klicks in den Galleries zu zählen.
Dabei habe ich aber ein Problem. Ich lese alle Bilder, Kommentare, Wertung und die Klicks mit einer While Schleife aus der Datenbank aus und stelle sie dar. Das funktioniert auch alles.
Jedoch habe ich ein Problem beim Zählen der Klicks. In gewisser Weise funktioniert es schon. Wenn ich auf ein Bild klicke, wird der um 1 erhöhte Wert in die Datenbank gespeichert. Leider habe ich jetzt das Problem, das jeder Klick bei jedem Bild in der jeweiligen Gallery in die Datenbank gespeichert wird. Sprich: Ich klicke 1x, gespeichert wird es aber bei jedem Bild. Ich nehme an, der Fehler tritt auf Grund der while-Schleife auf.
Was vielleicht noch zu erwähnen ist, dass ich die Bilder mit einer Lightbox darstelle.

hier ist der Link zu der Testseite, an der ich Arbeite:
http://www.fotorama.net.tf/galleries/gallerie_tiere.php


<?php
// function, um die Klicks zu zählen
function update_klick($bild_thumb) {
mysql_query("UPDATE fotorama_bildername SET klicks = klicks + 1 WHERE id = '".mysql_real_escape_string($bild_thumb)."'");
}
//ENDE der function


//Auslesen der Bilder aus der Datenbank
include '../connect.inc.php';
$sql = 'SELECT id, kategorie, bildname, bild_thumb, bewertung, kommentar, klicks FROM fotorama_bildername WHERE kategorie="tiere" ORDER BY id DESC';
$res = mysql_query($sql);
if($res) {
$i=2;
while(list($id, $kategorie, $bildname, $bild_thumb, $bewertung, $kommentar, $klicks) = mysql_fetch_row($res) ) {

echo "
<table align='center' width='500' border='0'>
<tr>
<th scope='row' width='200'><a href='../bildupload/fotos/$bildname' rel='lightbox[next_button]' target=''";

update_klick($id); //Hier wird die oben platzierte Funktion aufgerufen, mit dem id Wert in der Tabelle

echo "'><img src='../bildupload/fotos/$bild_thumb' width=160 height=121 alt='Pic#&nbsp;$id' title='Pic#&nbsp;$id' border='1'/></a></th>";




Bitte kann mir jemand Helfen, dieses Problem zu lösen? Ich kämpfe verzweifelt =(..

Dankeschön.
lg

Gweilo
10.07.2008, 11:12:21
warum speicherst du "klicks" beim darstellen der bilder?
deine schleife erhoeht klick um eins fuer jedes bild das dargestellt wird.

Was du vermutlich willst ist zaehlen beim aufrufen der neuen seite.

Rick11
10.07.2008, 12:11:55
ahhh .. stimmt.

das war ein totaler Denkfehler.. danke!!

Ich hab das gar nicht bemerkt, weil ich auf ein bild geklickt habe - danach aktualisiert und es war um 1 höher.

Mein Ziel wäre es, jedes Mal wenn jemand auf ein Bild klickt, diesen Klick zu speichern. Weißt du vielleicht wie ich das richtig hinbekommen könnte?

lg und nochmal danke.

Gweilo
10.07.2008, 13:01:09
wenn man auf ein bild klickt wird eine neue seite aufgerufen, nehme ich mal an. Du kannst diese seitenaufrufe zaehlen.

Rick11
10.07.2008, 13:02:16
Hallo. Ich hab jetzt auch versucht, eine externe Datei einzubinden, die aufgerufen wird sobald man auf einen Link klickt. Aber leider hab ich wieder dasselbe Ergebnis bekommen.

Kann mir jemand helfen?
Wo muss ich mein Script einbauen, damit nicht immer alle Links erhöht werden?

Google hat mir dieses mal leider auch nicht geholfen..

lg

Rick11
10.07.2008, 13:15:05
Ehm.. es funktioniert so.

Wenn ich auf ein Bild klicke, wird eine Lightbox aufgerufen, die das Bild darstellt. Keine neue Seite. Ich hab versucht in diesen Link meinen Script einzubauen.

Das ist aber der gleiche Link, der im Teil des Codes ist, der die Bilder darstellt.

Du hast mir vorher schon gesagt, dass ich mein Script dort nicht einbauen darf, was auch als logisch erscheint. Aber ich weiß einfach nicht wo ich es einbauen soll.

mfg

Gweilo
10.07.2008, 14:03:23
Na, du oeffnest ja via JavaScript eine Ansicht des bildes. dies geschieht alles auf dem Browser. Woher soll denn PHP (laeuft auf dem server) davon wissen?

Du musst das dem server irgendwo mitteilen wenn du das genau zaehlen willst.

moegliche loesungen
- via AJAX eine anfrage an den server senden welches den zaehler inkrementiert
- in den server logs zaehlen wie oft ein bild aufgerufen wurde (nicht so toll)
- den Bildaufruf selbst von PHP aus initiieren (da sollte man auf caching achten) und dann zaehlen. Ausserdem sollte man ein apache redirect erstellen, so dass die endungen stimmen.

am einfachsten ist die erste variante. Ich habe aber keine zeit das genauer zu erklaeren, vielleicht hilft dir sonst jemand (aka google) weiter.

Rick11
10.07.2008, 18:05:57
Hallo. Danke für deine Antwort.

Leider habe ich sehr wenig bis gar keine Ahnung von Ajax, da ich es noch nie benötigt habe.

Vielleicht hat jemand ein gutes Tutorial dafür oder kann mir genau erklären, wie ich mein Problem lösen kann. Danke.

MfG