PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP für Fortgeschrittene und Experten (http://www.selfphp.de/forum/forumdisplay.php?f=13)
-   -   Links zählen - Problem mit While Schleife (http://www.selfphp.de/forum/showthread.php?t=19776)

Rick11 10.07.2008 09:53:34

Klicks zählen - Problem mit While Schleife
 
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

Code:

<?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 12:12:21

AW: Links zählen - Problem mit While Schleife
 
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 13:11:55

AW: Links zählen - Problem mit While Schleife
 
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 14:01:09

AW: Links zählen - Problem mit While Schleife
 
wenn man auf ein bild klickt wird eine neue seite aufgerufen, nehme ich mal an. Du kannst diese seitenaufrufe zaehlen.

Rick11 10.07.2008 14:02:16

AW: Links zählen - Problem mit While Schleife
 
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 14:15:05

AW: Links zählen - Problem mit While Schleife
 
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 15:03:23

AW: Links zählen - Problem mit While Schleife
 
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 19:05:57

AW: Links zählen - Problem mit While Schleife
 
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


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:46:55 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.