tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
263
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Walther Walther ist offline Grünschnabel
    Registriert seit
    Jul 2011
    Beiträge
    4
    Hallo,
    Ich habe eine Tabelle Namens Mannschaft(12 einträge). Diese ist wie folgt aufgebaut:
    ID---NAME---LAND---GOALS---WON---LOST---GLEICH

    Und eine Tabelle namens Spieltage:

    ID---SPIELTAG---DATE---HEIM---GEGNER---TORE HEIM---TORE GEGNER

    So nun möchte ich die Tabelle Spieltage mit den Daten der Tabelle Mannschaft füllen, so dass jede mannschaft einmal gegen jeden spielt aber nie gegen sich selber.

    Ich habe mir gedacht, die Tabelle dann mit 12 schleifen zu füllen, die wie folgt funktionieren sollen:

    PHP-Code:

    $i 
    1;
    do {
    $i++;
    $eintrag "INSERT INTO spieltage (id, Spieltag, date, Heim, Gegner, Tore Heim, Tore Gegner) VALUES ('id', '1', NOW(), 'Mannschaft auf ID1 von der anderen Tabelle', 'Mannschaft von ID$i der anderen Tabelle','0','0')";
    $eintragen mysql_query($eintrag) or die(mysql_error());

    } while (
    $i == 12); 
    Also das ganze soll so funktionieren:

    Die Schleife läuft solange, bis ich als Spieltag eins 12 mal die Mannschaft der ID1 habe und dann jeweils jede andere Mannschaft einmal also halt mit der ID$i wobei $i ja bei jedem durchlauf um eins erhöht wird.

    Wie kann ich das jedoch machen, dass er die Mannschaft nimmt, die auf der ID1 liegt oder halt auf ID$i ?

    Die restlichen Spiele wollte ich halt mit neuen Schleifen einfügen.
     

  2. #2
    Avatar von Maniac
    Maniac Maniac ist offline Mitglied Smaragd
    Registriert seit
    Apr 2007
    Ort
    Augsburg/Gersthofen (Bayern)
    Beiträge
    1.204
    Für ein Hin-und Rückrundensystem gibt es einen extra Algorythmus, wie es bei einem 1-Rundensystem aussieht kann ich dir nicht genau sagen. Aber ich denke nicht das du es rein mit SQL lösen kannst, sondern hierfür den Spielplan mit PHP erstellst und diesen danach in die DB schreibst.
     
    Die Schweine von heute sind unsere Schnitzel von morgen!

  3. #3
    Walther Walther ist offline Grünschnabel
    Registriert seit
    Jul 2011
    Beiträge
    4
    Habe hier eine Lösung gefunden:
    http://www.phpbuilder.com/board/show...php?t=10300945
    Jedoch habe ich einfach keine Ahnung, wie ich dies bei mir einbaue, dass das ganze dynamisch mit MySQL läuft :S
     

  4. #4
    Avatar von Sunny1245
    Sunny1245 Sunny1245 ist offline Mitglied Silber
    Registriert seit
    Jul 2011
    Ort
    Nordhessen
    Beiträge
    74
    Ich würde es folgendermaßen machen:
    Du hast wie du schon richtig gesagt hast 12 Schleifen, wahrscheinlich werden es am Ende aber auch nur 11 sein. Jetzt generierst du für die erste Mannschaft alle Spieltage durch. Du merkst dir, die ID der ersten Mannschafst und fügst sie einem Array hinzu. Jetzt kommt die zweie Schleife die jetzt für die Zweite Mannschaft. Wieder generierst du alle Spieltage, bis auf den Spieltag für die erste Mannschaft. Diese Information muss dann in den Array stehen. Ich bin mir nichtmal sicher ob du soviele Schleifen brauchst oder doch nur zwei ineinandergeschaltelte Schleifen, die äußere um das Array hochzuzählen und die zweite um die Spieltage zu generieren. Ist interessant, ich versuche ich da morgen auch mal dran.
     
    Tutorials:
    Dynamisch mehrere Input Felder genieren

    Sprachen:
    - Java - C++ - VBS - PHP - HTML - CSS - MySQL - OracleSQL- JavaScript - Ajax -

  5. #5
    Walther Walther ist offline Grünschnabel
    Registriert seit
    Jul 2011
    Beiträge
    4
    Hab ENDLICH die erste Schleife zum laufen gebracht:
    PHP-Code:

    $result 
    mysql_query ('SELECT name FROM mannschaft WHERE id=1');
    $row mysql_fetch_array($result);

    $i=1;
    while(
    $i 12){
    $i++;
    echo 
    $i;
    $result1 mysql_query ("SELECT name FROM mannschaft WHERE id='$i'");
    $aa mysql_fetch_array($result1);
    $eintrag "INSERT INTO spieltage (id, Spieltag, date, Heim, Gegner, ToreHeim, ToreGegner) VALUES ('id', '1', NOW(), '$row[0]', '$aa[0]','0','0')";
    $eintragen mysql_query($eintrag) or die(mysql_error());

    Nicht über die Variablen Namen wundern wie $aa . Wird später geändert :/. Schaue später mal, ob es jetzt so klappt, wenn ich für alles eine Schleife mache und vielleicht kann man das ganze ja mit weniger Schleifen optimieren . Bin jetzt mal schlafen
     

  6. #6
    Avatar von Sunny1245
    Sunny1245 Sunny1245 ist offline Mitglied Silber
    Registriert seit
    Jul 2011
    Ort
    Nordhessen
    Beiträge
    74
    Zitat Zitat von Walther Beitrag anzeigen
    Nicht über die Variablen Namen wundern wie $aa . Wird später geändert :/.
    Bei uns in der Firma ist es eine Todessünde wenn du Variablen auch bei einem Test so bennenst und dann erklärst diese später zu ändern. Ich kenne es von mir selber, die Variable habe ich dann doch an drei anderen stellen verwandt und keine Lust mehr sie zu ändern. Ergo: Sofort sprechenende Variablen-Namen.

    Zurück zum Code:
    Du benutzt hier eine While schleife, obwohl für dein Probleme eine For-Schleife viel Eleganter wäre. Weiterhin willst du wirklich 12 Schleifen bauen ? Das ist sehr umständlich, geht unheimlich auf die Performance. Außerdem: Was passiert wenn es mal mehr als 12 Mannschaften werden? Dann musst du an den Quellcode und das ist nicht wünschenswert.
     
    Tutorials:
    Dynamisch mehrere Input Felder genieren

    Sprachen:
    - Java - C++ - VBS - PHP - HTML - CSS - MySQL - OracleSQL- JavaScript - Ajax -

  7. #7
    Walther Walther ist offline Grünschnabel
    Registriert seit
    Jul 2011
    Beiträge
    4
    Genau das mit der dynamik habe ich mir auch gedacht, und deshalb habe ich jetzt alles in zwei Schleifen gepackt(for schleife, Danke )
    Das ganze sieht nun so aus, jedoch liefert es nicht das gewünschte Ergebniss...

    PHP-Code:

    for ($quit 1,$id 1$quit <= 12$quit++, $id++) {
        
    $heim_abfrage mysql_query ("SELECT name FROM mannschaft WHERE id='$id'");
        
    $heim mysql_fetch_array($heim_abfrage);
        
            for (
    $i 1$i <= 12$i++) {
            
    $i++;
            
    $gegner_abfrage mysql_query ("SELECT name FROM mannschaft WHERE id='$i'");
            
    $gegner mysql_fetch_array($gegner_abfrage);
            
    $eintrag "INSERT INTO spieltage (id, Spieltag, date, Heim, Gegner, ToreHeim, ToreGegner) VALUES ('id', '$quit', NOW(), '$heim[0]',                                 '$gegner[0]','0','0')";
            
    $eintragen mysql_query($eintrag) or die(mysql_error());
            
            }

     

  8. #8
    Tim Bureck Tim Bureck ist offline Mitglied Platin
    Registriert seit
    Apr 2009
    Ort
    Düsseldorf (NRW)
    Beiträge
    508
    Hi,

    einen netten Algorithmus zur Problematik gibt es hier.

    Best regards
     

  9. #9
    Avatar von Sunny1245
    Sunny1245 Sunny1245 ist offline Mitglied Silber
    Registriert seit
    Jul 2011
    Ort
    Nordhessen
    Beiträge
    74
    UPDATE:

    Funktioniert nun. Sorry wenn ich nicht so die Array-Konventionen eingehalten habe, aber damit hatte ich jetzt noch kaum berührungspunkte. Jetzt muss ich mal schauen, wie ich das mit den Spieltagen hinbekomme.

    UPDATE2:
    Jetzt auch mit funktionierenden Spieltagen

    PHP-Code:
    <?php

    include "db_con.php";
    $current_home = array();

    $select_teams "Select id, mannschaft from mannschaften";

    $select_fetch mysql_query($select_teams);

    $anzahl_mannschaften mysql_num_rows($select_fetch);

    for (
    $i 1;$i <= $anzahl_mannschaften;$i++){
    $spieltage 1;
    $select_home "Select id, mannschaft from mannschaften where id='$i'";

    $home_fetch mysql_query($select_home);

    $data mysql_fetch_array($home_fetch);

    $home $data["id"];

    $current_home[$i] = $home;


    for (
    $j 1;$j <= $anzahl_mannschaften;$j++){

    if (
    $current_home[$j] == $j){



    }

    else {



    $select_away "Select id, mannschaft from mannschaften where id='$j'";

    $away_fetch mysql_query($select_away);

    $data_away mysql_fetch_array($away_fetch);

    $away $data_away["id"];



    echo 
    "Spieltag ".$spieltage.": ".$data["id"]." - ".$data_away["id"]."</br>";
    $spieltage++;
    }
    }


    }
    ?>
    Geändert von Sunny1245 (27.07.11 um 15:17 Uhr)
     
    Tutorials:
    Dynamisch mehrere Input Felder genieren

    Sprachen:
    - Java - C++ - VBS - PHP - HTML - CSS - MySQL - OracleSQL- JavaScript - Ajax -

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 05.01.11, 09:05
  2. daten aus einer tabelle in die andere kopieren bzw. übernehmen
    Von Xching im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 30.11.10, 16:30
  3. Antworten: 1
    Letzter Beitrag: 05.05.07, 19:44
  4. Bestimmte Einträge aus einer Tabelle in eine andere Tabelle kopieren
    Von medico im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 29.03.06, 18:42
  5. Daten kopieren in andere Tabelle
    Von jc-freak im Forum PHP
    Antworten: 3
    Letzter Beitrag: 14.06.05, 19:00

Stichworte