PROFUILAUFRUFE ZÄHLEN

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Mandy
Mitglied
Beiträge: 281
Registriert: 18.01.2003 15:44
Kontaktdaten:

Beitrag von Mandy »

nö, klappt auch nicht.

Ach dann lass es. Dann nehme ich diesen Link raus. Es reicht ja, wenn das Popup erscheint.
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5394
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Oder man auf sein Profil klickt und dann die Statistik aufruft. Ich hab den Navibar-Mod noch nicht gehabt, sieht aber gemäß Quelltext nicht so aus, als ob die Links grossartig Parameter-Werte übergeben können. Schade, aber es geht halt doch nicht alles :cry:

EDIT:
Du hattest ein paar Post weiter vorne folgendes für die Navibar gepostet:

Code: Alles auswählen

<option value="profile_view_user.php?u='.($userdata['user_id']).'&p='.($userdata['username']).'~">Profil-Besucher</option>
Klappt das so nicht mehr? Oder hattest Du den Link in der Navibar verändert?
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Benutzeravatar
oliver12345
Mitglied
Beiträge: 613
Registriert: 22.05.2003 16:58
Wohnort: Thale
Kontaktdaten:

Beitrag von oliver12345 »

Hi Leute,

kann mir bitte jemand von euch behilflich sein und den folgenden Code bereinigen, sodass nichts doppelt vorkommt oder dergleichen? Ich habe den Überblick verloren und mein Code funktioniert irgendwie nicht richtig.

Zur Erklärung:
Alle Daten sollen in die Tabelle "phpbb_profile_view" gespeichert werden.
Die User-ID in die Zeile "user_id".
Der Name des Users, der sich das Profil angesehen hat, in "viewername".
Dessen ID in "viewer_id".
Die Uhrzeit, wann er es aufgerufen hat, in "view_stamp".
Der aktuelle Zählstand in "counter".
Zusätzlich soll, bevor der Counter um 1 erhöht wird, durch die IP-Adresse kontrolliert werden, ob der User schon einmal auf dem Profil war (Zeile "ip_address"). Erst nach 86400 Sekunden (24 Stunden), wird der User erneut gezählt.

Was in der Tabelle "phpbb_users" bei den Zeilen "user_profile_view" und "user_last_profile_view" eingespeichert wird, kann ich nicht genau sagen, ihr werdet das aber sicher anhand des Codes erkennen. Wenn nicht, meldet euch ruhig, dann gebe ich euch die zwei Original-Codes, aus denen ich meinen Code zusammengestellt habe.
Jedenfalls kann das, was dort eingespeichert wird, so bleiben.

Code: Alles auswählen

// Profile Views MOD, By Manipe (Begin)
$current_time = time();
$delete_time = $current_time - 86400;

//
// Delete old entries
//
$sql = "DELETE FROM " . PROFILE_VIEW_TABLE . "
	WHERE view_stamp < '$delete_time'";
if ( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Could not update profile views', '', __LINE__, __FILE__, $sql);
}

//
// Find out if the same person has visited the same user profile
//
$sql = "SELECT ip_address
	FROM " . PROFILE_VIEW_TABLE . "
	WHERE ip_address = '$user_ip'
		AND user_id = '" . $profiledata['user_id'] . "'";
if ( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Could not update profile views', '', __LINE__, __FILE__, $sql);
}
$is_ip_there = $db->sql_fetchrow($result);
$db->sql_freeresult($result);

//
// If so, don't incriment the profile views counter
//
if ( empty($is_ip_there['ip_address'][0]))
{
	$sql = "INSERT INTO " . PROFILE_VIEW_TABLE . " (user_id, view_stamp, ip_address)
		VALUES ('" . $profiledata['user_id'] . "', '$current_time', '$user_ip')";
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not update profile views', '', __LINE__, __FILE__, $sql);
	}

	$sql = "UPDATE " . USERS_TABLE . "
		SET user_profile_view = user_profile_view + 1
		WHERE user_id = '" . $profiledata['user_id'] . "'";
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not update profile views', '', __LINE__, __FILE__, $sql);
	}
}

//
// Retrieve the number of views
//
$sql = "SELECT user_profile_view
	FROM " . USERS_TABLE . "
	WHERE user_id = " . $profiledata['user_id'];
if ( !($result = $db->sql_query($sql)) )
{
	message_die(GENERAL_ERROR, 'Could not retreive profile views', '', __LINE__, __FILE__, $sql);
}
$row = $db->sql_fetchrow($result);
$total_profile_views =  ( $row['counter'] ) ? $row['counter'] : 0;
$db->sql_freeresult($result);
// Profile Views MOD, By Manipe (End)

