Serien finden

M

MarcoSVB

Guest
Hallo zusammen
Hab schon etlich lange im Internet gesucht, aber nix so richtig gefunden. Nunja wenn man auch nicht weiss wie man das richtig formulieren soll ist das ja auch nicht unbedingt ganz einfach :)

Also ich habe eine MySQL Tabelle, beispielsweise
CODE a b c d
1 1 1 1
2 1 1 1
3 1 1 1
4 1 1 1
5 1 0 1
6 1 1 1
7 1 1 1
8 1 1 1
9 1 0 1
0 1 1 1



Jetzt möchte ich Spalte c auslesen. Und zwar will ich die längsten 1er Serien finden.

Das wär in diesem Fall ja
4 mal
und zwar von
1 bis 4


Ich will das für eine Fussballstatistik verwenden bei der ich Sieg- und Niederlagenserien auswerten will.
Hab leider nicht ansatzweise eine Idee wie ich das hinbringe.


Kann mir jemand helfen?


Grüsse
Marco
 
Da fällt mir jetzt zwar auch keine reine SQL-Lösung ein, die Dir das in einer Abfrage an die Datenbank ermittelt.

Aber wie wäre es mit einem kleinen PHP-Script?

Du könntest die Tabelle einfach Zeile für Zeile über eine Schleife durchgehen und abzählen, wie oft hintereinander in c die 1 steht. Kommt eine 0, vergleichst Du die Anzahl mit dem bisherigen größten Wert und setzt den ggf. hoch und fängst mit dem Zählen von vorne an usw.
 
Dankeschön.

Aber auch da fällt mir kein Befehl ein. Meine PHP Erfahrungen sind noch nicht so riesig
smile.gif



Könntest du mir ganz grob ein Beispiel geben? Darauf was aufbauen kann ich dann schon-


Grüsse
 
QUOTE (MarcoSVB @ Mo 8.09.2008, 15:58) Dankeschön.

Aber auch da fällt mir kein Befehl ein. Meine PHP Erfahrungen sind noch nicht so riesig
smile.gif



Könntest du mir ganz grob ein Beispiel geben? Darauf was aufbauen kann ich dann schon-


Grüsse

Da braucht man keinen speziellen Befehl für. Nur die normalen Befehle zum Datenbankzugriff.

z.B. könnte der Programmteil so aussehn:


CODE
// Verbindung mit Datenbank herstellen usw.
// (...)
$max = 0; // Speichert die maximale Länge einer Serie
$anzahl = 0;
$r = mysql_query("SELECT * FROM tabellenname");
while ($daten = mysql_fetch_array($r))
{
if ($daten['c']==1)
$anzahl++;
if ($daten['c']==0)
{
if ($anzahl>$max)
{
$max = $anzahl;
$anzahl = 0;
}
}
}

echo("Die längste Serie waren $max Niederlagen in Folge.");



Statt 'tabellenname' verwendest Du natürlich den Namen deiner Tabelle.
Und das Feld 'c' wird wahrscheinlich auch anders heißen, z.b. 'siege'?
 
Super vielen Dank.

Siehst du in Verbindung damit auch eine Möglichkeit, dass ich anzeigen kann welche Spiele das waren?

Also


"Längste Serie war 5 Siege in Folge" (zum Beispiel)

Dann 0 Siege in Folge verlinken und am anderen Ende des Links dann anzeigen welche 5 Spiele das waren?
 
QUOTE (MarcoSVB @ Mo 8.09.2008, 16:57) Super vielen Dank.

Siehst du in Verbindung damit auch eine Möglichkeit, dass ich anzeigen kann welche Spiele das waren?

Also


"Längste Serie war 5 Siege in Folge" (zum Beispiel)

Dann 0 Siege in Folge verlinken und am anderen Ende des Links dann anzeigen welche 5 Spiele das waren?

Geb es am einfachsten direkt unter dem Ergebnis
"Längste Serie war 5 Siege in Folge:" aus.

Dann müssten während des Zählens noch die Partien mitgespeichert werden:


CODE
// Verbindung mit Datenbank herstellen usw.
// (...)

// Variablen
$max = 0; // Speichert die maximale Länge einer Serie
$anzahl = 0;
$max_partien = array(); // Array mit den Partien der längsten Serie
$partien = array();

// Die längste Serie ermitteln:
$r = mysql_query("SELECT * FROM tabellenname");
while ($daten = mysql_fetch_array($r))
{
if ($daten['c']==1)
{
$anzahl++;
$partien[] = array($daten['mannschaft1],$daten['mannschaft2']);
}
if ($daten['c']==0)
{
if ($anzahl>$max)
{
$max = $anzahl;
$max_partien = $partien;
$anzahl = 0;
$partien = array();
}
}
}

// Ergebnis ausgeben:
echo("Die längste Serie waren $max Niederlagen in Folge.<br />");
for ($i=0;$i<count($max_partien);$i++)
{
echo($max_partien[$i][0]." - ".$max_partien[$i][1]." <br />");
}



Oder wenn es unbedingt ein Link sein soll, dann müsste man anstatt der Partien selbst den Start und End-Spieltag der aktuellen Serie in Variablen speichern und am Ende als GET-Variable an den Link anhängen. Auf der folgenden Seite dann liest Du aus der Datenbank die Partien von Spieltag X bis Spieltag Y aus.
 
Genial, ich danke dir.


Werde mir die nachher mal genau anschauen, aber sieht aus als würde ich das hinkriegen.


Nochmals Danke
 
Zurück
Oben