User nur 1mal zählen

oldputz1990

Erfahrenes Mitglied
Hallo!

Ich habe jetzt einen Counter gebastelt.
(nur für eingeloggte User sichtbar!)

Ich möchte aber, dass der Counter bei jedem User nur 1mal zählt.

Ich habe schon überlegt, einfach in der Datenbank ein Feld zu machen (text) wo ich alle user die schon geklickt haben reinzuschreiben, mit Beistrich trennen, und später überprüfen, ob der User schon dabei ist.

Oder gibt es da eine andere Möglichkeit?

Danke!
 
Ich würde eine neue Tabelle erstellen, da Datensatz enorm groß werden kann, um so mehr User auf das Objekt klicken. Das ist sicherlich kein Problem, jedoch wird die Verarbeitung (String auslesen, Existenz der ID im String prüfen ...) bei großen Datensätzen immer langsamer werden.
 
Zuletzt bearbeitet:
Ja, da muss ich soyo voll und ganz rechtgeben. Was möchst du denn Counten?

Generell ist es wohl am einfachsten eine Datenbank mit 2 Feldern zu machen, über beide den Primary-Key zu legen und das eine Feld 'User-ID' und das andere 'count-ort' oder so. Wenn mehrere Counter für verschiedene Dinge existieren sollen. Und dann einfach ein Insert darauf machen wenn noch nicht vorhanden. Vielleicht kannst du in der Session auch noch speichern das er nicht nochmal dieses Event Countern soll um die Datenbank zu entlasen.
 
Das ganze ist für eine bildergallery.

Die Views des Bildes sollen gezählt werden.


Also: Neue Tabelle, und für jeden User einen eigenen Datensatz erstellen?
 
Also "views" sind einfach nur "clicks" - daher wäre es schon richtig pro Klick den Counter zu erhöhen. Sonst bleibt nur zu prüfen, wer (wann) was geklickt hat.
 
Dann mach eine Tabelle wie oben erwähnt "bild_id" und "user_id" Wenn jeder User wirklich nur einmal gezählt werden soll. Auch wenn ich unter solchen clicks auch eher jegliche klicks zählen würde.

Aber du kannst ja vielleicht beides abspeichern. Ist vielleicht auch ganz intressant zu sehen wieviele der angemeldeten user darauf waren, und wie oft es im vergleich dazu aufgerufen wurde.
 
Mach doch eher nen Vote-System. Pro Bild wird der Durchschnitt berechnet und fertig ist die Laube ^^
 
Re: AW: User nur 1mal zählen

Mach doch eher nen Vote-System. Pro Bild wird der Durchschnitt berechnet und fertig ist die Laube ^^

hmm.. der Durchschnitt von was?


*grrr*

Habe das gerade gemacht:
PHP:
// VIEWS

$views_userid = $id_aktuell;
$views_albumid = $album;
$views_bildid= $bild;


$views_num = 
mysql_num_rows(
				mysql_query(
						"SELECT 
								`userid`, `albumid`, `bildid` 
						FROM 
								`views` 
						WHERE 
								`userid` = '$views_userid' 
								AND
								`albumid` = '$views_albumid' 
								AND
								`bildid` = '$views_bildid'"
							)
				) OR DIE(mysql_error());
				
				
if($views_num == 0)
	{
		$insert = mysql_query("INSERT INTO `views` (`userid`, `albumid`, `bildid`) VALUES ('$views_userid', '$views_albumid', '$views_bildid')")
		OR DIE(mysql_error());
	}

Aber irgentwie wird dann "ab und zu" alles weiß, dann wieder nicht...

Ist da ein Fehler drinnen?

Ich halts nicht aus...
 
Zuletzt bearbeitet:
Er meint ein Bewertungs-System, auch Vote-System genannt. Fragt sich nur wie dir das bei deinem Vorhaben helfen soll :suspekt:.

Ich würde eine Tabelle erstellen welche ungefähr so aussieht:

pictureID | userID

Wenn nun ein User sich das Bild ansieht, wird seine entsprechende Benutzer-Kennung(userID) zu der der passenden Bild-Nummer(pictureID) in der Datenbank mit einem neuen Datensatz hinterlegt. Sofern er sich das Bild noch nicht angeschaut hat.

Wie du nun deinen Zähler gestaltest sei dir überlassen. Ob du nun alle Einträge die für ein Bild bestimmt sind in der o.g. Tabelle zählst oder du die Klicks in der entsprechenden Datenbank-Tabelle ständig erhöhst(sobald ein noch nicht hinterlegter User auf das Bild klickt) und dann einfach ausliest ist relativ egal. Die 2. Variante ist sicherlich die Zeit-/ und Resourcenschonendere Variante.


Gruß soyo
 
Zuletzt bearbeitet:
Zurück