//
// Update the profile view list
//
$user = $profiledata['user_id'];
$viewer = addslashes($userdata['username']);
$viewer_id = $userdata['user_id'];
$current_time = time();
if ($user <> $viewer_id)
{
	$sql = "UPDATE " . USERS_TABLE . "
			SET user_profile_view = '1'
			WHERE user_id = " . $user. "";
		if ( !$db->sql_query($sql) )
		{
		   message_die(GENERAL_ERROR, "Could not update user data.", '', __LINE__, __FILE__, $sql);
		}

	$sql = "SELECT * FROM " . PROFILE_VIEW_TABLE . "
		WHERE user_id = " . $user . "
		AND viewer_id = " . $viewer_id;

	$sql = "SELECT ip_address
		FROM " . PROFILE_VIEW_TABLE . "
		WHERE ip_address = '$user_ip'
		AND user_id = '" . $profiledata['user_id'] . "'";
		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, 'Could not update profile views', '', __LINE__, __FILE__, $sql);
		}
		$is_ip_there = $db->sql_fetchrow($result);
		$db->sql_freeresult($result);

	if ( $result = $db->sql_query($sql) )
	{
		if ( !$row = $db->sql_fetchrow($result) )
		$sql = "INSERT INTO " . PROFILE_VIEW_TABLE . "
		   (user_id, viewername, viewer_id, view_stamp, counter)
		   VALUES ('$user', '$viewer', '$viewer_id', '$current_time', '1')";
		if ( !$db->sql_query($sql) )
		{
		   message_die(GENERAL_ERROR, "Could not insert profile views.", '', __LINE__, __FILE__, $sql);
		}
		else
		{
			$count = $row['counter'] + 1;
			$sql = "UPDATE " . PROFILE_VIEW_TABLE . "
					SET view_stamp = '$current_time', counter = '$count'
					WHERE user_id = " . $user. "
					AND viewer_id = " . $viewer_id;
			if ( !$db->sql_query($sql) )
			{
			   message_die(GENERAL_ERROR, "Could not update profile views.", '', __LINE__, __FILE__, $sql);
			}
		}
	}
}
Ich hoffe, dass vielleicht Oxpus helfen kann, denn teilweise ist Code von seinem "Who Viewed My Profile"-MOD dabei.
Vielen Dank für eure Hilfe!

MfG
oliver12345
ollis-page-online.de - Alles zum verrücktesten Huhn Deutschlands.
ollis-forum-online.de.vu - Das Forum zum Kulthuhn
Benutzeravatar
oliver12345
Mitglied
Beiträge: 613
Registriert: 22.05.2003 16:58
Wohnort: Thale
Kontaktdaten:

Beitrag von oliver12345 »

Kann niemand helfen? :(
ollis-page-online.de - Alles zum verrücktesten Huhn Deutschlands.
ollis-forum-online.de.vu - Das Forum zum Kulthuhn
Benutzeravatar
kratzer54847
Mitglied
Beiträge: 3065
Registriert: 20.01.2003 16:34
Wohnort: Düsseldorf/Hannover/Berlin
Kontaktdaten:

Beitrag von kratzer54847 »

wo nimmst du denn $user_ip her?
Knowledge Base | MOD Datenbank | Boardsuche | HTML | PHP

Durch die richtige Verwendung dieser Links können viele Fragen beantwortet werden ;-)
Benutzeravatar
oliver12345
Mitglied
Beiträge: 613
Registriert: 22.05.2003 16:58
Wohnort: Thale
Kontaktdaten:

Beitrag von oliver12345 »

@ kratzer54847

Gute Frage. :D Ich habe meinen Code aus diesen beiden MODs zusammengestellt:

Profile Views 1.1.1
Who viewed my Profile 1.5.4

Das mit der IP-Adresse stammt aus dem ersten MOD.
ollis-page-online.de - Alles zum verrücktesten Huhn Deutschlands.
ollis-forum-online.de.vu - Das Forum zum Kulthuhn
Benutzeravatar
kratzer54847
Mitglied
Beiträge: 3065
Registriert: 20.01.2003 16:34
Wohnort: Düsseldorf/Hannover/Berlin
Kontaktdaten:

Beitrag von kratzer54847 »

versuch mal vor den block

Code: Alles auswählen

$user_ip = $sessiondata['user_ip'];
zu setzen
Knowledge Base | MOD Datenbank | Boardsuche | HTML | PHP

Durch die richtige Verwendung dieser Links können viele Fragen beantwortet werden ;-)
Benutzeravatar
oliver12345
Mitglied
Beiträge: 613
Registriert: 22.05.2003 16:58
Wohnort: Thale
Kontaktdaten:

Beitrag von oliver12345 »

@ kratzer54847

Mit der IP-Adresse gab's ja bisher kein Problem. In die Tabelle " ip_address" wurde bei meinen Versuchen immer was eingetragen.
Das Problem liegt bei den Tabellen "viewername", "viewer_id" und "counter". Dort wird nichts eingetragen bzw. wird der Counterstand nicht erhöht. :-?
ollis-page-online.de - Alles zum verrücktesten Huhn Deutschlands.
ollis-forum-online.de.vu - Das Forum zum Kulthuhn
Benutzeravatar
kratzer54847
Mitglied
Beiträge: 3065
Registriert: 20.01.2003 16:34
Wohnort: Düsseldorf/Hannover/Berlin
Kontaktdaten:

Beitrag von kratzer54847 »

wenn diese Abfrage hier

Code: Alles auswählen

$sql = "SELECT ip_address 
   FROM " . PROFILE_VIEW_TABLE . " 
   WHERE ip_address = '$user_ip' 
      AND user_id = '" . $profiledata['user_id'] . "'";
aufgrund des eventuell fehlenden $user_ip-Wertes nicht funktioniert, kannst du dir den Rest auch schenken :roll:
Knowledge Base | MOD Datenbank | Boardsuche | HTML | PHP

Durch die richtige Verwendung dieser Links können viele Fragen beantwortet werden ;-)
Benutzeravatar
oliver12345
Mitglied
Beiträge: 613
Registriert: 22.05.2003 16:58
Wohnort: Thale
Kontaktdaten:

Beitrag von oliver12345 »

@ kratzer54847

Hmm, na gut, habe deinen Codeschnipsel hinzugefügt, aber nun wird nichts mehr in die Zeile "ip_address" eingetragen.

Wenn ich ein Profil aufrufe, enstehen in der DB zwei Zeilen. :-? Das soll aber nur eine sein. Hier mal ein Screenshot:

[ externes Bild ]

Meine usercp_viewprofile.php sieht derzeit so aus:
>> KLICK <<
ollis-page-online.de - Alles zum verrücktesten Huhn Deutschlands.
ollis-forum-online.de.vu - Das Forum zum Kulthuhn
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“