Seite 3 von 5

Verfasst: 16.01.2003 00:21
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");
?>

Verfasst: 16.01.2003 00:28
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

Verfasst: 16.01.2003 00:32
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);
?

Verfasst: 16.01.2003 00:40
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

Verfasst: 16.01.2003 00:43
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.

Verfasst: 16.01.2003 18:03
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.

Verfasst: 16.01.2003 18:21
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

Verfasst: 16.01.2003 18:31
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.

Verfasst: 16.01.2003 23:49
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.

Verfasst: 16.01.2003 23:51
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.