Ergebnis 1 bis 5 von 5

Thema: Problem mit VMS_Refralley_pro V1.2.4

  1. #1
    Benutzer
    Registriert seit
    02.07.2010
    Beiträge
    52

    Problem mit VMS_Refralley_pro V1.2.4

    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 kommt ihr zur Ralley

  2. #2
    Erfahrener Benutzer Avatar von jpwfour
    Registriert seit
    06.02.2008
    Beiträge
    3.717
    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.
    Kill one man, and you are a murderer.
    Kill millions of men, and you are a conqueror.
    Kill them all, and you are a god.
    - Jean Rostand, Thoughts of a Biologist (1939)

  3. #3
    Benutzer
    Registriert seit
    02.07.2010
    Beiträge
    52
    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

  4. #4
    Erfahrener Benutzer Avatar von jpwfour
    Registriert seit
    06.02.2008
    Beiträge
    3.717
    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
    Kill one man, and you are a murderer.
    Kill millions of men, and you are a conqueror.
    Kill them all, and you are a god.
    - Jean Rostand, Thoughts of a Biologist (1939)

  5. #5
    Benutzer
    Registriert seit
    02.07.2010
    Beiträge
    52
    Danke, es funktioniert super !!!

    Du bist heute mein Held

    Einen Kleinen Dank habe ich dir @ Klamm hinterlassen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •