Snitz Forums 2000
Snitz Forums 2000
Home | Profile | Register | Active Topics | Members | Search | FAQ
Username:
Password:
Save Password
Forgot your Password?

 All Forums
 Snitz Forums 2000 MOD-Group
 MOD Add-On Forum (W/O Code)
 Showing counts on non forum pages
 New Topic  Reply to Topic
 Printer Friendly
Next Page
Author Previous Topic Topic Next Topic
Page: of 2

Lon2
Junior Member

USA
151 Posts

Posted - 05 November 2010 :  15:37:45  Show Profile  Reply with Quote
I searched first but I'm not sure if I'm using the correct terminology. I want to show some counts, like members, topics, etc on a different pages that are not the forum. Do I need to add server includes and what would I use to get totals? Thanks!

Carefree
Advanced Member

Philippines
4207 Posts

Posted - 06 November 2010 :  03:19:13  Show Profile  Reply with Quote
Yes, you'll need to use includes. Depending on exactly what counts you desire, the SQL string(s) will be different.

I created a page with a variety of counts:

  • Members
  • Active (or moderated) topics
  • Active (or moderated) topics within a specified forum
  • Active (or moderated) replies
  • Active members signed in
  • Guests
  • Active auction items
  • Polls
  • Quizzes
  • Recipes
  • Shared Photos


In lines 42-43, you will have to change the "(forumpath)" to reflect your actual forum path: using Snitz for example, you only need the forum/ portion following the ".com/" part of the URL.

Other than that mentioned above, you don't have to change any code to use these. All you need is to create the output where you want them displayed. Samples are provided.


<%
'###############################################################################
'##
'##			Snitz Forums 2000 v3.4.07
'##
'###############################################################################
'##
'## Copyright © 2000-06 Michael Anderson, Pierre Gorissen,
'##			Huw Reddick and Richard Kinser
'##
'## This program is free. You can redistribute and/or modify it under the
'## terms of the GNU General Public License as published by the Free Software
'## Foundation; either version 2 or (at your option) any later version.
'##
'## All copyright notices regarding Snitz Forums 2000 must remain intact in
'## the scripts and in the HTML output.	The "powered by" text/logo with a
'## link back to http://forum.snitz.com in the footer of the pages MUST
'## remain visible when the pages are viewed on the internet or intranet.
'##
'## This program is distributed in the hope that it will be useful but
'## WITHOUT ANY WARRANTY; without even an implied warranty of MERCHANTABILITY
'## or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
'## for more details.
'##
'## You should have received a copy of the GNU General Public License along
'## with this program; if not, write to:
'##
'##			Free Software Foundation, Inc.
'##			59 Temple Place, Suite 330
'##			Boston, MA 02111-1307
'##
'## Support can be obtained from our support forums at:
'##
'##			http://forum.snitz.com
'##
'## Correspondence and marketing questions can be sent to:
'##
'##			manderson@snitz.com
'##
'###############################################################################
%>
<!--#INCLUDE VIRTUAL="(forumpath)/config.asp"-->
<!--#INCLUDE VIRTUAL="(forumpath)/inc_func_common.asp"-->
<%
dim intMembers, intTopics, intReplies, intMessages
dim intActiveMembers, intGuests, intAuctionItems, intForumTopics
dim intPolls, intQuizzes, intRecipes, intPhotos
set my_Conn = Server.CreateObject("ADODB.Connection")
my_Conn.Open(strConnString)
'	##	Obtain counts
strSql = "SELECT COUNT(MEMBER_ID) AS CNT FROM " & strMemberTablePrefix & "MEMBERS WHERE M_STATUS=1"
set rsCount = my_Conn.Execute(strSql)
if not rsCount.EOF then
	intMembers=rsCount("CNT")
	rsCount.Close
end if
set rsCount = Nothing
strSql = "SELECT COUNT(TOPIC_ID) AS CNT FROM " & strTablePrefix & "TOPICS WHERE T_STATUS=1"
set rsCount = my_Conn.Execute(strSql)
if not rsCount.EOF then
	intTopics=rsCount("CNT")
	rsCount.Close
