PHP Leaderliste - Problem

  • Guten Tag,


    Ich arbeite gerade an einem kleinen MySQL UCP und möchte eine Leaderliste erstellen. Ich habe es mit mehreren TuT´s versucht aber es werden bis jetzt Personen ausgelesen und in eine Tabelle gepackt.
    In meiner Datenbank sind erst Fraktionsmitglieder definiert, und dann in einer zweiten Spalte ob sie dort Leader sind. ( Leaderrechte 1 = Leader || 0 = kein Leader ).



    Mein Problem ist, erst wenn ein User in einer Fraktion ist UND Leaderrechte hat, soll er dort als Leader stehen.
    Mein zweites Problem ist, dass bei Fraktion nur Zahlen stehen. Dort sollten die Fraktionsnamen stehen. Leider weiß ich nicht wie ich es schreiben sollte.
    Die FraktionsID 0 sollte nicht ausgelesen werden.


    Ich hoffe ihr könnt mir helfen.
    Hier ist mein Code:


    PHP
    <center><html>  <head>  <meta http-equiv="content-type" content="text/html; charset=windows-1250">  <meta name="generator" content="PSPad editor, www.pspad.com">  <title></title>  </head>  <body>		<div class="datagrid"><table><thead><tr><th>Spieler</th><th>Fraktion</th><th>Level</th><th>Online</th></tr></thead></div>  </body></html><style type='text/css'>.datagrid table { border-collapse: collapse; text-align: left; width: 100%; } .datagrid {font: normal 12px/150% Arial, Helvetica, sans-serif; background: #fff; overflow: hidden; border: 1px solid #006699; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; }.datagrid table td, .datagrid table th { padding: 3px 10px; }.datagrid table thead th {background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #006699), color-stop(1, #00557F) );background:-moz-linear-gradient( center top, #006699 5%, #00557F 100% );filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#006699', endColorstr='#00557F');background-color:#006699; color:#FFFFFF; font-size: 15px; font-weight: bold; border-left: 1px solid #0070A8; } .datagrid table thead th:first-child { border: none; }.datagrid table tbody td { color: #00496B; border-left: 1px solid #E1EEF4;font-size: 12px;font-weight: normal; }.datagrid table tbody .alt td { background: #E1EEF4; color: #00496B; }.datagrid table tbody td:first-child { border-left: none; }.datagrid table tbody tr:last-child td { border-bottom: none; }.datagrid table tfoot td div { border-top: 1px solid #006699;background: #E1EEF4;} .datagrid table tfoot td { padding: 0; font-size: 12px } .datagrid table tfoot td div{ padding: 2px; }.datagrid table tfoot td ul { margin: 0; padding:0; list-style: none; text-align: right; }.datagrid table tfoot  li { display: inline; }.datagrid table tfoot li a { text-decoration: none; display: inline-block;  padding: 2px 8px; margin: 1px;color: #FFFFFF;border: 1px solid #006699;-webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #006699), color-stop(1, #00557F) );background:-moz-linear-gradient( center top, #006699 5%, #00557F 100% );filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#006699', endColorstr='#00557F');background-color:#006699; }.datagrid table tfoot ul.active, .datagrid table tfoot ul a:hover { text-decoration: none;border-color: #006699; color: #FFFFFF; background: none; background-color:#00557F;}</style><?php$anzahl = mysql_num_rows($query); $seitenzahl = ceil($anzahl/19);$seite = 1;$ergebnis->Fraktion = getfaction($userinfos['Fraktion']);if( isset( $_GET['seite'] ) ) $seite = $_GET['seite'];$query = mysql_query("SELECT * FROM `BFG_account_main` LIMIT ".($seite*19-19).",19");while( $ergebnis = mysql_fetch_object( $query ) ){    echo "<tr><td>".$ergebnis->Name."</td>\n<td>".$ergebnis->Fraktion."</td>\n<td>".$ergebnis->Level."</td>\n<td>".$ergebnis->Online."</td></tr>";}echo "\n</tbody></table>";if($seitenzahl > 1) {    echo '\n<tfoot><tr><td colspan="4"><ul>';    if($seite != 1) echo '\n<li><a href="?s=frak='.($seite-1).'"><span>Zurück</span></a></li>';    for($i = 1; $i < $seitenzahl+1; $i++)    {        echo '\n<li><a href="?s=frak='.$i.'""><span>'.$i.'</span></a></li>';    }    if($seite != $seitenzahl) echo '\n<li><a href="?s=frak='.($seite+1).'"><span>Weiter</span></a></li>';    echo '\n</ul></tr></tfoot>';  }?></center>


    Und so sieht die Tabelle aus:




    Lösung:
    Diese Zeile einfach ersetzen:

    PHP
    $query = mysql_query("SELECT * FROM `BFG_account_main` WHERE Leaderrechte > 0  LIMIT ".($seite*19-19).",19");


    Es bleibt nur noch das Problem, dass nicht Zahlen sondern Fraktionsnamen angezeigt werden.



    Mit freundlichen Grüßen
    Martin.1994


    /edit Rechtschreibfehler

  • SQL
    $query = mysql_query("SELECT * FROM `BFG_account_main` WHERE Leaderrechte > 0 AND Fraktion != 0  LIMIT ".($seite*19-19).",19");


    zum thema fraktionsnamen.
    ich würde in deiner cfg.php (sofern du eine hast)
    ein array erstellen wo du alle fraktionsnamen reinschreibst, dann musst du nurnoch den inhalt des jewaligen bereichs ausgeben. beispiel:

    PHP
    $frakname=array("Keine Fraktion","LSPD","Ka")


    wichtig ist, dass sie nach Fraktionsid sortiert sind.