Har aldrig hört om webforum.nu innan, och läste runt lite idag. Ett mycket kompetent forum måste jag säga.
Har ett problem, relaterat till både PHP och MySQL. Knåpar på ett forum och har lite problem med indikering av "Nya inlägg". Det fungerar ibland, men oftast inte. Om det finns nya inlägg i en tråd i ett forum visar den inte alltid det.
<?php
function new_forum_posts ( $forum_check_type, $forum_user_id, $forum_item_id, $forum_thread_id ) {
$NO_NEW_POSTS = (int)0;
$NEW_POSTS = (int)1;
if ( $forum_check_type == 1 ) {
# if USR_ID bigger than 0
if ($forum_user_id > 0) {
$sql = "SELECT
sys_forum_threads.sys_last_post_time,
sys_forum_views.sys_visit_time
FROM
sys_forum_threads,
sys_forum_views
WHERE
sys_forum_threads.cat_id = %d
AND
sys_forum_views.sys_cat_id = %d
AND
sys_forum_views.sys_user_id = %d
AND
sys_forum_threads.id = sys_forum_views.sys_thread_id
AND
sys_forum_threads.sys_last_post_time > sys_forum_views.sys_visit_time
LIMIT 1";
$values = array(0 => $forum_item_id, $forum_item_id, $forum_user_id);
$do = mysql_query( vsprintf($sql, $values) ) or exit(mysql_error());
if (mysql_num_rows($do) == 1) {
return $NEW_POSTS;
} else {
return $NO_NEW_POSTS;
}
# else show no new posts
} else {
return $NO_NEW_POSTS;
}
} elseif ( $forum_check_type == 2 ) {
# if USR_ID bigger than 0
if ($forum_user_id > 0) {
# fetch sys_last_post_time from sys_forum_threads
$sys_last_post_time = mysql_query( sprintf("SELECT sys_last_post_time FROM sys_forum_threads WHERE id = %d LIMIT 1", $forum_thread_id) );
# if there is a last post time
if (mysql_num_rows($sys_last_post_time) > 0) {
$sys_visit_time = mysql_query( sprintf("SELECT sys_visit_time FROM sys_forum_views WHERE sys_thread_id = %d AND sys_user_id = %d LIMIT 1", $forum_thread_id, $forum_user_id) );
# if USR_ID have readen the thread
if (mysql_num_rows($sys_visit_time) > 0) {
# if last post was posted later than the last view
if (mysql_result($sys_last_post_time, 0, "sys_last_post_time") > mysql_result($sys_visit_time, 0, "sys_visit_time")) {
return $NEW_POSTS;
# else show no new posts
} else {
return $NO_NEW_POSTS;
}
# else show new posts
} else {
return $NEW_POSTS;
}
# else show no new posts
} else {
return $NO_NEW_POSTS;
}
# else show no new posts
} else {
return $NO_NEW_POSTS;
}
}
}
?>
Anta att $forum_check_type innehåller integern 1. Den andra delen av funktionen fungerar utan problem.
Jag vet inte riktigt om problemet ligger i SQL-frågan eller i själva PHPn.
*$forum_item_id = kategoriID
$forum_user_id = användarID
* sys_forum_threads.sys_last_post_time = UNIX TIMESTAMP som uppdateras när någon svarar i tråden eller när tråden skapas.
* sys_forum_views.sys_visit_time = UNIX TIMESTAMP som läggs till / uppdateras när användaren går in i tråden.
* sys_forum_threads.cat_id = kategoriID
* sys_forum_views.sys_cat_id = kategoriID
* sys_forum_views.sys_user_id = användarID*
Tacksam för hjälp. tar gärna emot övriga synpunkter på kodupplägget också.