ordnen einer tabelle nach punktestand; punkte werden in der ausgabe berechnet!

Kamephis

Mitglied
Guten abend zusammen!

Es geht um folgendes:

Ich habe habe eine Tabelle mit 8 Zeilen, jede Zeile ist von Aufbau und Prinzip her gleich:
Es wird der Bame ausgelesen, dann mittels mysql_numrow, wie oft der clan gewonnen hat.
PHP:
$pts1 = mysql_query("SELECT * FROM adcup_group WHERE clan1='$clanH' AND rclan1 > rclan2");
    $pts2 = mysql_query("SELECT * FROM adcup_group WHERE clan2='$clanH' AND rclan1 < rclan2");
    $pts3 = mysql_query("SELECT * FROM adcup_group WHERE clan1='$clanH' OR clan2='$clanH' AND rclan1 == rclan2");
    $pointsH = mysql_num_rows($pts1)*3 + mysql_num_rows($pts2)*3 + mysql_num_rows($pts3);

Mein Problem: in der jetzigen version kann ich das ganze nur manuell ordnen, ich würde die Tabelle natürlich gern nach dem Punktestand sortieren.

Dafür habe ich mir überlegt, dass ich mit dem code, den ich oben angegeben habe, zunächst die Punkte ermittel, dann diese sortiere (Größtes zu erst).
(habe sowas noch nie gemacht, aber meine irgendwo eine Funktion gesehen zu haben, die sowas macht, also das bekomm ich eventuell noch hin ^^)

Jetzt aber: ich habe ja ca 50 Zeilen code, die die eigentliche Tabellenzeile bilden;
ich habe absolut keine Ahnung, wie ich das machen soll, dass zuerst die Zeile mit dem clan mit höchster Punktzahl ausgegeben wird usw.

Hätte da jemand eine Idee? Bin für jede Hilfe dankbar; wäre auch nett, wenn mir jemand dieses sortieren geben könnte, da ich das noch nie gemacht hab und auch nimmer weiß, wo ich das gesehen hab. Dank im Voraus!
 
Hui, es ist schon spät und ich komm gerade von ner Party. Hoffentlich bekomm ich das noch so hin, wie ich das vor habe. Wie wäre es, wenn du das am Ende deines Queries einfügst?

PHP:
ORDER BY punktestand
 
ja, wenn es so einfach wäre, hät ich nicht nachgefragt :)

das problem ist: es sind nur einzelergebnisse in der tabelle vorhanden, nicht die gesamtpunktzahl; die gesamtpunktzahl wird aus bis zu 7 tabellenzeilen während des auslesens berechnet... (mit dem code, den ich angegeben hab)

ich habe nachher die gesamtpunkte von clan1-clan8;
wie ordne ich denen jetzt zahlen von 1-8 zu? (weil damit könnte ich das dann eventuell machen...)
 
Hallo, Du kannst mit der Funktion [phpf]usort[/phpf] Arrays mit eigenen definierten Regeln sortieren. Auch mehrdimensionale Arrays.

snuu
 
hmm usort versteh ich irgendwie nicht, die anderen sortteile helfen mir (meines erachtens) nicht wirklich weit; ich poste mal den code; weiß nicht weiter...

das ganze 8x, wegen 8 clans:

PHP:
$pts1 = mysql_query("SELECT * FROM adcup_group WHERE clan1='$clanA' AND rclan1 > rclan2");
$pts2 = mysql_query("SELECT * FROM adcup_group WHERE clan2='$clanA' AND rclan1 < rclan2");
$pts3 = mysql_query("SELECT * FROM adcup_group WHERE clan1='$clanA' OR clan2='$clanA' AND rclan1 == rclan2");
$pointsA = mysql_num_rows($pts1)*3 + mysql_num_rows($pts2)*3 + mysql_num_rows($pts3);

das für jede der 8 tabellenzeilen; diese zeilen sollen entsprechend der werte ($pointsA-H) geordnet ausgegeben werden; wie keine ahnung...
PHP:
<?
    $clan = $clanA;
    $pts1 = mysql_query("SELECT * FROM adcup_group WHERE clan1='$clan' AND rclan1 > rclan2");
    $pts2 = mysql_query("SELECT * FROM adcup_group WHERE clan2='$clan' AND rclan1 < rclan2");
    $pts3 = mysql_query("SELECT * FROM adcup_group WHERE clan1='$clan' OR clan2='$clan' AND rclan1 == rclan2");
  	?>
  <tr onMouseOut="style.backgroundColor='' "onMouseOver="style.backgroundColor='#CACACA'">
    <td width="47%" class=content3><p style="margin-left:2">
				<? $nameresult = mysql_query("SELECT * FROM adcup_clans WHERE short='$clan'");
					while ($data = mysql_fetch_array($nameresult)) { ?>
                    <a href="index.php?section=clans&detail=1&open=<? echo ($data[UserID]); ?>">
					 <? echo($data[name]);
				 	}?></a></td>
    <td width="6%" class=content3 align=center><?
	$played1 = mysql_num_rows(mysql_query("SELECT * FROM adcup_group WHERE rclan1!='' AND rclan2!='' AND clan1='$clan'"));
	$played2 = mysql_num_rows(mysql_query("SELECT * FROM adcup_group WHERE rclan1!='' AND rclan2!='' AND clan2='$clan'"));
	echo($played1 + $played2);?></td>
    <td width="6%" class=content3 align=center><? echo(mysql_num_rows($pts1)*3 + mysql_num_rows($pts2)*3 + mysql_num_rows($pts3)); ?></td>
    <td width="12%" class=content3 align=center>
    <? $result = mysql_query("SELECT * FROM adcup_group WHERE clan2='$clan'");
 	$plus = "0";
 	while ($data = mysql_fetch_array($result)) {
	$plus = $plus + $data[rclan2];
 	}
    $result2 = mysql_query("SELECT * FROM adcup_group WHERE clan1='$clan'");
    while ($data = mysql_fetch_array($result2)) {
  	$plus = $plus + $data[rclan1];
 	}
 	echo $plus;
 	?>
	</td>
    <td width="12%" class=content3 align=center>
    <? $result = mysql_query("SELECT * FROM adcup_group WHERE clan2='$clan'");
	 $minus = "0";
	 while ($data = mysql_fetch_array($result)) {
 	 $minus = $minus + $data[rclan1];
	 }
     $result2 = mysql_query("SELECT * FROM adcup_group WHERE clan1='$clan'");
     while ($data = mysql_fetch_array($result2)) {
 	 $minus = $minus + $data[rclan2];
	 }
 	echo $minus;
 	?>
	</td>
    <td width="12%" class=content3 align=center><? $dif = $plus - $minus; echo $dif;?></td>
    <td width="6%" class=content3 align=center><? $result3 = mysql_query("SELECT * FROM adcup_clans WHERE short='$clan'");
    while ($data = mysql_fetch_array($result3)) {
  echo $data[cards];
 	} ?></td>
  </tr>

hat dazu irgend jemand eine idee, die mir weiterhelfen könnte? wäre wirklich nett...
 
Ich denke 'snuu' hat dir den zünden Tip gegeben einfach mal [phpf]usort[/phpf] ausprobieren und das Beispiel nachmachen was dort aufegfürht ist , wenn immer noch Probleme da sind einfach mal die 'User Notes' lesen.
 
Zurück