Seite 1 von 1

Probleme mit neuen PN's

Verfasst: 14.05.2006 06:10
von Chickeweck
Hallo,

ich hab ein neues Forum eingerichtet und Teile der alten Datenbank übernommen, auch die Tabellen für die privaten Nachrichten.

Doch wenn ich jetzt einem Benutzer eine Nachricht schreibe wird diese erst bei dem als neu angezeigt wenn ich im DB-Maintenance-MOD die Option "Prüfe Private Nachrichten-Tabellen" ausgeführt habe.

Nach dieser Prüfung kommt folgende Meldung:

Code: Alles auswählen

Aktualisiere Zähler für ungelesene Private Nachrichten

Aktualisiere Benutzer:

    * Aktualisiere Benutzer Flo (2)

Was könnte da nicht stimmen ? Wäre über Antwort sehr dankbar.

Verfasst: 14.05.2006 08:07
von Markus67
Hi ...

was hast du denn alles aus der alten DB übernommen bzw. was nicht?

Markus

Verfasst: 14.05.2006 16:54
von Chickeweck
Übernommen hab ich:

- auth_access
- categories
- forums
- groups
- posts
- posts_text
- privmsgs
- privmsgs_text
- ranks
- topics
- topics_watch
- user_group
- users
- vote_desc
- vote_results
- vote_voters


Joa, das dürfte alles sein was ich übernommen hab.

Es sei vielleicht noch zu erwähnen dass ich den Animated New Message Icon-MOD eingebaut habe, vielleicht könnte es damit zusammenhängen. Hier die Installationsanleitung.

Verfasst: 14.05.2006 17:12
von Markus67
Hi ...

verlinke mal bitte deine privmsgs.php als txt-Datei.

Markus

Verfasst: 14.05.2006 17:21
von Chickeweck

Verfasst: 14.05.2006 17:31
von Markus67
Hi ...

suche:

Code: Alles auswählen

$sql = "UPDATE " . USERS_TABLE . "
	SET user_unread_privmsg = " . $sql . ", user_new_privmsg = 0, user_last_privmsg = " . $userdata['session_start'] . " 
	WHERE user_id = " . $userdata['user_id'];
ersetze mit:

Code: Alles auswählen

// fix phpbb bug (user_unread_privmsg and user_new_privmsg are unreliable if > 0)
$check_total = $userdata['user_unread_privmsg'] + $userdata['user_new_privmsg'];
if ( $check_total )
{
	$sql = "SELECT COUNT(privmsgs_id) AS total 
		FROM " . PRIVMSGS_TABLE . " 
		WHERE privmsgs_to_userid = " . $userdata['user_id'] . "
		AND privmsgs_type = " . PRIVMSGS_UNREAD_MAIL;
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not query private message information', '', __LINE__, __FILE__, $sql);
	}
	$userdata['user_unread_privmsg'] = ( $row = $db->sql_fetchrow($result) ) ? $row['total'] : 0;

	$sql = "SELECT COUNT(privmsgs_id) AS total 
		FROM " . PRIVMSGS_TABLE . " 
		WHERE privmsgs_to_userid = " . $userdata['user_id'] . " 
		AND privmsgs_type = " . PRIVMSGS_NEW_MAIL;
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not query private message information', '', __LINE__, __FILE__, $sql);
	}
	$userdata['user_new_privmsg'] = ( $row = $db->sql_fetchrow($result) ) ? $row['total'] : 0;
}

$sql = $userdata['user_unread_privmsg'] + $userdata['user_new_privmsg'];
$sql = ( $check_total == $sql ) ? "user_unread_privmsg + user_new_privmsg" : $sql;
$sql = "UPDATE " . USERS_TABLE . "
	SET user_unread_privmsg = " . $sql . ", user_new_privmsg = 0, user_last_privmsg = " . $userdata['session_start'] . " 
	WHERE user_id = " . $userdata['user_id'];
suche:

Code: Alles auswählen

// fix phpbb bug (user_unread_privmsg and user_new_privmsg are unreliable if > 0)
$check_total = $userdata['user_unread_privmsg'] + $userdata['user_new_privmsg'];
if ( $check_total )
{
	$sql = "SELECT COUNT(privmsgs_id) AS total 
		FROM " . PRIVMSGS_TABLE . " 
		WHERE privmsgs_to_userid = " . $userdata['user_id'] . "
		AND privmsgs_type = " . PRIVMSGS_UNREAD_MAIL;
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not query private message information', '', __LINE__, __FILE__, $sql);
	}
	$userdata['user_unread_privmsg'] = ( $row = $db->sql_fetchrow($result) ) ? $row['total'] : 0;

	$sql = "SELECT COUNT(privmsgs_id) AS total 
		FROM " . PRIVMSGS_TABLE . " 
		WHERE privmsgs_to_userid = " . $userdata['user_id'] . " 
		AND privmsgs_type = " . PRIVMSGS_NEW_MAIL;
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, 'Could not query private message information', '', __LINE__, __FILE__, $sql);
	}
	$userdata['user_new_privmsg'] = ( $row = $db->sql_fetchrow($result) ) ? $row['total'] : 0;
}

$sql = $userdata['user_unread_privmsg'] + $userdata['user_new_privmsg'];
$sql = ( $check_total == $sql ) ? "user_unread_privmsg + user_new_privmsg" : $sql;
$sql = "UPDATE " . USERS_TABLE . "
	SET user_unread_privmsg = " . $sql . ", user_new_privmsg = 0, user_last_privmsg = " . $userdata['session_start'] . " 
	WHERE user_id = " . $userdata['user_id'];
ersetze mit:

Code: Alles auswählen

			$sql = "UPDATE " . USERS_TABLE . "
				SET user_new_privmsg = user_new_privmsg + 1, user_last_privmsg = " . time() . "  
				WHERE user_id = " . $to_userdata['user_id'];
Du hast beim Einbau die falsche Stelle erwischt :wink:

Markus

Verfasst: 14.05.2006 17:34
von Chickeweck
Ups...das ist jetzt wohl etwas peinlich :oops:

Tausend Dank, Markus :wink: