Zahlen richtig sortieren

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Condor
Mitglied
Beiträge: 221
Registriert: 27.02.2002 01:00
Wohnort: Ahlen

Beitrag von Condor »

Hallo,
aber wie gebe ich das ganze denn jetzt aus und wie schreibe ich den Platz in die DB. Mein Script sieht ja so aus:

Code: Alles auswählen

<?

if (!eregi("modules.php", $PHP_SELF)) {
    die ("You can't access this file directly...");
}

require_once("mainfile.php");
$module_name = basename(dirname(__FILE__));
require_once("modules/$module_name/config.php");
$index=1;

include("header.php");

OpenTable();

// Quelltext
@mysql_select_db ($dbase) or  die ("Kann Datenbank nicht finden");

$result1 = mysql_query("SELECT * FROM config", $conn);
list($tab) = sql_fetch_row($result1, $conn);

if ($tab==0) {
    $tableborder = "<TABLE BORDER=1 cellspacing=0 rules=none bordercolor=#000000>";
} else {
    $tableborder = "<TABLE BORDER=0 cellspacing=0>";
    $tableunten = "<tr bgcolor=#595959><td height=1 colspan=18></td></tr>";
//    $tableseiten = "<TD width=1% bgcolor=#595959 rowspan=18></td>";
}


if(!isset($sort)) {
    $result = mysql_query("SELECT * FROM $table ORDER by punkte DESC, tordiff DESC", $conn);
} else {
    $sortdir = ($sort=='team') ? 'ASC' : 'DESC';
    $result = mysql_query("SELECT * FROM $table ORDER BY $sort $sortdir", $conn);
}
//
if($sort=='platz') {
    $colorplatz = 'red';
} else {
    $colorplatz = '#000000';
}
//
if($sort=='team') {
    $colorverein = 'red';
} else {
    $colorverein = '#000000';
}

if($sort=='punkte') {
    $colorpunkte = 'red';
} else {
    $colorpunkte = '#000000';
}

if($sort=='gtore') {
    $coloret = 'red';
} else {
    $coloret = '#000000';
}

if($sort=='btore') {
    $colorgt = 'red';
} else {
    $colorgt = '#000000';
}

if($sort=='tordiff') {
    $colordiff = 'red';
} else {
    $colordiff = '#000000';
}

   $number = mysql_num_rows($result);
   echo "<P>Es sind $number Datensätze gelesen worden.</P>";
   echo $tableborder;
   echo $tableunten;
   echo "<TR style='background-color:#d9ecec'>";
   echo $tableseiten;
   echo "<TD width=10%><P ALIGN =CENTER><A HREF='$PHP_SELF?name=Tabellesort&sort=platz'><FONT COLOR='$colorplatz'>Platz</A></FONT></TD>";
   echo "<TD width=35%><P ALIGN =CENTER><A HREF='$PHP_SELF?name=Tabellesort&sort=team'><FONT COLOR='$colorverein'>Verein</A></FONT></TD>";
   echo "<TD width=10%><P ALIGN =CENTER><A HREF='$PHP_SELF?name=Tabellesort&sort=punkte'><FONT COLOR='$colorpunkte'>Punkte</A></FONT></TD>";
   echo "<TD width=10%><P ALIGN =CENTER><A HREF='$PHP_SELF?name=Tabellesort&sort=gtore'><FONT COLOR='$coloret'>ET</A></FONT></TD>";
   echo "<TD width=10%><P ALIGN =CENTER><A HREF='$PHP_SELF?name=Tabellesort&sort=btore'><FONT COLOR='$colorgt'>GT</A></FONT></TD>";
   echo "<TD width=10%><P ALIGN =CENTER><A HREF='$PHP_SELF?name=Tabellesort&sort=tordiff'><FONT COLOR='$colordiff'>Diff</A></FONT></TD>";
   echo $tableseiten;
   echo "</TR>";
   echo $tableunten;
   
   
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {


$sql2 = "UPDATE tabelle SET platz='$platz'";
$result2 = mysql_query($sql2, $conn);



      $farben++;
      $color = ($farben%2 == 0) ? '#f5f5f5' : '#ffffff';
      echo '<TR style="background-color:' . $color . '">';
      echo "<TD><P ALIGN =CENTER>";
      echo $row['platz'];
      echo "</TD>";
      echo "<TD>";
      echo $row['team'];
      echo "</TD>";
      echo "<TD><P ALIGN =CENTER>";
      echo $row['punkte'];
      echo "</TD>";
      echo "<TD><P ALIGN =CENTER>";
      echo $row['gtore'];
      echo "</TD>";
      echo "<TD><P ALIGN =CENTER>";
      echo $row['btore'];
      echo "</TD>";
      echo "<TD><P ALIGN =CENTER>";
      echo $row['tordiff'];
      echo "</TD>";
      echo "</TR>";
     
}

echo $tableunten;
echo "</TABLE>";

