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