webForumDet fria alternativet

"Nya inlägg/Inga nya inlägg" i forum.

PHP

0 svar · 185 visningar · startad av Rolsan

Medlem sedan juni 20061 inlägg
Frågan#1

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å.

256 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)