end if
set rsCount = Nothing
strSql = "SELECT COUNT(REPLY_ID) AS CNT FROM " & strTablePrefix & "REPLY WHERE R_STATUS=1"
set rsCount = my_Conn.Execute(strSql)
if not rsCount.EOF then
	intReplies=rsCount("CNT")
	rsCount.Close
end if
set rsCount = Nothing
'	##	Sum of (Topics and Replies) to get total active posts
intMessages = intTopics+intReplies
'	##	Detect presence of active users table and total active users online
if TableExists(strTablePrefix & "ACTIVE_USERS") then
	'	##	Table exists, get count
	strSql = "SELECT COUNT(MEMBER_ID) AS CNT FROM " & strTablePrefix & "ACTIVE_USERS WHERE MEMBER_ID > 0"
	set rsCount = my_Conn.Execute(strSql)
	if not rsCount.EOF then
		intActiveMembers=rsCount("CNT")
		rsCount.Close
	end if
	set rsCount = Nothing
	strSql = "SELECT COUNT(MEMBER_ID) AS CNT FROM " & strTablePrefix & "ACTIVE_USERS WHERE MEMBER_ID < 1"
	set rsCount = my_Conn.Execute(strSql)
	if not rsCount.EOF then
		intGuests=rsCount("CNT")
		rsCount.Close
	end if
	set rsCount = Nothing
end if
'	##	Detect presence of auction table and total active auction items
if TableExists(strTablePrefix & "AUCTIONITEMS") then
	'	##	Table exists, get count
	strSql = "SELECT COUNT(AUCTIONID) AS CNT FROM " & strTablePrefix & "AUCTIONITEMS WHERE ENDDATE > '" & DateToStr(strForumTimeAdjust) & "'"
	set rsCount = my_Conn.Execute(strSql)
	if not rsCount.EOF then
		intAuctionItems=rsCount("CNT")
		rsCount.Close
	end if
	set rsCount = Nothing
end if	
'	##	Detect presence of polls table and total polls
if TableExists(strTablePrefix & "POLLS") then
	'	##	Table exists, get count
	strSql = "SELECT COUNT(POLL_ID) AS CNT FROM " & strTablePrefix & "POLLS"
	set rsCount = my_Conn.Execute(strSql)
	if not rsCount.EOF then
		intPolls=rsCount("CNT")
		rsCount.Close
	end if
	set rsCount = Nothing
end if	
'	##	Detect presence of quiz table and total quizzes
if TableExists(strTablePrefix & "QUIZ") then
	'	##	Table exists, get count
	strSql = "SELECT COUNT(QUIZ_ID) AS CNT FROM " & strTablePrefix & "QUIZ WHERE Q_STATUS=1"
	set rsCount = my_Conn.Execute(strSql)
	if not rsCount.EOF then
		intQuizzes=rsCount("CNT")
		rsCount.Close
	end if
	set rsCount = Nothing
end if	
'	##	Detect presence of recipe table and total recipes
if TableExists(strTablePrefix & "RECIPE") then
	'	##	Table exists, get count
	strSql = "SELECT COUNT(RECIPE_ID) AS CNT FROM " & strTablePrefix & "RECIPE"
	set rsCount = my_Conn.Execute(strSql)
	if not rsCount.EOF then
		intRecipes=rsCount("CNT")
		rsCount.Close
	end if
	set rsCount = Nothing
end if	
'	##	Detect presence of album table and total photos
if TableExists(strTablePrefix & "ALBUM") then
	'	##	Table exists, get count
	strSql = "SELECT COUNT(PHOTO_ID) AS CNT FROM " & strTablePrefix & "ALBUM WHERE PHOTO_STATUS=1"
	set rsCount = my_Conn.Execute(strSql)
	if not rsCount.EOF then
		intPhotos=rsCount("CNT")
		rsCount.Close
	end if
	set rsCount = Nothing
