[PHP] dynamische Baumdarstellung mit HTML-Tables & PHP

Dieses Thema im Forum "Ruby, php, Perl, Python ..." wurde erstellt von sparky, 07.04.2004.

  1. sparky

    sparky Mitglied

    Dabei seit:
    16.01.2004
    Beiträge:
    47
    Zustimmungen:
    0
    Hallihallo,
    um es kurz zu erklären, ich suche nach einem Algorithmus o.ä. mit dem ich dynamisch so Baumdarstellungen von Turnieren berechnen/anzeigen kann.
    Ein Beispiel hier, das sollte die grobe Funktionsweise verdeutlichen und zeigen was ich als Ziel habe.
    http://www.dotlan.net/gallery/archive/20040127-85ACE3/0004.png

    Ich hab shcon unendlich viele Ansätze versucht, habs bisher aber noch nicht hinbekommen und deswegen frag ich einfach mal hier.

    Die Teams liegen in mehreren Tabellen die ungefähr so aussehen könnten. Damit lässt sich der prinzipielle Turnierverlauf korrekt berechnen (also wer wo hinverteilt wird, ausgescheiden ist etc ...) Das Problem ist nur, dass in so eine Baumansicht mit HTML-Tabellen umzusetzen. Hab auch shcon versucht die einzelnen Schritte in nem extra Table für die Baumansicht noch zu speichern, aber das Problem liegt wie gehabt an der HTML Ausgabe.

    teams:
    | teamid | name | round | side | seeding_no |

    matches:
    | id | team1id | team2id | victoryid | loserid |

    hat sowas schonma jemand gemacht, oder hat jemand ne Idee/Tipp, kompletten Neuansatz ? ... das Problem lässt mich einfach nicht los, aber ich werd noch verrückt :|
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. hehejo

    hehejo blöder Purist

    Dabei seit:
    12.10.2003
    Beiträge:
    1.280
    Zustimmungen:
    0
    Ort:
    Stein (Mittelfranken)
    Boa, ich hab mir jetzt nur mal das Bild angesehen. Heftig. Aber leider kann ich dir da nicht helfen.
    Nach Tabellen sieht das ja nicht aus - sonst wären die Boxen ja auch alle in einer Reihe..
    Es könnte doch aber auch sein, dass die Boxen Bilder sind, die dann mittels PHP und der Grafiklibrary (don't ask me how!) beschriftet werden.
    Evtl. ist vorher ja auch bekannt, wieviele Spiele es gibt? Dann kann man das schon auf einem Bild anordnen..

    Vll. hilft dir das ja ein bisschen..
     
  4. snax

    snax Doppel-As

    Dabei seit:
    31.03.2004
    Beiträge:
    140
    Zustimmungen:
    0
    Ort:
    BaWü
    ohje :)) sowas hab ich bisher auch noch nicht gemacht.
    aber mögliche ansätze wären:

    • Tabellen
    • Layer (Ebenen, Div's)
    • Ganzes Image mit PHP und GD erstellen
    letzters ist natürlich nicht gerade leicht, aber flexibel. ich geh davon aus, das du diese ansicht nach jedem turnier aktualisieren willst, bis alle turniere durch sind, oder soll der verlauf erst nach ablauf aller turniere veröffentlicht werden?
     
  5. #4 sparky, 08.04.2004
    Zuletzt bearbeitet: 08.04.2004
    sparky

    sparky Mitglied

    Dabei seit:
    16.01.2004
    Beiträge:
    47
    Zustimmungen:
    0
    nein, also es sind 100% Tabellen.
    Ich habs mir schonmal aufgezeichnet, das geht wenn man doppelt so viele Reihen wie vorhandene Teams (in Runde 0) nimmt.

    EDIT:
    hier noch ein anderes Beispiel. Das ist 100% mit Tabellen gelöst:
    http://www.kepler2004.de/bilder/treeview.jpg

    also die <tr> sind dann Teamanzahl * 2, und dann quasi immer in die Lücken "gefüllt"
     
  6. #5 snax, 08.04.2004
    Zuletzt bearbeitet: 08.04.2004
    snax

    snax Doppel-As

    Dabei seit:
    31.03.2004
    Beiträge:
    140
    Zustimmungen:
    0
    Ort:
    BaWü
    der einfachste weg wäre, die leute die bereits solch ein turnierverlauf erstellt haben, nach dem quelltext zu fragen :D

    ich versuch mal was in der richtung hinzubekommen...

    edit: ok, hier findest du mal meinen ansatz zu dem thema...
    >> turnier.php
    >> turnierquelle.php
    vielleicht hilft es dir ja weiter :)
     
  7. sparky

    sparky Mitglied

    Dabei seit:
    16.01.2004
    Beiträge:
    47
    Zustimmungen:
    0
    naja gut, soweit bin ich bisher auch immer gekommen :)
    Das Problem kommt auf, sobald due die Verlierer aus der Gewinnerseite links dann wieder einordnen musst.

    Das Problem ist dass keiner seinen Quelltext rausrückt ._. die sind z.T. sogar extra mit Zend Optimizer verschlüsselt ...
     
  8. snax

    snax Doppel-As

    Dabei seit:
    31.03.2004
    Beiträge:
    140
    Zustimmungen:
    0
    Ort:
    BaWü
    nein warum? du brauchst doch nur (wenn die gewinner seite fertig ist mit allen spielen) auf die selbe art und weise gewinner und looser verarbeiten.

    also (bsp. gewinner seite)... array() $zweite_runde anlegen und inhalt von array() $gewinner reinkopieren -> dann legst du unten wieder ein formular an, das alle spieler anzeigt und stellst anschliessend die gewinner ein -> formular abschicken und gewinner wieder ermitteln.

    so kann man's erstmal machen :D vll ist prozedual aber hier auch der falsche ansatz und man sollte es lieber oo lösen :frage:
     
  9. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  10. sparky

    sparky Mitglied

    Dabei seit:
    16.01.2004
    Beiträge:
    47
    Zustimmungen:
    0
    also ich bins mal wieder :)
    Ich habs jetzt wohl mal soweit geschafft, einen normalen Baum richtig auszugeben. Allerdings hab ich für die linke Seite noch nix brauchbares basteln können. Eventuell kann sich ja hier mal jemand den Code anschaun und rumprobieren ? :)

    PHP:
    <?php
      
    function gameinfo($team_1 "xXx"$team_2 "xXx")
               {
                   
    $gameinfo .= "<table width=\"70\" height=\"50\" cellspacing=\"0\" border=\"1\">";
                   
    $gameinfo .= "  <tr><td align=\"center\">".$team_1."</td></tr>";
                   
    $gameinfo .= "  <tr><td align=\"center\">vs.</td></tr>";
                   
    $gameinfo .= "  <tr><td align=\"center\">".$team_2."</td></tr>";
                   
    $gameinfo .= "</table>";
                   return 
    $gameinfo;
               }

      
    $teams 16;
      
    $teams $teams/2;
      
    $rounds log($teams)/log(2);

      
    $y_max $teams*2-1;
      
    $x_max $rounds*2+1;

      echo 
    "<table border=0 cellpadding=0 cellspacing=0><tr>\n";

      for(
    $i=1;$i<=$x_max;$i++)

          {
          echo (
    $i%2) ? "<td width=70 align=center><b>round ".++$round."</b></td>" "<td width=70>&nbsp;</td>";
          }

      echo 
    "</tr></table><br>";

      for(
    $x 1$x <= $x_max$x++)
          {
          for(
    $y 1;$y <= $y_max$y++)
              {
              
    # Runde 1
              
    if($x == && $y%2) { $match[$x][$y] = gameinfo(); }

              
    # Runde 2
              
    if($x == && $y%== false && ++$temp2%2)
                 {
                 
    $match[$x][$y] = gameinfo();;

                 for(
    $i=$y-1$i <= $y+1$i++) { $match[$x-1][$i] = "<img src=\"up.gif\">"; }

                 
    $match[$x-1][$y-1] = "<img src=\"right_down.gif\">";
                 
    $match[$x-1][$y] = "<img src=\"middle.gif\">";
                 
    $match[$x-1][$y+1] = "<img src=\"right_up.gif\">";
                 }

              
    # Runde 3
              
    if($x == && $y%== false && ++$temp3%2)
                 {
                 
    $match[$x][$y] = gameinfo();;
                 
    $match[$x-1][$y] = "<img src=\"middle.gif\">";

                 for(
    $i=$y-2$i <= $y+2$i++) { $match[$x-1][$i] = "<img src=\"up.gif\">"; }

                 
    $match[$x-1][$y-2] = "<img src=\"right_down.gif\">";
                 
    $match[$x-1][$y] = "<img src=\"middle.gif\">";
                 
    $match[$x-1][$y+2] = "<img src=\"right_up.gif\">";
                 }

              
    # Runde 4
              
    if($x == && $y%== false && ++$temp4%2)
                 {
                 
    $match[$x][$y] = gameinfo();;
                 
    $match[$x-1][$y] = "<img src=\"middle.gif\">";

                 for(
    $i=$y-4$i <= $y+4$i++) { $match[$x-1][$i] = "<img src=\"up.gif\">"; }

                 
    $match[$x-1][$y-4] = "<img src=\"right_down.gif\">";
                 
    $match[$x-1][$y] = "<img src=\"middle.gif\">";
                 
    $match[$x-1][$y+4] = "<img src=\"right_up.gif\">";
                 }

              
    # Runde 5
              
    if($x == && $y%16 == false && ++$temp5%2)
                 {
                 
    $match[$x][$y] = gameinfo();;
                 
    $match[$x-1][$y] = "<img src=\"middle.gif\">";

                 for(
    $i=$y-8$i <= $y+8$i++) { $match[$x-1][$i] = "<img src=\"up.gif\">"; }

                 
    $match[$x-1][$y-8] = "<img src=\"right_down.gif\">";
                 
    $match[$x-1][$y] = "<img src=\"middle.gif\">";
                 
    $match[$x-1][$y+8] = "<img src=\"right_up.gif\">";
                 }

              
    # Runde 6
              
    if($x == 11 && $y%32 == false && ++$temp6%2)
                 {
                 
    $match[$x][$y] = gameinfo();;
                 
    $match[$x-1][$y] = "<img src=\"middle.gif\">";

                 for(
    $i=$y-16$i <= $y+16$i++) { $match[$x-1][$i] = "<img src=\"up.gif\">"; }

                 
    $match[$x-1][$y-16] = "<img src=\"right_down.gif\">";
                 
    $match[$x-1][$y] = "<img src=\"middle.gif\">";
                 
    $match[$x-1][$y+16] = "<img src=\"right_up.gif\">";
                 }

              
    # Runde 7
              
    if($x == 13 && $y%64 == false && ++$temp7%2)
                 {
                 
    $match[$x][$y] = gameinfo();;
                 
    $match[$x-1][$y] = "<img src=\"middle.gif\">";

                 for(
    $i=$y-32$i <= $y+32$i++) { $match[$x-1][$i] = "<img src=\"up.gif\">"; }

                 
    $match[$x-1][$y-32] = "<img src=\"right_down.gif\">";
                 
    $match[$x-1][$y] = "<img src=\"middle.gif\">";
                 
    $match[$x-1][$y+32] = "<img src=\"right_up.gif\">";
                 }

              
    # Runde 8
              
    if($x == 15 && $y%128 == false && ++$temp8%2)
                 {
                 
    $match[$x][$y] = gameinfo();;
                 
    $match[$x-1][$y] = "<img src=\"middle.gif\">";

                 for(
    $i=$y-64$i <= $y+64$i++) { $match[$x-1][$i] = "<img src=\"up.gif\">"; }

                 
    $match[$x-1][$y-64] = "<img src=\"right_down.gif\">";
                 
    $match[$x-1][$y] = "<img src=\"middle.gif\">";
                 
    $match[$x-1][$y+64] = "<img src=\"right_up.gif\">";
                 }

              
    # Runde 9
              
    if($x == 17 && $y%256 == false && ++$temp9%2)
                 {
                 
    $match[$x][$y] = gameinfo();;
                 
    $match[$x-1][$y] = "<img src=\"middle.gif\">";

                 for(
    $i=$y-128$i <= $y+128$i++) { $match[$x-1][$i] = "<img src=\"up.gif\">"; }

                 
    $match[$x-1][$y-128] = "<img src=\"right_down.gif\">";
                 
    $match[$x-1][$y] = "<img src=\"middle.gif\">";
                 
    $match[$x-1][$y+128] = "<img src=\"right_up.gif\">";
                 }

              
    # Runde 10
              
    if($x == 19 && $y%512 == false && ++$temp10%2)
                 {
                 
    $match[$x][$y] = gameinfo();;
                 
    $match[$x-1][$y] = "<img src=\"middle.gif\">";

                 for(
    $i=$y-256$i <= $y+256$i++) { $match[$x-1][$i] = "<img src=\"up.gif\">"; }

                 
    $match[$x-1][$y-256] = "<img src=\"right_down.gif\">";
                 
    $match[$x-1][$y] = "<img src=\"middle.gif\">";
                 
    $match[$x-1][$y+256] = "<img src=\"right_up.gif\">";
                 }

              
    # Runde 11
              
    if($x == 21 && $y%1024 == false && ++$temp11%2)
                 {
                 
    $match[$x][$y] = gameinfo();;
                 
    $match[$x-1][$y] = "<img src=\"middle.gif\">";

                 for(
    $i=$y-512$i <= $y+512$i++) { $match[$x-1][$i] = "<img src=\"up.gif\">"; }

                 
    $match[$x-1][$y-512] = "<img src=\"right_down.gif\">";
                 
    $match[$x-1][$y] = "<img src=\"middle.gif\">";
                 
    $match[$x-1][$y+512] = "<img src=\"right_up.gif\">";
                 }
              }
          }

      
    // ausgabe
      
    echo "<table border=0 cellpadding=0 cellspacing=0>\n";
      for(
    $y 1;$y <= $y_max$y++)
          {
          echo 
    "<tr>";
          for(
    $x 1$x <= $x_max$x++)
              {
              if(
    $match[$x][$y])
                 {
                 echo 
    "  <td width=70 align=center>".$match[$x][$y]."</td>\n";
                 }
              else
                 {
                 echo 
    "  <td width=50>&nbsp;</td>\n";
                 }
              }
          echo 
    "</tr>\n";
          }
      echo 
    "</table>\n";
    ?>
     
  11. DaMutz

    DaMutz Doppel-As

    Dabei seit:
    18.10.2003
    Beiträge:
    149
    Zustimmungen:
    0
    Ort:
    Giebenach / Schweiz
