php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Thema geschlossen
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.07.2008, 12:25  
Neuer Benutzer
 
Registriert seit: 24.07.2008
Beiträge: 2
kingflo befindet sich auf einem aufstrebenden Ast
Standard Turnierbaum aus array erstellen

Hallo ich versuche gerade ein Turnierbaum aus einem simplem array zu erstellen, doch leider gelingt das ganze nur zum teil, vielleicht kann mir da ja jemand helfen. Und zwar geht es erstmal nur darum aus einem array mit den infos name und round einen html turnierbaum zu erstellen.

wenn z.b in dem array nur peter mit round 1 und hans mit round 2 drin ist, dann soll der baum so gezeichnet werden, dass hans gegen peter gewonnen hat. Also z.B so

Peter |
| -- Hans
Hans |

usw.. usw...

Ich habe bis jetzt folgendes script gebastelt, welches auch zum Teil funktioniert. Allerdings funzt es so nur bei jedem 2. eintrag im Array, und haut nicht so ganz hin. Ihr könnt das script ja mal ausprobieren, und villeicht findet ihr ja ne möglichkeit es besser zu machen, so dass es auch funktioniert, das würde mich auf jeden Fall sehr freuen.

PHP-Code:
$teams = array( 
array( 
'Name' => 'Team 1'
'Round' => 2
), 

array( 
'Name' => 'Team 2'
'Round' => 1
), 

array( 
'Name' => 'Team 3'
'Round' => 1
), 

array( 
'Name' => 'Team 4'
'Round' => 3
), 

array( 
'Name' => 'Team 5'
'Round' => 3
), 

array( 
'Name' => 'Team 6'
'Round' => 1
), 

array( 
'Name' => 'Team 7'
'Round' => 3
), 

array( 
'Name' => 'Team 8'
'Round' => 1
), 

array( 
'Name' => 'Team 9'
'Round' => 2
), 

array( 
'Name' => 'Team 10'
'Round' => 1
), 

array( 
'Name' => 'Team 11'
'Round' => 2
), 

array( 
'Name' => 'Team 12'
'Round' => 1
), 

array( 
'Name' => 'Team 13'
'Round' => 1
), 

array( 
'Name' => 'Team 14'
'Round' => 2
), 

array( 
'Name' => 'Team 15'
'Round' => 2
), 

array( 
'Name' => 'Team 16'
'Round' => 1
), 


); 

echo
'<pre>'
print_r($teams); 
echo
'</pre>'