end if


'	##	List of counts collected:
'	##
'	##	intMembers      =	Total members
'	##	intTopics       =	Total active (or moderated) topics
'	##	intForumTopics  =	Total active (or moderated) topics in a specified forum
'	##	intReplies      =	Total active (or moderated) replies
'	##	intMessages     =	Total active (or moderated) topics + replies
'	##	intActiveMembers=	Total active members signed in
'	##	intGuests       =	Total guests online
'	##	intAuctionItems =	Total active auction items
'	##	intPolls        =	Total polls
'	##	intQuizzes      =	Total quizzes
'	##	intRecipes      =	Total recipes
'	##	intPhotos       =	Total shared photos in albums
'	##
'	##	To display values using html, include them within < % and  % > (delete spaces), thus:
'	##	Total Members Online:  < %intMembers% > (delete spaces)
'	##
'	##	To display values using asp, follow this example:
'	##	Response.Write	"Total Members Online: " & intMembers
'	##
'	##	To obtain quantity of topics in any given forum, use:
'	##	Call TopicsInForum(1) - where "1" = Forum ID number

my_Conn.Close
set my_Conn = Nothing


Sub TopicsInForum(intForumID)
	'	##	Total Topics in a Particular Forum
	intForumTopics = 0
	strSql = "SELECT COUNT(TOPIC_ID) AS CNT FROM " & strTablePrefix & "TOPICS WHERE T_STATUS=1 AND FORUM_ID=" & intForumID
	set rsCount = my_Conn.Execute(strSql)
	if not rsCount.EOF then
		intForumTopics=rsCount("CNT")
		rsCount.Close
	end if
	set rsCount = Nothing
End Sub

Function TableExists(tabletoFind)
	TableExists = False
	set adoxConn = CreateObject("ADOX.Catalog")
	set adodbConn = Server.CreateObject("ADODB.Connection")
	adodbConn.open(strConnString)
	adoxConn.activeConnection = adodbConn
	isthere = false
	for each table in adoxConn.tables
		if lcase(table.name) = lcase(tabletoFind) then
			isthere = true
			exit for
		end if
	next
	adodbConn.close
	set adodbConn = nothing
	set adoxConn = nothing
	if isthere then TableExists = True
End Function
%>

Edited by - Carefree on 06 November 2010 13:52:29
Go to Top of Page

Carefree
Advanced Member

Philippines
4207 Posts

Posted - 06 November 2010 :  13:44:54  Show Profile  Reply with Quote
See above.
Go to Top of Page

Lon2
Junior Member

USA
151 Posts

Posted - 06 November 2010 :  16:32:39  Show Profile  Reply with Quote
Does anyone have a simple script for this?

Edited by - Lon2 on 06 November 2010 17:03:37
Go to Top of Page

Carefree
Advanced Member

Philippines
4207 Posts

Posted - 06 November 2010 :  16:33:03  Show Profile  Reply with Quote

<!--#INCLUDE VIRTUAL="/forums/config.asp"-->
<!--#INCLUDE VIRTUAL="/forums/inc_func_common.asp"-->
<%
dim intTopics
set my_Conn = Server.CreateObject("ADODB.Connection")
my_Conn.Open(strConnString)
strSql = "SELECT COUNT(TOPIC_ID) AS CNT FROM " & strTablePrefix & "TOPICS WHERE T_STATUS = 1 AND FORUM_ID < 4"
set rsCount = my_Conn.Execute(strSql)
if not rsCount.EOF then
	intTopics=rsCount("CNT")
	rsCount.Close
end if
set rsCount = Nothing
Response.Write	"Total Topics: " & intTopics
my_Conn.Close
set my_Conn = Nothing
%>
Go to Top of Page

Lon2
Junior Member

USA
151 Posts