CloseTable();
include("footer.php");
?>
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Halt! Nicht so schnell!

Du sollst die Daten nur genau mit dem SQL-Befehl ausgeben, den ich dir oben angegeben habe. Denn nur so bekommen wir die richtigen Platznummern raus.
Die Tabelle umsortieren werden wir später noch... :-)

Gruß, Philipp
Condor
Mitglied
Beiträge: 221
Registriert: 27.02.2002 01:00
Wohnort: Ahlen

Beitrag von Condor »

HI,
achso, also soll ich das ganze nur für die anderen Felder weiter machen oder wie ? Noch so eine Frage, wo soll ich denn

Code: Alles auswählen

$table = array();
$i = 0;
hinschreiben. Sofort über die while-Schleife oder sofort unter

Code: Alles auswählen

if(!isset($sort)) {
    $result = mysql_query("SELECT * FROM $table ORDER by punkte DESC, tordiff DESC", $conn);
?
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Wo die zwei Zeilen hinschreibst, ist reine Geschmackssache. Direkt vor der while-Schleife dürfte es übersichtlicher sein.

Versuch's mal zumindest so weit hinzubekommen, dass du Tabelle ausliest, ins Array einliest und dann wieder ausgibst. Wenn das klappt, bekommen wir die Sortierung morgen irgendwie hingebogen ;-)

Gruß und N8, Philipp
Condor
Mitglied
Beiträge: 221
Registriert: 27.02.2002 01:00
Wohnort: Ahlen

Beitrag von Condor »

Hi,
ich zweifle zwar, das ich das selber hinbekomme aber ich versuchs mal. Trotzdem Danke für deine Hilfe. Ich sehe das ich nicht der einzige bin, der Live-Support von dir bekommt.
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Ich würde es so machen daß du den Platz in die Datenbank einträgst und bei jeder Modifikation (z.B. Mannschaft erhält Punkte) Machst du eine select-Abfrage so daß die Ausgabe nach Plätzen sortiert ist. Dann gehst du das Resultset Zeile für Zeile durch und machst ein update mit deiner Zählvariable. Das hat den Vorteil, daß du bei zwei Teams, die den gleichen Platz haben einfach vergleichst ob der aktuelle und der vorige Platz gleich sind und Wenn ja trägst du halt bei Platz eins weniger ein. Ausserdem hast du die Sortierarbeit dann nur einmal beim Modifizieren und nicht jedesmal beim Auslesen.
PhilippK
Vorstand
Vorstand
Beiträge: 14662
Registriert: 13.08.2002 14:10
Wohnort: Stuttgart
Kontaktdaten:

Beitrag von PhilippK »

Pyramide,
Pyramide hat geschrieben:Ich würde es so machen daß du den Platz in die Datenbank einträgst und bei jeder Modifikation (z.B. Mannschaft erhält Punkte) Machst du eine select-Abfrage so daß die Ausgabe nach Plätzen sortiert ist.
Er wollte Lösung drei also bekommt er sie - wir richten uns hier doch nur nach den Kundenwünschen ;-)

Gruß, Philipp
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

PhilippK hat geschrieben:Er wollte Lösung drei also bekommt er sie
Ich dachte nur wenn sich die Lösung 3 als so schwierig herausstellt sollte man es mal mit einer anderen (möglicherweise einfacheren) Variante versuchen.
Condor
Mitglied
Beiträge: 221
Registriert: 27.02.2002 01:00
Wohnort: Ahlen

Beitrag von Condor »

Hallo lieber Supporter,
wie soll ich denn den Platz in die DB eintragen, wenn ich erst nach der Sortierung der Mannschaften weiss, wer auf welchen Platz ist. Das ist ja mein Hauptproblem, ich weiss nicht wie ich den Platz in die DB bekomme. Vorher hatte ich einfach "$platz++" und dann "echo $platz" gehabt. Das ist ja aber nur für die Datensätze, das Script liest Satz für Satz ein/aus und schreibt den Platz hin. Dann steht da zwar Platz 1... bis 13, aber wenn ich jetzt z.B nach Tordifferenz sortieren lasse, dann bleiben die Plätze stehen, das sollte aber nicht sein. Und ausserdem steht dann der Platz nicht in der DB. Den errechnet Platz benötige ich aber noch für weitere Funktionen die ich das Script einbauen möchte, wie z.B die Errechnung des max. zu erreichbaren Platz.
Condor
Mitglied
Beiträge: 221
Registriert: 27.02.2002 01:00
Wohnort: Ahlen

Beitrag von Condor »

Hallo,
ich bins nochmal. @ Pyramide: Wie genau meinst du das mit der Select-Abfrage ? Könntest du ein kleines Bespiel posten, z.B mit Birnen und Äpfeln oder sonst was, was kleines damit ich das genau verstehe, was du meinst.
Antworten

Zurück zu „Coding & Technik“