PDA

View Full Version : Users must post before voting


Pandemikk
04-11-2010, 06:42 AM
How would I go about doing this?

I've tried the below to give me an array but it results in a fatal error.


$checkpost = $vbulletin->db->query_read("
SELECT username
FROM " . TABLE_PREFIX . "post
WHERE threadid = '".$threadid."'
");

killa seven
04-11-2010, 06:56 AM
what your array code look like

you need to fetch through the results

Pandemikk
04-11-2010, 07:38 AM
I've fixed the fatal error issue. But the following isn't working. It should print out the array but it isnt'.

$threadid = $vbulletin->db->query_first("
SELECT threadid
FROM " . TABLE_PREFIX . "thread
WHERE pollid = '".$pollida."'
");

$checkpost = $vbulletin->db->query_read("
SELECT username
FROM " . TABLE_PREFIX . "post
WHERE threadid = '".$threadid."'
");
while ($posts = $db->fetch_array($checkpost))
{
print_r($posts);
}

killa seven
04-11-2010, 04:35 PM
while($post = $vbulletin->db->fetch_array)

Pandemikk
04-11-2010, 07:49 PM
That returns mysqli_result Object ( ).

killa seven
04-12-2010, 04:03 AM
i had this problem on one of my plugins and thats how i fixed it

$threadid = $vbulletin->db->query_first("
SELECT threadid
FROM " . TABLE_PREFIX . "thread
WHERE pollid = '".$pollida."'
");

$checkpost = $vbulletin->db->query_read("
SELECT username
FROM " . TABLE_PREFIX . "post
WHERE threadid = '".$threadid."'
");
while ($posts = $vbulletin->db->fetch_array($checkpost))
{
print_r($posts);
}

try it like that

Pandemikk
04-12-2010, 05:31 AM
That's what returns mysqli_result Object ( ).

killa seven
04-12-2010, 05:34 AM
That's what returns mysqli_result Object ( ).

weird i didn't know vbulletin has mysqli methods.. could be wrong

its best practice to use $vbulletin-> if your using db->


always fixes most of my problems when i put it in

Marco van Herwaarden
04-12-2010, 09:16 AM
In the following code, $threadid is an array with the contents of a single database row.
$threadid = $vbulletin->db->query_first("
SELECT threadid
FROM " . TABLE_PREFIX . "thread
WHERE pollid = '".$pollida."'
");
So to use the threadid in the next query, you will need to use $threadid['threadid']:
$checkpost = $vbulletin->db->query_read("
SELECT username
FROM " . TABLE_PREFIX . "post
WHERE threadid = ".$threadid['threadid']."

Pandemikk
04-13-2010, 12:42 AM
Ahhh^

I should have known that!

Thanks Marco.

----

$posthreadid = $vbulletin->db->query_first("
SELECT threadid
FROM " . TABLE_PREFIX . "thread
WHERE pollid = '".$pollida."'
");

$checkpost = $vbulletin->db->query_read("
SELECT username
FROM " . TABLE_PREFIX . "post
WHERE threadid = ".$posthreadid['threadid']."
");

while ($posts = $vbulletin->db->fetch_array($checkpost))
{
if ($posts['username'] != $vbulletin->userinfo['username'])
{
standard_error(fetch_error('bs_postfirst'));
}
}

The array is perfect. But how would I go about checking each result to $vbulletin->userinfo['username'] ?

I thought the above code would work.

Marco van Herwaarden
04-13-2010, 07:55 AM
And what still doesn't work now? On first sight it looks ok.

Pandemikk
04-13-2010, 08:08 PM
All users are getting you must post before voting error messages even if they have posted before.

killa seven
04-13-2010, 08:10 PM
$pollida = $pollinfo['pollid'];


$posthreadid = $vbulletin->db->query_first("
SELECT threadid
FROM " . TABLE_PREFIX . "thread
WHERE pollid = '".$pollida."'
");

$checkpost = $vbulletin->db->query_read("
SELECT username
FROM " . TABLE_PREFIX . "post
WHERE threadid = ".$posthreadid['threadid']."
");

while ($posts = $vbulletin->db->fetch_array($checkpost))
{
if ($posts['username'] != $vbulletin->userinfo['username'])
{
standard_error(fetch_error('bs_postfirst'));
}
}

on line 4 you don't have $pollida equal to anything i fixed it

Pandemikk
04-13-2010, 09:11 PM
I have $pollida = $pollinfo['pollid']; earlier in my code.

Pandemikk
04-16-2010, 11:58 PM
Bump

Pandemikk
04-26-2010, 06:14 AM
bump