The Arcive of Official vBulletin Modifications Site.It is not a VB3 engine, just a parsed copy! |
|
#1
|
|||
|
|||
Number of posts in last 30 days...
Hi all,
I've been trying to figure out how to get the query written so that I can show the total number of posts in the past 30 days. This is what I have thus far, which I think should work if the date format was standard MySQL instead of the dateline format. PHP Code:
Any ideas on this one?? I know the problem is because the date is not stored in the normal date format... |
#2
|
||||
|
||||
PHP Code:
|
#3
|
|||
|
|||
Thanks Logician,
Refresh my memory if you will...what benefit would adding the index give me? And would I need to change the code snip you provided if I did this? Thanks! |
#4
|
||||
|
||||
dateline field in post table does not have an index by default so if your database is very large and you make queries using that field (like the code above), the query can take long to complete. (say a few seconds which is a long time for a query) If this query is used a lot of times (say used in forum home page), it will incresase your MYSQL work thus slow down the whole site.
To avoid this, you can add an "index" to dateline field of post table. An index in a field will boost queries that uses that field so after you have an index, your query will be completed in miliseconds regardless of your DB size. You can not add an index in code end. You have to do it in MYSQL. For instance PHPmyadmin can do it for you but if you are not familiar with it, you'd better get someone who knows what he is doing (like your server admin) do it, because there are different types of indexes and believe me you would not want to add a wrong index |
#5
|
|||
|
|||
OK. I know how to add the index using PHPmyAdmin...but since you mentioned there were different types, what type would I want to use here to get the best results?
Thanks again! |
#6
|
|||
|
|||
Logician, thank you very much for your help.
I did try the code you provided and received this error: Quote:
|
#7
|
||||
|
||||
Please change ' as " :
$countrecentposts=$DB_site->query_first("SELECT COUNT(*) AS 30recent FROM post WHERE dateline >= $ago"); As for index: If you click "INDEX" link for dateline column in Structure/Action Sections of phpmyadmin, you should be fine.. |
#8
|
|||
|
|||
Logician, thank you, it works great. I made one small change becuase the results I was getting with the previous code were "screwy" at best..they did not correlate well to the post count I did manually.
The final code below: // get posts over the past 30 days $ago= mktime (date("H")-720, date("i"), date("s"), date("m"), date("d"), date("Y")); $countrecentposts=$DB_site->query_first("SELECT COUNT(*) AS 30recent FROM post WHERE dateline >= $ago"); $total30recent=$countrecentposts['30recent']; Thanks again! |
|
|
X vBulletin 3.8.12 by vBS Debug Information | |
---|---|
|
|
More Information | |
Template Usage:
Phrase Groups Available:
|
Included Files:
Hooks Called:
|