View Full Version : Query to get number of post for a user today?
I need help with a query please...
I haven't been able to get anything to work with the plug in system, but I have seen similar hacks that use a similar idea.
The query needs to pull the number of posts a user has so far today for display in the posbit. (Not the past 24 hours, just in the current day).
How can I do this? Thanks.
~007
Here's the code that worked on 3.0: (rolling 24 hours, however, but this doesn't work either on 3.5)
$cutoff=time()-86400;
$postcount=$DB_site->query_first("SELECT COUNT(*) AS total FROM post WHERE userid='$userid' AND dateline >= $cutoff");
I am trying to put it in postbit_start.
It comes up with "Call to a member function on a non-object" and I'm guessing it's because syntax has changed in 3.5... but I haven't the slightest clue where to begin. Any ideas?
White_Snake
09-16-2005, 05:27 PM
well, the syntaxis error i can see is that you're using $DB_site-> and as far as i know that's from vb 3.0.x
so the proper command should be
$vbulletin->db->query_frist, so, making the whole sentence be:
$cutoff=time()-86400;
$postcount=$vbulletin->db->query_first("SELECT COUNT(*) AS total FROM post WHERE userid='$userid' AND dateline >= $cutoff");
Thanks, but I get the following with that:
Fatal error: Call to a member function on a non-object in ...../includes/class_postbit.php(251) : eval()'d code on line 2
:( What should I do?
Boofo
09-16-2005, 06:29 PM
Try:
$db->query_first
Hey, I get the same error with that.. Hmmm..
White_Snake
09-16-2005, 06:35 PM
0k, now try this:
$cutoff=time()-86400;
$postcount=$vbulletin->db->query_first("SELECT COUNT(*) AS total FROM post WHERE userid='".vbulletin->userinfo[$userid]."' AND dateline >= $cutoff");
if that one doesnt do the trick, try this one:
$cutoff=time()-86400;
$postcount=$vbulletin->db->query_first("SELECT COUNT(*) AS total FROM post WHERE userid='".vbulletin->userinfo['$userid']."' AND dateline >= $cutoff");
Getting closer..
I get this:
Parse error: parse error in ..../includes/class_postbit.php(251) : eval()'d code on line 2
White_Snake
09-16-2005, 06:42 PM
none of em worked, hmmmm =/ what else can be the error, well, i think this one of this 2 should work:
$cutoff=time()-86400;
$postcount=$vbulletin->db->query_first("SELECT COUNT(*) AS total FROM post WHERE userid='".vbulletin->userinfo[$userid]."' AND dateline >=".$cutoff."");
or
$cutoff=time()-86400;
$postcount=$vbulletin->db->query_first("SELECT COUNT(*) AS total FROM post WHERE userid='".vbulletin->userinfo['$userid']."' AND dateline >=".$cutoff."");
Bad news... :(
No go. Thanks for helping though. The COUNT (*) isn't the problem is it?
White_Snake
09-16-2005, 06:54 PM
hmmm, well, try the query frist via phpmyadmin without variables or vbulletin commands, something like:
"SELECT COUNT(*) AS total FROM post WHERE userid='1' AND dateline >= 86400 ");
if it doesnt work, well, maybe you have an sql syntaxis error, that's the only way to know if you're right
That's what I did to start with, and it worked fine. That's why I think it has something to do with how vb3.5 needs to have queries typed in differently somehow :(
White_Snake
09-16-2005, 07:08 PM
hmmm i see, well, the query works, but im not sure how to deal with queries that complex, what i have seen from your original was that you wasnt recalling the userid properly and you wasnt cutting the php time variable from the sql sentance
im not sure what else you can do :S
Well thanks for trying. :) I appreciate it!
On that note, if anybody else has any ideas, I really would like to get this going if possible. Thanks a lot!
Marco van Herwaarden
09-16-2005, 07:37 PM
Put a global $vbulletin before the query.
Hey MarchoH, thanks, but how would that look. Aren't the queries that WhiteSnake entered above already using the $vbulletin before them?
Nullifi3d
09-16-2005, 07:58 PM
White Snake, your codes have several errors. As Boofo said: the correct code would be $db->query_first, but it depends on the hook you're inserting this code into.
The following should work with most hooks:
$datecut = TIMENOW - 86400;
$postcount = $db->query_first("SELECT COUNT(*) AS total FROM " . TABLE_PREFIX . "post WHERE userid = '{$vbulletin->userinfo['userid']}' AND dateline >= '$datecut'");
Display the count in a template with $postcount[total]
HotLinkHosting, now I am back to the Fatal Error from before:
Fatal error: Call to a member function on a non-object in ..../includes/class_postbit.php(251) : eval()'d code on line 2
The hook I am using is postbit_display_start.. I have tried it in other postbit hooks with the same problem however.. I think that is the right hook to use though. It makes sense at least according to where it is in the code..
White_Snake
09-16-2005, 08:16 PM
HotLinkHosting, now I am back to the Fatal Error from before:
Fatal error: Call to a member function on a non-object in ..../includes/class_postbit.php(251) : eval()'d code on line 2
The hook I am using is postbit_display_start.. I have tried it in other postbit hooks with the same problem however.. I think that is the right hook to use though. It makes sense at least according to where it is in the code..
so well, exaclty which error are you reciving using whit the code i gave you?
well try this now, inspired on Hotlink code:
$datecut = TIMENOW - 86400;
$postcount = $db->query_first("SELECT COUNT(*) AS total FROM " . TABLE_PREFIX . "post WHERE userid = '".$vbulletin->userinfo['userid']."' AND dateline >= ".$datecut."");
Boofo
09-16-2005, 08:20 PM
Shouldn't it be this:
global $vbulletin;
$datecut = TIMENOW - 86400;
$postcount = $db->query_first("SELECT COUNT(*) AS total FROM " . TABLE_PREFIX . "post WHERE userid = '".$vbulletin->userinfo['userid']."' AND dateline >= ".$datecut."");
White_Snake
09-16-2005, 08:22 PM
Shouldn't it be this:
global $vbulletin;
$datecut = TIMENOW - 86400;
$postcount = $db->query_first("SELECT COUNT(*) AS total FROM " . TABLE_PREFIX . "post WHERE userid = '".$vbulletin->userinfo['userid']."' AND dateline >= ".$datecut."");
hmmm i see, so, what's the function of global $vbulletin with the whole query?
WhiteSnake and Boofo, both of yours both give me this error:
Fatal error: Call to a member function on a non-object in ..../includes/class_postbit.php(251) : eval()'d code on line 3
Marco van Herwaarden
09-16-2005, 08:54 PM
global $vbulletin;
$datecut = TIMENOW - 86400;
$postcount = $vbulletin->db->query_first("SELECT COUNT(*) AS total FROM " . TABLE_PREFIX . "post WHERE userid = ".$vbulletin->userinfo['userid']." AND dateline >= $datecut");
Awesome MarchoH64! That worked! :) Thanks a lot.
White_Snake
09-16-2005, 09:09 PM
well, i learned something new today
Marco van Herwaarden
09-16-2005, 09:18 PM
Like i said on the previous page, just add the global $vbulletin.
Nullifi3d
09-16-2005, 09:38 PM
why does my code work in forumhome_start, but not elsewhere?
Too bad all hooks don't use the same code :(
vBulletin® v3.8.12 by vBS, Copyright ©2000-2025, vBulletin Solutions Inc.