Seite 11 von 12

Verfasst: 30.09.2003 19:33
von Mandy
nö, klappt auch nicht.

Ach dann lass es. Dann nehme ich diesen Link raus. Es reicht ja, wenn das Popup erscheint.

Verfasst: 30.09.2003 19:37
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?

Verfasst: 28.07.2005 14:32
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

Verfasst: 31.07.2005 14:34
von oliver12345
Kann niemand helfen? :(

Verfasst: 31.07.2005 16:15
von kratzer54847
wo nimmst du denn $user_ip her?

Verfasst: 31.07.2005 16:42
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.

Verfasst: 31.07.2005 16:46
von kratzer54847
versuch mal vor den block

Code: Alles auswählen

$user_ip = $sessiondata['user_ip'];
zu setzen

Verfasst: 31.07.2005 17:04
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. :-?

Verfasst: 31.07.2005 17:06
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:

Verfasst: 31.07.2005 17:18
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 <<