Thema:

[PHP] dynamische Baumdarstellung mit HTML-Tables & PHP

Die Seite wird geladen...

[PHP] dynamische Baumdarstellung mit HTML-Tables & PHP - Ähnliche Themen

  1. [PHP] Autologin-Funktion

    [PHP] Autologin-Funktion: HI, habe mir eben mal eine Autologin Funktion überlegt. Ich weiß zwar, das solche Funktionen zum teil, gerade im Web, argwöhnisch beliebäugelt...
  2. [PHP] file_exists und scandir, mal gehts mal nicht

    [PHP] file_exists und scandir, mal gehts mal nicht: HI, Ich habe zZ ein ein Problem mit den oben gennanten Funktionen. Ich sehe gerade nicht durch, in welchen Verzeichnissen diese Funktionen alles...
  3. [PHP] Session-Authentifizierung zentralisieren

    [PHP] Session-Authentifizierung zentralisieren: Hi, ich prüfe auf jeder geschützten Seite ob der enutzer befugt ist diese zu sehen oder nicht mittels: <?php session_start(); $hostname...
  4. [PHP] Checkboxen-Auswahl + dazugehörige Werte in Array

    [PHP] Checkboxen-Auswahl + dazugehörige Werte in Array: Hi, ich habe mit checkboxen eine Liste erstellt, aus der verschiedene Gegenstände durch Haken setzen markiert werden können. Über einen...
  5. [PHP]Passwortschutz für Verzeichnisse

    [PHP]Passwortschutz für Verzeichnisse: Hi, ich hätte gerne auf meinem Webserver, dass auf der Startseite der Benutzername und das Passwort angegeben werden müssen und man sich so...