PDA

View Full Version : Awards Hack


Dean C
04-30-2003, 06:40 PM
I have this one user on my forums. Lets call him Bob. Now in his profile with the awards each award is listed 5 times. Now as far as i can tell from editing some people's profiles in the ACP it is only happening to this user. I just can't pick up on why this happening.

Now one thing i can confirm is that each award appears 5 times. Now if i click the one awards tick box once out of the five times it appears - when going back to the page all five tickboxes are clicked for that award. So it's definately a case of a faulty loop of some sort.

Here is the code from user.php to generate the list of awards. Can someone perhaps pinpoint any possible problems with a certain users name or if the email contains special characters or something like that...



// award/medals/card hack by lesane

maketableheader("Awards");
makeyesnocode("Enable awards for $user[username]?","hasaward",$user[award]);
$result = mysql_query("SELECT * FROM useraward where userid='$user[userid]'");
if ($row = mysql_fetch_array($result)) {
$toegang="yes";
} else {
$toegang="no";
}
if ($toegang=="yes") {
$result=$DB_site->query("SELECT awardsid,name,url,userid,aw FROM useraward where userid=$user[userid]");
while($award = mysql_fetch_array($result) ) {
$lesane="yes";
$id = $award[awardsid];
if($award[aw] == "$id" and $award[userid] == "$user[userid]") {
$lala=" checked";
$up="equal";
} else {
$lala="";
$up="not_equal";
}

echo "<tr class='".getrowbg()."'><td><input type='checkbox' name='aw[$id]' value='yes'";
echo "$lala>$award[name]</td><td nowrap>";
echo "<input type=\"hidden\" name=\"all[$id]\" value=\"$up\">";
echo "<img src=\"$award[url]\">&nbsp;&nbsp;&nbsp;</td>";
}

echo "<input type=\"hidden\" name=\"lessie\" value=\"$lesane\">";

} elseif ($toegang=="no") {
$noawa=$DB_site->query("SELECT awardsid,name,url,aw FROM award");
while($useraward = mysql_fetch_array($noawa) ) {
$id = $useraward[awardsid];
$lesane="no";
echo "<tr class='".getrowbg()."'><td><input type='checkbox' name='uaw[$id]' value='yes'";
if ($uaw =='yes') {
echo " checked>$useraward[name]</td><td nowrap>";
$userup='equal';
} else {
echo ">$useraward[name]</td><td nowrap>";
$userup='not_equal';
}
echo "<input type=\"hidden\" name=\"uall[$id]\" value=\"$userup\">";
echo "<img src=\"$useraward[url]\">&nbsp;&nbsp;&nbsp;</td>";
echo "<input type=\"hidden\" name=\"userhomes[$id]\" value=\"$useraward[name]\">";
echo "<input type=\"hidden\" name=\"userurls[$id]\" value=\"$useraward[url]\">";

}
echo "<input type=\"hidden\" name=\"lessie\" value=\"$lesane\">";
}
// end award/medals/card hack by lesane


Thanks in advance :)

- Dean

filburt1
04-30-2003, 07:06 PM
Useless reply but I ditched that horrible awards hack a long time ago; at WDF I simply have an admin-only-editable hidden profile field that has the actual HTML for the awards :)

Dean C
05-01-2003, 03:50 PM
Yea but i like the ease in which i can add awards with the store hack and how there is an add-on to display who has what award etc.

I just like the way it works. See any flaws in code then buddy :)?

- miSt

GaleForce
05-01-2003, 07:20 PM
Yesterday at 09:06 PM filburt1 said this in Post #2 (https://vborg.vbsupport.ru/showthread.php?postid=389537#post389537)
Useless reply but I ditched that horrible awards hack a long time ago; at WDF I simply have an admin-only-editable hidden profile field that has the actual HTML for the awards :)

Hey... thats a really good idea, but I like being able to hit the checkbox to add them. Needless to say though, it was a good move just adding the field, because not only can it display in the postbit, but it shows up in the profile too :)

Dean C
05-03-2003, 12:36 PM
Ok i have not found the cause of this problem but i've made some progress. I counted the num of rows outputted by the loop. And outputted it. Now I have 5 awards and for this user the query is looping 5 times so in total it performs 25 queries :(

Now i kind of solved it in the admin cp by making a new setting in the vbulletin options which i enter how many awards there are and then add a LIMIT $numawards to the query. $numawards being the global variable. Now this solved the problem in the ACP. But in functions.php the global variable cannot be accessed - therefore i can't stop the award looping in the postbit too :(

Any ideas?

- miSt

eoc_Jason
05-03-2003, 05:40 PM
I noticed the hack wasn't using some of the standard vB functions for accessing mysql stuff, so I fixed that, but I doubt it will correct the situation with your multiple's of 5...

I'm going to D/L the hack itself and take a look at it, I'm looking at variables that I have no clue what they mean or anything.. ;)


// award/medals/card hack by lesane

maketableheader("Awards");
makeyesnocode("Enable awards for $user[username]?","hasaward",$user[award]);

$result = $DB_site->query_first("SELECT * FROM useraward where userid='$user[userid]'");
if (isset($result[userid])) { $toegang="yes"; } else { $toegang="no"; }

if ($toegang=="yes") {
$result=$DB_site->query("SELECT awardsid,name,url,userid,aw FROM useraward WHERE userid='$user[userid]'");
while( $award = $DB_site->fetch_array($result) ) {
$lesane="yes";
$id = $award[awardsid];
if($award[aw] == $id && $award[userid] == $user[userid]) {
$lala=" checked";
$up="equal";
} else {
$lala="";
$up="not_equal";
}
echo "<tr class='".getrowbg()."'><td><input type='checkbox' name='aw[$id]' value='yes'";
echo "$lala>$award[name]</td><td nowrap>";
echo "<input type=\"hidden\" name=\"all[$id]\" value=\"$up\">";
echo "<img src=\"$award[url]\">&nbsp;&nbsp;&nbsp;</td>";
}
echo "<input type=\"hidden\" name=\"lessie\" value=\"$lesane\">";

} elseif ($toegang=="no") {

$noawa=$DB_site->query("SELECT awardsid,name,url,aw FROM award");
while($useraward = $DB_site->fetch_array($noawa) ) {
$id = $useraward[awardsid];
$lesane="no";
echo "<tr class='".getrowbg()."'><td><input type='checkbox' name='uaw[$id]' value='yes'";
if ($uaw =='yes') {
echo " checked>$useraward[name]</td><td nowrap>";
$userup='equal';
} else {
echo ">$useraward[name]</td><td nowrap>";
$userup='not_equal';
}
echo "<input type=\"hidden\" name=\"uall[$id]\" value=\"$userup\">";
echo "<img src=\"$useraward[url]\">&nbsp;&nbsp;&nbsp;</td>";
echo "<input type=\"hidden\" name=\"userhomes[$id]\" value=\"$useraward[name]\">";
echo "<input type=\"hidden\" name=\"userurls[$id]\" value=\"$useraward[url]\">";
}
echo "<input type=\"hidden\" name=\"lessie\" value=\"$lesane\">";

} // END if/elseif

// end award/medals/card hack by lesane