PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anzeige des Rallystandes wenn User nicht in den TOP10 ist



MrChicken
07.02.2014, 12:40
Hallo,

ich hätte da gerne mal ein Problem... Ich habe u.a. das slotoftheweek-Addon von STG, aber im Prinzip sind meine anderen Rallys (Aktivrally, Klickrally usw.) ähnlich.

So ist es gerade: Während der Rally werden auf der Rallyseite in einer Tabelle die 10 besten User angezeigt. Wenn man da mit drin steht, sieht man seinen Platz, die AP/Klicks/Whatever und den möglichen Verdienst.
Wenn man nicht drin steht, sieht man nichts. Ich habe jetzt als Workaround die Anzeige der eigenen Punkte über die Tabelle eingebunden.

Ich hätte es aber gerne so, dass der eigene Rang (sofern man nicht in den Top 10 ist) unter der Tabelle angezeigt wird, wenn man jedoch ein Teil der Top10 ist, dann eben nicht. (im Prinzip also ähnlich wie die Klamm-Ladder (http://www.klamm.de/partner/unter_ladder.php)). Leider bekomme ich das irgendwie nicht hin...

Hier mal der Code der While-Schleife die die Tabelle füllt

<?$platz = db_query ('SELECT k.punkte,k.uid,u.nickname FROM stg_slotofweek k LEFT JOIN '.$db_prefix.'_userdaten u ON u.uid = k.uid ORDER BY punkte DESC LIMIT 10');while ($pa = mysql_fetch_array($platz)) {
$row = ($rp % 2 == 0) ? 0 : 1;
$mg = ($ralleydaten['art'] == 'statisch') ? number_format($ralleydaten['p'.$rp], 2, ',', '.').' ': number_format(($ralleydaten['jackpot'] / 100 * $ralleydaten['p'.$rp]), 2, ',', '.');
if ($rp > $ralleydaten['plaetze']) $mg = '---';
if ($pa['nickname'] == $kontoinfo['nickname']) {echo'<tr class="danger">'; } else {echo '<tr>';}
echo'
<td>'.$rp++.'</td>
<td><a href="/?content=/nickpage&nick='.$pa['nickname'].'">'.$pa['nickname'].'</a></td>
<td>'.number_format($pa['punkte'], 0).'</td>
<td>'.$mg.'</td>
</tr>';
}

Ich habe jetzt probiert sowas dahinter zu schreiben:


if ($pa['nickname'] != $kontoinfo['nickname']) {
echo'<tr class="danger">
<td>-</td>
<td><a href="/?content=/nickpage&nick='.$kontoinfo['nickname'].'">'.$kontoinfo['nickname'].'</a></td>
<td>'.number_format($yourstats['punkte'], 0).'</td>
<td>---</td>
</tr>
';
}


Was auch in sofern funktioniert, als das der eigene Platz unter der Tabelle angezeigt wird, wenn man nicht Teil der Top10 ist.
Wenn man jedoch genug Punkte hat und in den Top10 steht, wird man "dank" dem 2. Code sowohl in den Top10 (richtig), als auch darunter angezeigt (falsch) und ich hab gerade nen Knoten drin und versteh nicht wieso....
Eigentlich sollte beim 2. Code dann doch einfach nichts passieren oder?

Ich hoffe ihr habt verstanden was ich meine und könnt mir bei der Umsetzung helfen.

Gruß,
MrChicken

Hardy
07.02.2014, 14:12
das kann so auch schlecht funktionieren da du den 2teil auserhalb der schleife hantierst.
am besten definierst du eine neue boolsche wert,setzt diese auf true wenn der nick in den TOP 10 ist und wenn nicht gibts du halt dein zweiteren teil aus. also im Prinzip sieht das ganze dann so aus:



$platz = db_query ('SELECT k.punkte,k.uid,u.nickname FROM stg_slotofweek k LEFT JOIN '.$db_prefix.'_userdaten u
ON u.uid = k.uid ORDER BY punkte DESC LIMIT 10');
while ($pa = mysql_fetch_array($platz)) {
$row = ($rp % 2 == 0) ? 0 : 1;
$mg = ($ralleydaten['art'] == 'statisch') ? number_format($ralleydaten['p'.$rp], 2, ',', '.').' ': number_format(($ralleydaten['jackpot'] / 100 * $ralleydaten['p'.$rp]), 2, ',', '.');
if ($rp > $ralleydaten['plaetze']) $mg = '---';
if ($pa['nickname'] == $kontoinfo['nickname']) {echo'
<tr class="danger">
';
$user_in_row = true; // Das ist neu; Hardy
} else {echo '
<tr>
';}
echo' <td>'.$rp++.'</td>
<td><a href="/?content=/nickpage&nick='.$pa['nickname'].'">'.$pa['nickname'].'</a></td>
<td>'.number_format($pa['punkte'], 0).'</td>
<td>'.$mg.'</td>
</tr>
';
}



und der zweite teil so



if ($user_in_row == false) { // Das ist neu; Hardy
echo'
<tr class="danger">
<td>-</td>
<td><a href="/?content=/nickpage&nick='.$kontoinfo['nickname'].'">'.$kontoinfo['nickname'].'</a></td>
<td>'.number_format($yourstats['punkte'], 0).'</td>
<td>---</td>
</tr>
'; }