Posted - 06 November 2010 :  16:44:29  Show Profile  Reply with Quote
I appologize but I'm somewhat of a newbie. I am able to get your suggestion to work on a page all by itself with just one forum ID count but not on an HTML page with head and body tags. I would like to put a forum name with quantities on another page. For example: "Our Animal forum currently has X Topics" I'm not sure how to do this.

Would I create the script above for every Forum ID I want to get counts for or is there a way to call out individual forum counts without reusing the script for every forum ID?

I appreciate your help on this!

Edited by - Lon2 on 06 November 2010 18:06:19
Go to Top of Page

Carefree
Advanced Member

Philippines
4207 Posts

Posted - 06 November 2010 :  18:45:21  Show Profile  Reply with Quote
That last script was specifically for the group of forums you had mentioned (1-3). If you want to get a variety, you'd be better off using the method I posted in my first reply. Then it would be as simple as "Call TopicsInForum(Forum_ID)", followed with
Response.Write intForumTopics
. I'll make you a sample web page with this included so you can see how it's done.

Edited by - Carefree on 06 November 2010 18:46:24
Go to Top of Page

Lon2
Junior Member

USA
151 Posts

Posted - 06 November 2010 :  19:09:42  Show Profile  Reply with Quote
For clarification, I would like to show individual counts for each forum. For example:

Animals - 56 Topics
Mammals - 37 Topics
Reptiles - 9 Topics

Not the 3 combined.

I appreciate your patience with me!

Edited by - Lon2 on 06 November 2010 19:10:40
Go to Top of Page

Carefree
Advanced Member

Philippines
4207 Posts

Posted - 06 November 2010 :  19:12:01  Show Profile  Reply with Quote
Here you go: html version. I left the routine to get members because you mentioned that earlier. Notice the lines 20-21

		intForumID=1
		Call TopicsInForum(intForumID)

That's how you can retrieve information for different forums on demand. Copy those two lines where you want the output, and just change the forum number to the forum you want shown.

For example, to get output for forums 1 & 2, change lines 20-21 to say:


		intForumID=1
		Call TopicsInForum(intForumID)
		intForumID=2
		Call TopicsInForum(intForumID)




