• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Highscore automatisch sortieren

yss

Mitglied
Hallo Leute,
ich bin gerade an einem kleinem Spiel dran und will nun auch einen Highscore.
Ich schicke die Daten an eine Php-Script welches den Score und den Namen in eine Tabelle einträgt.
Nun möchte ich aber gerne, dass die Werte schon in der Datenbank sortiert werden, also der Höchste an erste Stelle mit den ID 1 usw den die Id brauche ich später um den Platz im Highscore anzuzeigen, desweiteren werden auch die Wert nicht richtig sortiert wenn ich sie per PHP auslese.
Wie kann ich das sortieren bewerkstelligen?

Das ganze könnt ihr euch hier anschauen: Marie Rechenaufgaben
PHP-Einfügescript:
Code:
<?php
	$score = $_GET['score'];
	$username = $_COOKIE["username"];
	
   # Zugangsdaten als Konstanten definieren
    include('xygeheim.php');
	$database = mysql_connect(MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
	mysql_select_db( MYSQL_DATENBANK ) or die("Auswahl der Datenbank fehlgeschlagen");
	$sql = "
  INSERT INTO mainscore
  ( 
  `name` , `score`
  ) 
  VALUES
  (
  '$username' , '$score'
  );
";
$db_erg = mysql_query($sql) 
   or die("Anfrage fehlgeschlagen: " . mysql_error());
	echo ('<b>Daten wurden gespeichert!</b>');

?>

PHP-Auslesescript:
Code:
<?php
   # Fehlerreporting anschalten
   error_reporting(E_ALL);
   
   include('xygeheim.php');
   
   # Verbindung zur Datenbank aufbauen
   $database = mysql_connect(MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
  
   if ( $database ) {
 		
		// Auswahl der Datebank
		mysql_select_db( MYSQL_DATENBANK ) or die("Auswahl der Datenbank fehlgeschlagen");
		
		# SQL-Statement um alle Lokationen (geordnet nach Namen) auszuwählen
		$sql = "
		   SELECT * FROM mainscore ORDER BY score DESC
		";
      $db_res = mysql_query( $sql );
      if ( ! $db_res ) { 
         die('Ungültige Abfrage: ' . mysql_error()); 
      }
      
      # In den "Panels" werden die Detail-Informationen angezeigt (hier Tischanzahl)
      $panels = "";
      
      # Iteration durch alle in der Datenabnk gefundenen Ergebnisse
      while ($row = mysql_fetch_array( $db_res, MYSQL_ASSOC)) {
         $panels .= '<div class="hrow">
         			 	<span class="placenumber">1.</span>
						<span class="placename">'.$row['name'].'</span>
						<span class="scrorepoints">'.$row['score'].'</span>
         			 </div> 
                     
                     '; 
         }
      # Panels ausgeben
      echo $panels;
      # Das Datenbankergebis löschen
      mysql_free_result( $db_res );
     
   } else {
     die('keine Verbindung möglich: ' . mysql_error());
   }
   # Datenbank schließen
   mysql_close($database);
?>

Der Aufbau der MySQL-Tabelle:
Bildschirmfoto%202010-02-16%20um%2019.43.05.png


Inhalt der MySQL-Tabelle:
Bildschirmfoto%202010-02-16%20um%2019.43.20.png
 
Ich habe mir das Script nicht angesehen, aber die DB-Sortierung funktioniert nur richtig, wenn du dem Feld "score" als Typ sowas wie "Integer" setzt (also einen numerischen Datentyp). Sonst wird nach "Telefonbuchlogik" sortiert, und da steht eben "112" vor "11880".
 

Neueste Beiträge

Zurück
Oben