# PHP/MYSQL: Spielplan erstellen/Ergebnisse eintragen



## DonDemf (22. Juni 2011)

Hallo Leute,

ich bin momentan dabei mir eine online-Fußball-Liga aufzubauen. Das Admininterface habe ich soweit fertig (Spieler hinzufügen, Mannschaften hinzufügen, Ligen hinzufügen... etc.).

Nun habe ich eine Tabelle mit dem namen "liga_mannschaften". Diese Tabelle ist folgendermaßen aufgebaut: id/name/liga 
also als BSP: 1/SV Werder Bremen/1. Bundesliga

Jetzt komme ich an den Punkt, an dem ich einen Spielplan für die 1. Bundesliga generieren muss ( hin und Rückrunde). Dank dieses Forums habe ich ein Script gefunden, welches einen zufälligen Spielplan erstellt, jedoch:
1. nur Hinrunde und
2. ohne Ergebnismeldung

Ich denke, ich muss jedes Spiel in die Datenbank eintragen, um auch die Ergebnisse speichern zu können, d.h ne neue Tabelle mit dem namen "spielplan_bundesliga" oder so ne? 

Also ich weiß leider echt nicht weiter, und bräuchte daher dringend eure Hilfe.

Am Ende soll es so aussehen:

Jeder registrierte Spieler bekommt eine Mannschft zugewiesen aus der 1. Bundesliga und soll dann, nachdem er die Spiele ausgetragen hat, das Spiel auch eintragen können mit ergebnis etc. Aber das ist jetzt hier nciht gefragt, sondern nur, wie ich den Spielplan erstellen und ihn gleichzeitig in die Datenbank bekomme. 

Das script was ich oben beschrieben habe ist folgendes:

```
<?php
// Datenbankverbindung herstellen
@include("config/config.php");

// Teams aus DB holen
$sql = 'SELECT
            name
        FROM
            fifa_mannschaften WHERE liga = "1. Bundesliga"';
$res = mysql_query($sql);

$teams = array();
while (($row = mysql_fetch_assoc($res)) !== false)
    $teams[] = $row['name'];

// Benötigte Variablen setzen
$anzahl  = count($teams);                                       // Anzahl der Teams
$paare   = floor($anzahl / 2);                                  // Anzahl der möglichen Spielpaare
$plan    = array();                                             // Array für den kompletten Spielplan
$tage    = ($anzahl % 2) ? count($teams) : count($teams)-1;     // bei ungerader Anzahl an Teams brauchen wir einen Spieltag mehr
$base    = ($anzahl % 2) ? $anzahl-2 : $anzahl-1;               // die Basis für den Array-Index, bei ungerader Anzahl an Teams
                                                                // fangen wir beim vorletzten Team an

for ($tag = 1; $tag <= $tage; $tag++) {
    if ($anzahl % 2) {
        // letztes Element nach vorne
        array_unshift($teams, array_pop($teams));
    } else {
        // zweites Element mit array(letztes Element, zweites Element) ersetzen,
        // also letztes Element zwischen 1. und 2. Element einfügen
        array_splice($teams, 1, 1, array(array_pop($teams), $teams[1]));
    }

    for ($spiel = 0; $spiel < $paare; $spiel++) {
        $heim = $teams[$spiel];
        $gast = $teams[$base-$spiel];

        $plan[$tag][] = array($heim, $gast);

        /* Rückrunde */
        //$plan[$tag+$tage][] = array($heim, $gast);
    }
}
ksort($plan);

// Spielplan ausgeben
echo "<h1>Spielplan</h1>\n";
foreach ($plan as $spieltag => $spiele) {
    echo "<h2>" . $spieltag . ". Spieltag</h2>\n";
    echo "<ul>\n";
    foreach ($spiele as $spielnummer => $paarung) {
        echo "<li>" . $paarung[0] . " - " . $paarung[1] . "</li>\n";
    }
    echo "</ul>\n";
}

?>
```

Vielen Dank im Vorraus für die Hilfe hier im Forum!


----------



## Maniac (22. Juni 2011)

Vor dem selben Problem stand ich vor ein paar jahren auch *g*

Du hast doch ein Array wo der Spielplan steht. Durch dieses iterierst du ja auch durch wo du ihn ausgibst.
Genauso kannst du ihn dir ja auch in DB schreiben.

In deiner 2 Foreach-Schleife wo du den Plan ausgibst kannst du die Felder der Datenbank befüllen.
Also eine Tabelle mit dem Namen "spielplan", mind. 4 Spalten.

1.Spalte: id primary. auto-increment
2.Spalte: spielnummer ($spielnummer)
3. Spalte: heim = ($paarung[0])
3. Spalte:gast = ($paarung[1])

Natürlich kannst du dir diese Zeilen noch mit zusatz infos erweitern, wie Datum Ergebnis usw.


----------



## DonDemf (22. Juni 2011)

Hey,
ich habe das Problem mittlerweile gelöst, vielen Dank ;-)
Nun stellt sich mir aber die Frage, was ich amchen muss, um folgendes zu erreichen.

Ich lasse nun eine Tabelle generieren, mit allen 18 Mannschaften, sprich:
Mannschaft/Spiele/Siege/Unentschieden/Niederlage/Tore/gegentore/tordifferenz/Punkte

1. Bayern München/2/2/0/0/4/1/3/6
2. Dortmund /2/1/1/0/4/1/3/4
usw.


Nun sollen die zeilen der Plätze  1-3 dunkelgrün und die zeilen der Platz 4hellgrün und die Plätze 5-6 blau im Hintergrund sein (weil diese ja im europäischenbereich spielen).

Wie realisiere ich das?
Der rest ist ganz normal rau hinterlegt!


----------



## Maniac (22. Juni 2011)

In deiner Schleif wo du es ausgibst, einfach einen Zähler setzen der iteriert und wenn der zähler kleiner als kleiner oder gleich 3 ist, die Farbe, wenn größer als 3 und kleiner oder gleich 4 die andere und wenn größer als 4 und kleiner oder gleich 6 die andere Farbe


```
$i = 1;
foreach($spielplan as $key => $elem){
    if($i <= 3) $farbe = 'Farbe1';
    if($i == 4) $farbe = 'Farbe2';
    if($i > 4 && $i <=6) $farbe = 'Farbe';
  $i++;
}
```

Das ist jetzt vielleicht nicht die Perfekt Lösung, aber symbolische sollte es seinen Zweck dienen.


----------



## DonDemf (22. Juni 2011)

---- Erledigt!


----------



## DonDemf (22. Juni 2011)

Ach Sorry, dass hat ja jetzt nichts mehr mit dem generieren des Spielplans zu tun, sondern mit der Tabelle. Ich bin shcon ganz durch den Wind vom ganzen PHP/MYSQL. Seit 3 Tagen ncihts anderes mehr... Sorry ;-)


----------