<html>
	<head>
		<title>Title Here</title>
	</head>
	<body>
		<!--#INCLUDE VIRTUAL="(forumpath)/config.asp"-->
		<!--#INCLUDE VIRTUAL="(forumpath)/inc_func_common.asp"-->
		<%
		dim intMembers, intTopics, intForumID
		set my_Conn = Server.CreateObject("ADODB.Connection")
		my_Conn.Open(strConnString)
		strSql = "SELECT COUNT(MEMBER_ID) AS CNT FROM " & strMemberTablePrefix & "MEMBERS WHERE M_STATUS=1"
		set rsCount = my_Conn.Execute(strSql)
		if not rsCount.EOF then
			intMembers=rsCount("CNT")
			rsCount.Close
		end if
		set rsCount = Nothing

		intForumID=1
		Call TopicsInForum(intForumID)

		my_Conn.Close
		set my_Conn = Nothing

		Sub TopicsInForum(intForumID)
			'	##	Total Topics in a Particular Forum
			intForumTopics = 0
			strSql = "SELECT F_SUBJECT FROM " & strTablePrefix & "FORUM WHERE FORUM_ID=" & intForumID
			set rsTitle = my_Conn.Execute(strSql)
			if not rsTitle.EOF then
				strForumTitle=rsTitle("F_SUBJECT")
				rsTitle.Close
			end if
			set rsTitle=Nothing
			strSql = "SELECT COUNT(TOPIC_ID) AS CNT FROM " & strTablePrefix & "TOPICS WHERE T_STATUS=1 AND FORUM_ID=" & intForumID
			set rsCount = my_Conn.Execute(strSql)
			if not rsCount.EOF then
				intForumTopics=rsCount("CNT")
				rsCount.Close
			end if
			set rsCount = Nothing
			Response.Write	"Our """ & strForumTitle & """ forum currently has " & intForumTopics & " topics.<br>"
		End Sub
		%>
	</body>
</html>


Example output:
quote:
Our "Welcome" forum currently has 8 topics.
Our "Snitz Modifications" forum currently has 476 topics.

Edited by - Carefree on 09 November 2010 21:30:17
Go to Top of Page

Lon2
Junior Member

USA
151 Posts

Posted - 07 November 2010 :  13:31:26  Show Profile  Reply with Quote
Thanks again Carefree. I get the following error:

Microsoft VBScript compilation error '800a0411'

Name redefined

/topic_totals/test.asp, line 10

dim intMembers, intTopics, intForumID, strForumTitle
---------------------------------------^


Update: I got it to work by removing strForumTitle from the dim statement but I'm not sure if that's the correct thing to do.

This just doesn't seem right. So I have to repeat the entire routine (everything you have in the body, between these <& &> tags), with server includes, every place on the page that I want totals to be?

Edited by - Lon2 on 07 November 2010 14:50:29
Go to Top of Page

Lon2
Junior Member

USA
151 Posts

Posted - 09 November 2010 :  16:45:03  Show Profile  Reply with Quote
Does anyone have an easy way to do this?
Go to Top of Page

ruirib
Snitz Forums Admin

Portugal
26364 Posts

Posted - 09 November 2010 :  17:43:01  Show Profile  Send ruirib a Yahoo! Message  Reply with Quote
Is this a hard way? How easier can it get than this?


Snitz 3.4 Readme | Like the support? Support Snitz too
Go to Top of Page

Carefree
Advanced Member

Philippines
4207 Posts

Posted - 09 November 2010 :  18:29:07  Show Profile  Reply with Quote
quote:
Originally posted by Lon2

Thanks again Carefree. I get the following error:

Microsoft VBScript compilation error '800a0411'

Name redefined

/topic_totals/test.asp, line 10

dim intMembers, intTopics, intForumID, strForumTitle
---------------------------------------^


Update: I got it to work by removing strForumTitle from the dim statement but I'm not sure if that's the correct thing to do.

This just doesn't seem right. So I have to repeat the entire routine (everything you have in the body, between these <& &> tags), with server includes, every place on the page that I want totals to be?



No. That is NOT what I said. Go back and read my reply. You only need to copy 3 2 lines of code for each location you want information. I modified it to make it even simpler for you. If that won't do it, I give up. Someone else can try.

Edited by - Carefree on 09 November 2010 21:32:18
Go to Top of Page

ruirib
Snitz Forums Admin

Portugal
26364 Posts

Posted - 10 November 2010 :  05:17:01  Show Profile  Send ruirib a Yahoo! Message  Reply with Quote
Try what, Craig, a contest to do what you generously have done in less lines?! You're too generous with your time, if you ask me. This thread also shows how unappreciated that can be.


Snitz 3.4 Readme | Like the support? Support Snitz too
Go to Top of Page

Carefree
Advanced Member

Philippines
4207 Posts

Posted - 10 November 2010 :  07:47:57  Show Profile  Reply with Quote
I'm just waiting to die, Ruirib. I don't have anything better to do with my time, but don't know what more I could try to help this guy.
Go to Top of Page

Lon2
Junior Member

USA
151 Posts

Posted - 10 November 2010 :  11:16:09  Show Profile  Reply with Quote
quote:
Originally posted by ruirib

Is this a hard way? How easier can it get than this?

quote:
Originally posted by ruirib

Try what, Craig, a contest to do what you generously have done in less lines?! You're too generous with your time, if you ask me. This thread also shows how unappreciated that can be.

Perfect examples of why Snitz forums has failed to be a leader in forums apps. Amazing comments from a person that we have paid hundreds of dollars to in the past for help with our forums. And you say I am unappreciative!?
Go to Top of Page
Page: of 2 Previous Topic Topic Next Topic  
Next Page
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
Snitz Forums 2000 © 2000-2021 Snitz™ Communications Go To Top Of Page
This page was generated in 0.17 seconds. Powered By: Snitz Forums 2000 Version 3.4.07