Can someone help ?
I'm trying to write good code, keeping queries to a minimum etc.
What I want to do is take a query which returns an array, then you do a while loop to cycle through the array.
Is there anyway to crossreferece this with another array without putting it into the loop ?
Lets post an example, it will probably help, lol
If you take the karma hack, usercp bit.
PHP Code:
// ############################### start karma ###############################
if($karmaenable==1) {
$karmas=$DB_site->query("SELECT karma.postid as postid,karmapos,karmaneg,reason,post.threadid as threadid,post.dateline as dateline,thread.title as title FROM karma LEFT JOIN post ON karma.postid=post.postid LEFT JOIN thread ON post.threadid=thread.threadid WHERE karma.userid='$bbuserinfo[userid]' ORDER BY timestamp DESC LIMIT 0,5");
$uk=$DB_site->query_first("SELECT karma FROM user WHERE userid='$bbuserinfo[userid]'");
$haskarma=0;
while($karma=$DB_site->fetch_array($karmas)) {
if ($karma[karmapos] > $karma[karmaneg])
$karmaposneg="karmapos.gif";
else if ($karma[karmaneg] > $karma[karmapos])
$karmaposneg="karmaneg.gif";
else
$karmaposneg="karmabalance.gif";
$karma[timeline]=vbdate($timeformat,$karma[dateline]);
$karma[dateline]=vbdate($dateformat,$karma[dateline]);
$karma[reason]=bbcodeparse($karma[reason]);
if (strlen($karma[title]) > 25)
$karma[title] = substr($karma[title],0,23)."<smallfont>...</smallfont>";
eval("\$karmacommentbits .= \"".gettemplate("karma_usercpcommentbits")."\";");
$haskarma=1;
}
if ($haskarma==1)
eval("\$karmacomments = \"".gettemplate("karma_usercpcomments")."\";");
else
eval("\$karmacomments = \"".gettemplate("karma_usercpnocomments")."\";");
}
if I altered this line
PHP Code:
$karmas=$DB_site->query("SELECT karma.postid as postid,karmapos,karmaneg,reason,post.threadid as threadid,post.dateline as dateline,thread.title as title FROM karma LEFT JOIN post ON karma.postid=post.postid LEFT JOIN thread ON post.threadid=thread.threadid WHERE karma.userid='$bbuserinfo[userid]' ORDER BY timestamp DESC LIMIT 0,5");
to this
PHP Code:
$karmas=$DB_site->query("SELECT karma.postid as postid,karmapos,karmaneg,reason,post.threadid as threadid,post.dateline as dateline,thread.title as title,whoadded FROM karma LEFT JOIN post ON karma.postid=post.postid LEFT JOIN thread ON post.threadid=thread.threadid WHERE karma.userid='$bbuserinfo[userid]' ORDER BY timestamp DESC LIMIT 0,5");
this would return the
$karmas[whoadded] who return the array
$karma[whoadded] who return the id's one by one in the while loop
What if I wanted to return the username of the user.
I would have to do something like
PHP Code:
$DB_site->query("SELECT username FROM user WHERE userid=$karmas[whoadded]);
hoo would I link these two queries together so in the while loop I can call
$karma[whoadded] = userid
$karma[username] = username
I hope I have explained this, can anyone help please ?
Am I right I can do this using 2 queries ?