function 
mach_tabelle($teams

$tiefe log(count($teams),2); 
$pow pow(2,$tiefe); 

    if (
$pow != count($teams)){ 
        return 
false
    } 

    
$rows << $tiefe
    
$result' <table border="1" cols="'.$tiefe.'" rows="'.$rows.'"> '
    
$i 0
    
$anzahlTeams count($teams); 
        for (
$row 0$row $rows$row++){ 
            
$result .= '<tr> '
            for(
$col=0;$col<$tiefe+1;$col++){ 
                
$rowspan=''
                
$raster << $col
                
$feld =$rows*$col+$row
                if (
$col>0$rowspan=' rowspan="'.$raster.'" '
                if((
$col==0) || (($feld $raster) == 0)){ 
                    
$round $col+1
                    
$i $row+$col
                     
                    if(
$teams[$i]['Round']>=$round){ 
                        
$text $teams[$i]['Name']; 
                    } 
                    else{ 
                        if(
$teams[$i-1]['Round']>=$round){ 
                            
$text $teams[$i-1]['Name']; 
                        }else{ 
                            
$text '&nbsp;&nbsp;&nbsp;&nbsp;'
                        } 
                    }                 
                    
$result .= '<td '.$rowspan.' >'.$text.$i.'</td> '
                } 
            } 
            
$result .= '</tr>'
        } 
$result .= '</table>'
return 
$result



echo 
mach_tabelle($teams); 

Geändert von kingflo (25.07.2008 um 10:30 Uhr).
kingflo ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 24.07.2008, 20:10  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Ist die Struktur des arrays so vorgegeben und unveränderlich?
David ist offline  
Alt 24.07.2008, 20:19  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.247
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Kannst Du erklären, nach welchen Kriterien der Baum erstellt werden soll? Was Round und das kryptische Name für eine Rolle spielen? Bin mit dem Konzept nicht so vertraut.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 25.07.2008, 10:32  
Neuer Benutzer
 
Registriert seit: 24.07.2008
Beiträge: 2
kingflo befindet sich auf einem aufstrebenden Ast
Standard

Der Name ist nur der Name des Teams, und round steht für die tiefe, in welcher der Name (team) in dem Turnierbaum stehen soll. Ist round bei Team 1 also auf 1 und bei Team 2 auf 1 und bei Team 3 auf 1 und bei Team 4 auf 2 müsste der baum so aussehen:

Team 1 -

Team 2 -

Team 3 -
----------Team 4
Team 4 -


So funktioniert es mit meinem aktuellem Skript auch.
aber versuch z.B mal die funktion mit diesem Array als Parameter aufzurufen. Da müsste Team 4 z.B eigentlich das Turnier gewonnen haben, funktioneirt aber nicht.

PHP-Code:
$teams = array( 
array( 
'Name' => 'Team 1'
'Round' => 2
), 

array( 
'Name' => 'Team 2'
'Round' => 1
), 

array( 
'Name' => 'Team 3'
'Round' => 1
), 

array( 
'Name' => 'Team 4'
'Round' => 3,  // Team 4 hat das finale gewonnen
), 

echo 
mach_tabelle($teams); 

Geändert von kingflo (25.07.2008 um 10:38 Uhr).
kingflo ist offline  
Alt 25.07.2008, 11:29  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Wenn ich dich richtig verstanden habe, dann verstehe ich nicht wie ich in deinem Beispiel jetzt rausfinden kann gegen wen z.B. Team 4 in der ersten Runde gewonnen hat oder ist das irrelevant? Oder ist genau das dein Problem?
cycap ist offline  
Alt 25.07.2008, 11:46  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.247
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Versteh ich auch nicht. Wer von Team 2:Team 3 ist denn in die zweite Runde weitergekommen?

Turnierbaum – Wikipedia
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 25.07.2008, 18:53  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Ich erinnere mich ganz ganz dunkel an so etwas aus Uni-Zeiten. Man speichert nur die "Reparaturdaten", die man braucht um einen (reverse?) inorder Tree auszubalancieren und kann damit den gesamten Baum rekonstruieren. Finde ich aber leider nicht mehr und die Studienunterlagen sind doch irgendwann mal entsorgt worden. Aber vielleicht macht es ja bei jemand anderem *ding*.
David ist offline  
Alt 26.07.2008, 11:48  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 34.247
PHP-Kenntnisse:
Fortgeschritten
nikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz seinnikosch kann auf vieles stolz sein
Standard

Sowas wie ein nested set?
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 27.07.2008, 00:01  
Erfahrener Benutzer
 
Registriert seit: 07.06.2008
Beiträge: 993
PHP-Kenntnisse:
Fortgeschritten
Frank befindet sich auf einem aufstrebenden Ast
Frank eine Nachricht über ICQ schicken Frank eine Nachricht über MSN schicken Frank eine Nachricht über Yahoo! schicken
Standard

So ich hab mal etwas gebastelt.
PHP-Code:
interface iMatchTable {
    public function 
__construct();
    public function 
__destruct();
    public function 
setData($tabledata);
    public function 
getTree();
}
class 
MatchTable implements iMatchTable{
    private 
$raw;
    private 
$tree;
    private 
$output;
    private 
$printed;
    public function 
__construct() {
        
$this->raw = array();
        
$this->tree = array();
        
$this->output "";
        
$this->printed false;
    }
    public function 
setData($tabledata) {
        
$this->raw $tabledata;
    }
    public function 
getTree() {
        
$this->printed true;
        foreach(
$this->raw as $team) {
            
$tmp = array();
            for(
$i 0$i $team["Round"]; $i++) {
                
$tmp[] = $team["Name"];
            }
            
$tree[] = $tmp;
        }
        foreach(
$tree as $team) {
            foreach(
$team as $index=>$name) {
                
$this->tree[$index][] = $name;
            }
        }
        
var_dump($this->tree);
    }
    public function 
__destruct() {
        if(!
$this->printed)
            echo 
$this->getTree();
        unset(
$this);
    }

Es gibt noch nichts aus (da es jetzt schon so spät ist habe ich keine Lust mehr), aber man bekommt schonmal eine bessere Ansicht
Code:
array(3) {
  [0]=>
  array(4) {
    [0]=>
    string(6) "Team 1"
    [1]=>
    string(6) "Team 2"
    [2]=>
    string(6) "Team 3"
    [3]=>
    string(6) "Team 4"
  }
  [1]=>
  array(2) {
    [0]=>
    string(6) "Team 1"
    [1]=>
    string(6) "Team 4"
  }
  [2]=>
  array(1) {
    [0]=>
    string(6) "Team 4"
  }
}
Jedes Array entspricht dabei immer den leuten die noch im spiel sind. [0] hat also alle Leute der 1. Runde in sich, [1] hat die leute in sich die in die 2. Runde gekommen sind, [2] hat die leute die in die 3. Runde gekommen sind etc.
Daraus sollte sich eigentlich eine Ausgabe basteln lassen.
__________________
Frank ist offline  
Alt 29.07.2008, 19:50  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Sowas wie ein nested set?
Andere Regeln, aber ansonsten ja.

...wenn ich mich heute schlecht schlafe, ist das Deine Schuld Und einfallen wird es mir trotzdem nicht mehr.
David ist offline  
Thema geschlossen


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Soapfault: Undefined Property Argi PHP-Fortgeschrittene 0 28.07.2008 11:17
mehrdimensionales Array in Klasse erstellen Nixwisser PHP Tipps 2007 2 01.08.2007 14:30
ARRAY: alle möglichen Kombinationen Tentacle PHP Tipps 2006 13 12.05.2006 00:18
Übersicht aus mehrdimensionalem Array erzeugen Crypi PHP-Fortgeschrittene 0 30.01.2006 13:44
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
Aus mehrdimensionalem Array ein Baumdiagramm erstellen greg PHP-Fortgeschrittene 11 25.10.2005 13:16
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2) Buhmann PHP-Fortgeschrittene 4 12.07.2005 14:03
Array mit ID erstellen PHP Tipps 2005-2 25 06.06.2005 14:45
Array wie auslesen? PHP Tipps 2005 7 07.03.2005 11:43
Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31
Abfrage mit id aus anderer Tabelle suter PHP Tipps 2004-2 15 16.12.2004 14:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
turnierbaum erstellen, php turnierbaum, turnierbaum html, html turnierbaum, turnierbaum, php array erstellen, turnierbaum php, turnierbaum script, turnierbaum erstellen html, turnierbaum php script, tunierbaum erstellen, array baum, tunierbaum php, turnierbaum online erstellen, turnierbaum erstellen online, array erstellen php, turnierbaum 10 teams, turnierbaum erstellen php, turnierbaum php erstellen, turnierbaum html code

Alle Zeitangaben in WEZ +1. Es ist jetzt 14:37 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum