Thread Verfasser: Catzenjaeger
Thread ID: 892
Thread Info
Es gibt 10 Beiträge zu diesem Thema, und es wurde 3605 Mal angesehen.  Ausserdem wurden Dateien angehängt.
 Thema drucken
[doch nicht gelöst] Counter für klick auf Link
Catzenjaeger
Brauche mal kurz einen Denkanstoß:

ich würde gerne in meine Figurendatenbank einen Counter einbauen wie oft eine Figur angeklickt wurde.

Die Spalte in der Tabelle habe ich angelegt

Zitat: figure_clickcount int(10) unsigned NOT NULL DEFAULT '0',


speichern will ich das so:
Zitat: $clickresult = dbquery("UPDATE ".DB_FIGURE." SET figure_clickcount=figure_clickcount+1 WHERE figure_id='".$_GET['figure_id']."'");


wenn ich das ganze nun einbaue gehts noch nicht ...
es muss glaub ich hier an dies Stelle rein.. weiss es aber nicht so genau. Das müsste der Link sein wo die Figur angeklickt wird

Code 

echo "<a href='".FUSION_SELF."?figure_id=".$data['figure_id']."' class=''>\n<img src='".($data['figure_image'] ? IMAGES_FIGURE.$data['figure_image'] : INFUSIONS.$inf_folder."/images/default.png")."' alt='".trimlink($data['figure_title'],15)."' title='".trimlink($data['figure_title'],15)."' style='border:0px;max-height:100px;max-width:100px' />";
                  echo "<br /><br />\n";               
         
      
                  $resultmanufacturer = dbquery("SELECT * FROM ".DB_FIGURE." JOIN ".DB_FIGURE_MANUFACTURERS." ON figure_manufacturer = figure_manufacturer_id WHERE figure_id=".$data['figure_id']." ");
                     if (dbrows($resultmanufacturer)) {
                     while ($datamanufacturer = dbarray($resultmanufacturer)) {

                  echo "<strong>".$locale['figure_453']."".trimlink($datamanufacturer['figure_manufacturer_name'],15)."".$locale['figure_454']." <br>".trimlink($data['figure_title'],15)."</strong></a><br />\n";
                  $clickresult = dbquery("UPDATE ".DB_FIGURE." SET figure_clickcount=figure_clickcount+1 WHERE figure_id='".$_GET['figure_id']."'");
                        }
                     }      


Bearbeitet von Catzenjaeger am 20.05.2016 um 21:53
 
21Matze
so wie dein code ist kann nicht klappen

schaue dir mal die weblink.php oder downloads.php
im tutorialsystem
da sind counter funktion eingebaut

da ich nicht weiß wie datenbank struktur der infusion ist weiß ich nicht wie ich den code schreiben soll so das es geht.
 
Catzenjaeger
hmn habemal versucht das nachzubauen allerdigns gehts noch nicht


Zitat:  //CLICKCOUNT FÜR FIGUR
if (isset($_GET['figure_id']) && isnum($_GET['figure_id'])) {
$res = 0;
$data = dbarray(dbquery("SELECT figure_clickcount FROM ".DB_FIGURE." WHERE figure_id='".intval($_GET['figure_id'])."'"));
if (checkgroup($cdata['figure_cat_access'])) {
$res = 1;
dbquery("UPDATE ".DB_FIGURE." SET figure_clickcount=figure_clickcount+1 WHERE figure_id='".intval($_GET['figure_id'])."'");
redirect($data['figure_url']);
} else {
redirect(FUSION_SELF);
}
}


cdata ist schon weiter oben im file in verwendugn daran sollte es nicht leigen. Hier der Orgninalcode aus der weblink.php

Zitat: if (isset($_GET['weblink_id']) && isnum($_GET['weblink_id'])) {
$res = 0;
$data = dbarray(dbquery("SELECT weblink_url,weblink_cat, weblink_visibility FROM ".DB_WEBLINKS." WHERE weblink_id='".intval($_GET['weblink_id'])."'"));
if (checkgroup($data['weblink_visibility'])) {
$res = 1;
dbquery("UPDATE ".DB_WEBLINKS." SET weblink_count=weblink_count+1 WHERE weblink_id='".intval($_GET['weblink_id'])."'");
redirect($data['weblink_url']);
} else {
redirect(FUSION_SELF);
}

Bearbeitet von Catzenjaeger am 20.05.2016 um 08:59
 
Wemi
Und was geht nicht?
Fehlermeldung?

Hast du denn auch die Berechtigung, diese Figurenkategorie zu sehen? (Also in der Gruppe)

Wie sieht die Internetadresse in der Adresszeile des Browsers aus, wenn du auf den Link geklickt hast?
"Es geht hier um die Frage, ob die Menschheit ohne Religion besser dastünde. Und ich sagte: ja" Ben Moore
 
Catzenjaeger
Und was geht nicht? -> wird nichts in die DB geschrieben - feld ist leer
Fehlermeldung? --> keine fehlermeldung

Hast du denn auch die Berechtigung, diese Figurenkategorie zu sehen? (Also in der Gruppe)--> ja alles ist sichtbar

Wie sieht die Internetadresse in der Adresszeile des Browsers aus, wenn du auf den Link geklickt hast? --> hmnn so wie immer Smile http://aliencollectors.com/site/infusions/figurelib/figure.php?cat_id=3

habe ich das an der falschen Stelle eingebaut?

Im Anhang nochmal die ganze figure.php
Catzenjaeger hat folgende Datei angehängt:
Du hast nicht die Berechtigung die Anhäge dieses Themas zu sehen.
 
Wemi
Deinem Link fehlt etwas.

Und zwar &action=download

Erst dann kann er zählen, natürlich auch nur wenn er die Datei auch Downloaden darf.
"Es geht hier um die Frage, ob die Menschheit ohne Religion besser dastünde. Und ich sagte: ja" Ben Moore
 
Catzenjaeger
na download will ich ja nicht sondern nur wie oft einen figur angeklickt wurde. Ist das machbar?

Was müsste dann geändert werden? Ich gin davon aus , dass die Weblis auch so gezählt werden wie oft die geklickt werden. Genau so wollte ich das für die figuren.
 
Wemi
Dann müsste dein Code zwischen den beiden Zeilen stehen.

Code 

$data = dbarray($result);
         if (checkgroup($data['figure_cat_access'])) {


"Es geht hier um die Frage, ob die Menschheit ohne Religion besser dastünde. Und ich sagte: ja" Ben Moore
 
Catzenjaeger
also ich habs in Zeile 74 eingefügt und bekomme jetzt das hier:

Zitat: Fehler: Umleitungsfehler
Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann. Dieses Problem kann manchmal auftreten, wenn Cookies deaktiviert oder abgelehnt werden.


aber ich sehe gerade ... es sind 21 klicks in der DB. Aso soeichert er wohl was

uPDATE.

Wenn ichdas redirect raushaue gehts wohl

Zitat:  if (isset($_GET['figure_id']) && isnum($_GET['figure_id'])) {
$res = 0;
$data = dbarray(dbquery("SELECT figure_clickcount FROM ".DB_FIGURE." WHERE figure_id='".intval($_GET['figure_id'])."'"));
if (checkgroup($cdata['figure_cat_access'])) {
$res = 1;
dbquery("UPDATE ".DB_FIGURE." SET figure_clickcount=figure_clickcount+1 WHERE figure_id='".intval($_GET['figure_id'])."'");
//redirect($data['figure_url']);
} else {
redirect(FUSION_SELF);
}
}


ist das prgrammiertechnisch so ok oder muss ich das noch ändern?
Bearbeitet von Catzenjaeger am 20.05.2016 um 12:03
 
Wemi
Ja, nach 21 redirects wurde das Script abgebrochen.

Lösche einfach folgende Zeile

Code 

redirect($data['figure_url']);



Denn damit setzt du ja eine Schleife, die nie beendet werden kann, weil er ja immer wieder da hin gelangt.
"Es geht hier um die Frage, ob die Menschheit ohne Religion besser dastünde. Und ich sagte: ja" Ben Moore
 
Springe ins Forum: