Script: DFB-Pokal-Auslosung

Hattrix

Erfahrenes Mitglied
Hallo,

mein bisheriges Script:

PHP:
<?php
$numbers = range(1, 8);
srand((float)microtime() * 1000000);
shuffle($numbers);

echo '<form method="POST" action="dfb_pokal1.php">';
echo '<table style="border:1px solid #000000;font-size:11px;font-family:Arial, Verdana,sans-serif;">';

foreach ($numbers as $number) {

    echo '<tr valign="top">';
    echo '<td width="100">';
    echo '<input name="heim[' . $row['id'] . ']" type="text" size="3" value="' . $number . '"></input>';
    echo '</td>';
    echo '<td width="100">';
    echo '<input name="gast[' . $row['id'] . ']" type="text" size="3" value="' . $number . '"></input>';
    echo '</td>';

    echo '</tr>';

}

echo '</table>';
echo '<input type="submit" value="Eintragen">';
echo '</form>';
?>

Hier wird aber jede Paarung einzeln aufgeführt bzw. jeder spielt gegen sich selbst!

Was muss ich genau ändern, dass diese Auslung funktioniert?
 
Probiers mal so:
Code:
<?php
$numbers = range(1, 8);
shuffle($numbers);
$numbers=array_chunk($numbers,2);

echo '<form method="POST" action="dfb_pokal1.php">';
echo '<table style="border:1px solid #000000;font-size:11px;font-family:Arial, Verdana,sans-serif;">';

foreach($numbers as $pair)
  {
    echo '<tr">';
    echo '<td width="100">';
    echo '<input name="heim[]" type="text" size="3" value="' . $pair[0] . '"></input>';
    echo '</td>';
    echo '<td width="100">';
    echo '<input name="gast[]" type="text" size="3" value="' . $pair[1] . '"></input>';
    echo '</td>';
    echo '</tr>';
}

echo '</table>';
echo '<input type="submit" value="Eintragen">';
echo '</form>';
?>
...der gemischte Array wird in Teile mit je 2 Elementen gesplittet...fertitsch :)
 
Danke, funktioniert.

Nun tu ich mich immer schwer mit einem array aus der Datenbank, wo ich die Verein-ID's auslese.

Wenn ich jetzt eben 8 ID's aus der Datenbank benötige, die eben noch dabei sind, wie muss ich das array bauen!
 
Also mal angenommen, in der DB hast du eine Tabelle mit folgenden Daten für die Teams:
  • id(ID des Teams)
  • name(Name des Teams)
  • liga(Liga, in der das Team spielt, Bundesliga=1;2.Bundesliga=2 usw.)
  • drinnen(1 oder 0, jenachdem, ob das Team noch spielt)
Dann könntest du folgendermassen vorgehen:

PHP:
<?php
$leagues=array(0,'1.Bundesliga','2.Bundesliga','Regionalliga','Oberliga');


$DB_Host='hostname';
$DB_User='username';
$DB_Pass='passwort';
$DB_Name='db_name';
$DB_Table='tabellenname';



  mysql_connect ($DB_Host, $DB_User, $DB_Pass) or die ("Keine Verbindung zum Server");
  mysql_select_db ($DB_Name) or die ("Keine Verbindung zur Datenbank");

  //Array für die Paarungen
  $teams=array();
  
  //Alle Teams holen, die noch mitspielen
  $sql=mysql_query("SELECT * FROM $DB_Table WHERE drinnen=1");
  
  //Datensätze in den Paarungsarray einfügen
  while($res=mysql_fetch_assoc($sql))
      {
        $teams[]=$res;
      }

  //Mischen
  shuffle($teams);
  
  //Paarungen erzeugen
  $pairs=array_chunk($teams,2);

?>

<form method="POST" action="dfb_pokal1.php">
<table align="center">
<tr><td colspan="3" align="center"><a href="<?php echo $_SERVER['PHP_SELF'].'?'.time();?>">neu mischen</a></td></tr>
<?php
  
  foreach($pairs as $pair)
    {
    
    //Paarung umkehren, falls Mannschaft aus höherer Liga Heimspiel hat
    if($pair[0]['liga']<$pair[1]['liga'])
      {
        $pair=array_reverse($pair);
      }
     
      
     //Ausgabe
     //Die IDs werden dabei in versteckten Inputs gespeichert und stattdessen die
     //Namen der Teams angezeigt 
      echo '
            <tr>
              <td>
                <input type="hidden" name="heim[]" value="'.$pair[0]['id'].'">
                <b>'.$pair[0]['name'].'</b>('.$leagues[$pair[0]['liga']].')
              </td>
              <td>:</td>
              <td>
                <input type="hidden" name="gast[]" value="'.$pair[0]['id'].'">
                <b>'.$pair[1]['name'].'</b>('.$leagues[$pair[1]['liga']].')
              </td>
            </tr>';
    
    }

?>
<tr><th colspan="3"><input type="submit" value="Eintragen"></th></tr>
</table>
</form>
 
Hm, ich hatte schon dein erstes Script erweitert, so dass es auch richtig funktioniert.

Was mich an deinem zweiten Script beeindruckt ist, dass man nach Ligen unterscheidet, und eben so der unterlegene Heimrecht hat. Nur irgendwie bekomme ich das nicht hin.

Übernehme ich dein zweites Script, dann erhalte ich Zahlen bis 9 und viel wirwar!
Ich poste mal mein Script, dass ich von deinem ersten Script erweitert/angepasst habe!

PHP:
  $sql1 = "SELECT id_v FROM hattrix_torkontodfb WHERE runden = 1";
  $result1 = mysql_query($sql1);

  $res_arr = array();

  while($row=mysql_fetch_assoc($result1))
  {
    $res_arr[]=$row['id_v'];
  }
$numbers=$res_arr;
//$numbers = range(1, 64);
srand((float)microtime() * 1000000);
shuffle($numbers);
$numbers=array_chunk($numbers,2);

echo '<form method="POST" action="dfb_pokal1.php">';
echo '<table style="border:1px solid #000000;font-size:11px;font-family:Arial, Verdana,sans-serif;">';

foreach ($numbers as $number) {

    echo '<tr valign="top">';
    echo '<td width="100">';
    echo '<input name="heim[' . $row['id'] . ']" type="text" size="3" value="' . $number[0] . '"></input>';
    echo '</td>';
    echo '<td width="100">';
    echo '<input name="gast[' . $row['id'] . ']" type="text" size="3" value="' . $number[1] . '"></input>';
    echo '</td>';
    echo '</tr>';

}

echo '</table>';
echo '<input type="submit" value="Eintragen">';
echo '</form>';

In der Tabelle torkontodfb sind keine Datensätze drin, in welcher Liga sie spielen. Könnte ich aber im nachhinein mit inner join noch tun!

Heimrecht sollen nur die beiden Regio-Staffeln Nord und Süd haben! Differenzierung in Liga 1 und 2 soll es nicht geben!
 
Meinst du hattrix_torkontodfb?
Wenn ja, wirst du nicht viel damit anfangen können, um eine Differenzierung der Ligen zu bekommen, denn die ist nur in der hattrix_vereine drin.

Es geht momentan auch nur um den PHP code.
 
Also die Daten welche du brauchst, müsstest du schon selbst aus deiner DB holen,ich komme da momentan nicht ran :suspekt:

Welche du brauchst, habe ich beschrieben:
* id(ID des Teams)
* name(Name des Teams)
* liga(Liga, in der das Team spielt, Bundesliga=1;2.Bundesliga=2 usw.)
* drinnen(1 oder 0, jenachdem, ob das Team noch spielt)
 
Das ist auch nicht mein Problem, die Daten aus einer Datenbank zu holen.

Lies mal genauer, was ich wirklich will.

Die Unterscheidung, dass der Regionalligist immer Heimvorteil hat.

Dein 2.Script funktioniert nicht. Dein 1.Script schon, aber ist eben ohne Heimvorteilscript.

Daher habe ich das aktuelle Script, was funktioniert, aber kein Heimvorteilscript hat.
 
Zurück