PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit VMS_Refralley_pro V1.2.4



Siggi84
13.10.2010, 21:48
Hallo Leute,

ich habe ein großes Problem mit der Refralley.

Anfangs wurden die Werber nicht nach gewerteten Refs sortiert sondern nach UID.

Hier mal ein Ausschnitt aus der ref.php (Original)


<br>
<table cellpadding="1" cellspacing="1" border="0" bgcolor="#f0f0f0" align="center">
<tr bgcolor="#919090">
<td align="center">&nbsp;&nbsp;<b>UID</b>&nbsp;&nbsp;</td>
<td align="center">&nbsp;&nbsp;<b>Nickname</b>&nbsp;&nbsp;</td>
<td align="center">&nbsp;&nbsp;<b>gewertete Refs</b>&nbsp;&nbsp;</td>
<td align="center">&nbsp;&nbsp;<b>geworbene Refs</b>&nbsp;&nbsp;</td>
<td align="center">&nbsp;&nbsp;<b>möglicher Gewinn</b>&nbsp;&nbsp;</td>
</tr>

<?
$refs = db_query('SELECT COUNT(uid) AS refs, werber FROM '.$db_prefix.'_refralley WHERE ap >= '.$ralleydaten['pro'].' GROUP BY werber DESC LIMIT 10');
while ($werber = mysql_fetch_array($refs)) {

$refs_1 = db_query('SELECT COUNT(uid) AS anzahl_refs FROM '.$db_prefix.'_refralley WHERE werber = '.$werber['werber'].'');
while ($werber_1 = mysql_fetch_array($refs_1)) {
$nick = mysql_fetch_array(db_query("SELECT nickname FROM ".$db_prefix."_userdaten WHERE uid = '".$werber['werber']."' LIMIT 1"));
echo mysql_error();
$rp++;
if ($ralleydaten['art'] == 'statisch') {
$mg = number_format($ralleydaten['p'.$rp],0,",",".");
} else {
$mg = number_format($ralleydaten['jackpot'] / 100 * $ralleydaten['p'.$rp],0,",",".");
}
if ($rp > $ralleydaten['plaetze']) $mg = '----';

echo '
<tr bgcolor="#6F6F6F">
<td align="center"><a href="?content=/ralleys/refuebersicht&uid='.$werber['werber'].'" target="_blank">'.$werber['werber'].'</a></td>
<td align="center">'.$nick['nickname'].'</td>
<td align="center">'.$werber['refs'].'&nbsp;&nbsp;</td>
<td align="center">'.$werber_1['anzahl_refs'].'&nbsp;&nbsp;</td>
<td align="center">'.$mg.'&nbsp;&nbsp;</td>
</tr>
';
} }
for($x=$rp+1;$x<11;$x++){
$mg = number_format($ralleydaten['p'.$x],2,",",".");
if ($x > $ralleydaten['plaetze']) $mg = '----';

echo '
<tr bgcolor="#6F6F6F">
<td align="center">N/A</td>
<td align="center">N/A</td>
<td align="center">0&nbsp;&nbsp;</td>
<td align="center">0&nbsp;&nbsp;</td>
<td align="center">'.$mg.'&nbsp;&nbsp;</td>
</tr>
';
}
?>
</table>
Das es jetzt erstmal nach den gewerteten Refs sortiert wird, habe ich folgendes gemacht:

Dies

$refs = db_query('SELECT COUNT(uid) AS refs, werber FROM '.$db_prefix.'_refralley WHERE ap >= '.$ralleydaten['pro'].' GROUP BY werber DESC LIMIT 10');
Mit dem ersetzt

<?
$refs = db_query('SELECT COUNT(uid) AS refs, werber FROM '.$db_prefix.'_refralley WHERE ap >= '.$ralleydaten['pro'].' GROUP BY werber ORDER by refs DESC LIMIT 10');
Jetzt werden die gewerteten Refs wenigstens erst mal richtig sortiert, nur die Werber die eine gleiche Anzahl von gewerteten Refs haben, werden irgendwie willkürlich angeordnet, fast jedes mal wenn ich in die Ralley schaue ist eine andere Anordnung. Es geht nicht nach den gesamten Refs, oder nach gesamt APs der Refs, habe ich schon ausprobiert.

Ich hoffe das mir jemand bei diesem Fall helfen kann, werde mich auch erkenntlich zeigen, wer mir hilft das Problemchen zu lösen.

Vielen Dank im Vorraus für eure Hilfe.

Gruß

Falk

PS: Hier (http://www.money4click.info/?content=/ralleys/ref) kommt ihr zur Ralley

jpwfour
14.10.2010, 11:06
Du könntest bei ORDER BY als 2. Wert SUM(ap) verwenden. Würde dann aber nur die Summe der Refs genommen werden, die gewertet werden, da ja das WHERE ap >= mit drin ist.

Siggi84
14.10.2010, 12:54
Hi,

erstmal vielen Dank für deine Antwort!

Genau das wäre mir am liebsten, das hierbei bei gleichervanzahl die Aktivität ausschlaggebend ist.

Da ich aktuell noch auf Arbeit bin, kann ich es jetzt nicht ausprobieren.

Wenn ich es richtig sehe dann so hier.


<?
$refs = db_query('SELECT COUNT(uid) AS refs, werber FROM '.$db_prefix.'_refralley WHERE ap >= '.$ralleydaten['pro'].' GROUP BY werber ORDER by SUM(ap) DESC LIMIT 10');

Oder?

Was ich mich nur Frage, es kann ja sein das ein gewerteter Ref aktiver ist als 2, würde ja bedeuten das dann der mit 1 Ref auf Platz 1 ist !?

Kann natürlich auch sein ich habe einen Denkfehler :D

jpwfour
14.10.2010, 13:04
Du kannst auch mehr als 1 Spalte angeben, also sowas wie
ORDER BY refs DESC, SUM(ap) DESC, werber ASC
Dann wird zuerst nach Anzahl Refs sortiert, dann nach der Summe der AP dieser Refs, und wenn dann noch 2 gleich sein sollten "gewinnt" der mit der niedrigeren ID :wink:

Siggi84
14.10.2010, 19:00
Danke, es funktioniert super !!!

Du bist heute mein Held :thumb:

Einen Kleinen Dank habe ich dir @ Klamm hinterlassen :cool: