kleines Datei Prob

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • kleines Datei Prob

    Moin Moin,

    ich habe ein Problem und zwar will ich ein Turnierscript schreiben, die Daten sollen wie folgt in einer Datei liegen...

    PHP-Code:
    <!--OPTIONS-->
    Name;MD
    AnzGr
    ;4
    Runden
    ;2
    <!--OPTIONSENDE-->


    <!--
    TEAMSTART-->
    1;HG Norderstedt 
    2
    ;HG Norderstedt 2
    3
    ;AMTV Hamburg
    4
    ;Vfl Lichtenrade
    5
    ;Vfl Pinneberg
    6
    ;HGHB
    7
    ;NSV
    8
    ;Reinickendorfer Füchse
    9
    ;OSC Rheinhausen
    10
    ;Buxtehuder SV
    11
    ;Buxtehuder SV 2
    12
    ;Niendorfer TSV
    13
    ;SV Post Schwerin
    14
    ;Empor Rostock
    15
    ;Lugi Lund
    16
    ;IK Sävehof
    <!--TEAMENDE-->

    <!--
    GR1-->
    1;1
    2
    ;4
    3
    ;8
    4
    ;12
    <!--/GR1--> 
    Wie ich die einzelnen Bereiche auslese weiss ich, nur das Problem was ich habe ist wie kann ich wenn ich die <!--GR1--> auslese die Ausgabe so gestallten, dass das Script statt 1,4,8 oder 12 den jeweiligen Teamnamen angibt...

    Mit mySQL wäre es kein Problem aber ich will das Script für die Breite masse die keine Datenbank haben schreiben und es soll nur eine Datendatei sein

    Hier nun mein Quellcode:
    PHP-Code:
    function teams ()
    {
    $tmstart="<!--TEAMSTART-->";
    $tmende="<!--TEAMENDE-->";

    $cupdatei "md.cup"// die zu öffnende Datei zum Zwischenspeichern
    $trennzeichen ";";         
            
            
    $teamarray file("md.cup"); // Liest die Temporäre Datei in ein Array
            
            
    for($x=0;$x<count($teamarray);$x++) 
            {
            if(
    eregi($tmstart$teamarray[$x])) 
                {
                
    $teamstart $x;
                
    // echo "der Anfang ist in Zeile $teamstart<br>\n";
                
    }
                elseif(
    eregi($tmende$teamarray[$x])) 
                {
                
    $teamende $x;
                
    // echo "das Ende ist in Zeile $teamende<br>\n";
                
    break;
                }
                else { }
            }

            for(
    $y=($teamstart+1);$y<($teamende);$y++) // mit dieser Schleife wird der Start und Endpunkt der Datei festgelegt
            
    {
            
    sizeof($teamarray[$y]); 
            if((
    $teamarray[$y] != "")&&($teamarray[$y] != "\n")) 
              { 
              
    $teameintrag =  explode($trennzeichen,$teamarray[$y]); 
              
    $teamid "$teameintrag[0]"// Hier wird die Teamid ausgelesen und an die Variable $teamid übergeben
              
    $team "$teameintrag[1]"// Hier wird der Name des Teams an die Variable $team übergeben
              
    echo "Die Teamid lt. $teamid und der Name der Mannschaft ist $team<br>\n";
              } 
            
    // Hier endet die for-Schleife
            
    }
    // Hier endet die Teamfunktion


    // Hier startet die Optionen-Funktionen
    function options ()
    {
    $opstart="<!--OPTIONS-->";
    $opende="<!--OPTIONSENDE-->";

    $cupdatei "md.cup"// die zu öffnende Datei zum Zwischenspeichern
    $trennzeichen ";";         
            
            
    $optionsarray file("md.cup"); // Liest die Temporäre Datei in ein Array
            
            
    for($x=0;$x<count($optionsarray);$x++) 
            {
            if(
    eregi($opstart$optionsarray[$x])) 
                {
                
    $optionsstart $x;
                
    // echo "der Anfang ist in Zeile $optionsstart<br>\n";
                
    }
                elseif(
    eregi($opende$optionsarray[$x])) 
                {
                
    $optionsende $x;
                
    // echo "das Ende ist in Zeile $optionsende<br>\n";
                
    break;
                }
                else { }
            }

    for(
    $y=($optionsstart+1);$y<($optionsende);$y++) // mit dieser Schleife wird der Start und Endpunkt der Datei festgelegt
            
    {
            
    sizeof($optionsarray[$y]); 
            if((
    $optionsarray[$y] != "")&&($optionsarray[$y] != "\n")) 
              { 
              
    $optionseintrag =  explode($trennzeichen,$optionsarray[$y]); 
              
    $options "$optionseintrag[0]"// Hier wird die Teamid ausgelesen und an die Variable $teamid übergeben
              
    $optionsvar "$optionseintrag[1]"// Hier wird der Name des Teams an die Variable $team übergeben
              
    echo "Das Turnier hat die folgenden Einstellungen $options : $optionsvar<br>\n";
              } 
            
    // Hier endet die for-Schleife
            
    }
    }

    function 
    gruppe ($grnr)
    {
    $grstart="<!--GR$grnr-->";
    $grende="<!--/GR$grnr-->";

    $cupdatei "md.cup"// die zu öffnende Datei zum Zwischenspeichern
    $trennzeichen ";";         
            
            
    $gruppearray file("md.cup"); // Liest die Temporäre Datei in ein Array
            
            
    for($x=0;$x<count($gruppearray);$x++) 
            {
            if(
    eregi($grstart$gruppearray[$x])) 
                {
                
    $gruppestart $x;
                
    // echo "der Anfang ist in Zeile $teamstart<br>\n";
                
    }
                elseif(
    eregi($grende$gruppearray[$x])) 
                {
                
    $gruppeende $x;
                
    // echo "das Ende ist in Zeile $teamende<br>\n";
                
    break;
                }
                else { }
            }

            for(
    $y=($gruppestart+1);$y<($gruppeende);$y++) // mit dieser Schleife wird der Start und Endpunkt der Datei festgelegt
            
    {
            
    sizeof($gruppearray[$y]); 
            if((
    $gruppearray[$y] != "")&&($gruppearray[$y] != "\n")) 
              { 
              
    $gruppeeintrag =  explode($trennzeichen,$gruppearray[$y]); 
              
    $gruppeteamid "$gruppeeintrag[0]"// Hier wird die Teamid ausgelesen und an die Variable $teamid übergeben
              
    $gruppeteam "$gruppeeintrag[1]"// Hier wird der Name des Teams an die Variable $team übergeben
              
    echo "Die Teamid lt. $gruppeteamid und der Name der Mannschaft ist $gruppeteam<br>\n";
              } 
            
    // Hier endet die for-Schleife
            
    }
    // Hier endet die Gruppenfunktion 

  • #2
    du kannst dir ein array machen, dass so aufgebaut ist:
    PHP-Code:
    $team_array[$teamid]=$team;

    // gruppeteam wäre dann:
    echo $team_array[$gruppeeintrag[1]]; 

    btw: du solltest den sich wiederholenden code (zB die eregis ...
    preg_match wäre hier auch besser) in eine separate funktion
    packen ... ist übersichtlicher und wartungsfreundlicher
    Kissolino.com

    Kommentar


    • #3
      Ersteinmal danke...

      wo genau muss ich das array denn dann einbauen ???

      Wäre es besser wenn ich die Aufgaben ohne Funktionen löse ???

      Danke im Voraus

      Kommentar


      • #4
        das array stellst du da zusammen, wo du die teamid & teams ausliest
        schliesslich hast du dort den zugriff auf die daten

        das mit funktionen zu lösen ist schon ok, nur machst du vieles doppelt
        und dreifach, obwohl es immer dasselbe ist.

        du könntest das zB so aufbauen:
        PHP-Code:
        function gettxt($fileinhalt$start$ende)
        {
           
        // hier die ereg/pregmatch
          
        return $ergebnis// wäre zB ein array
        }

        function 
        getfile($filename)
        {
           
        // hier die filefunktion
          
        return $ergebnis// ein array
        }

        function 
        ausgabe()
        {
           
        // andere funktionen aufrufen
           
        $fileinhalt getfile('mc.dup');
           
        $team =  gettxt($fileinhalt'starttext''starttext');
           
        $options =  gettxt($fileinhalt'starttext''starttext');
           
        $gruppe =  gettxt($fileinhalt'starttext''starttext');
          
           
        // ab hier stellst du aus den arrays die daten zusammen und
           // anstelle einer echo -ausgabe weist du hier allen text einer 
           // variablen zu
           
        return $ausgabe// ein string
        }
        echo 
        ausgabe(); 
        Kissolino.com

        Kommentar


        • #5
          ich muss nochmal stören...

          das Script habe ich jetzt wie folgt umgebaut, aber ich bekomme keine Daten ausgegeben, weiss aber nicht wo der Fehler liegt

          PHP-Code:
          <?
          function datenausgabe($dateistart, $dateiende, $fileinhalt)
          {
          for($y=($dateistart+1);$y<($dateiende);$y++) // mit dieser Schleife wird der Start und Endpunkt der Datei festgelegt
                  {
                  sizeof($fileinhalt[$y]); 
                  if(($fileinhalt[$y] != "")&&($fileinhalt[$y] != "\n")) 
                    { 
                    $trennzeichen = ";";
                    $eintrag =  explode($trennzeichen,$fileinhalt[$y]); 
                    $du = "$eintrag[0]"; // Hier wird die Teamid ausgelesen und an die Variable $teamid übergeben
                    $ich = "$eintrag[1]"; // Hier wird der Name des Teams an die Variable $team übergeben
                    } 
                  // Hier endet die for-Schleife
                  }
          }


          function gettxt($fileinhalt, $start, $ende)
          {
             
             for($x=0;$x<count($fileinhalt);$x++) 
             {
             if(eregi($start, $fileinhalt[$x])) 
                      {
                      $dateistart = $x;
                      return $dateistart;
                      }
                      elseif(eregi($ende, $fileinhalt[$x])) 
                      {
                      $dateiende = $x;
                      return $dateiende;
                      break;
                      }
                      else { }
              }
          }

          function getfile($filename)
          {
            file("$filename"); 
           
          }


          function ausgabe()
          {
             $fileinhalt = getfile("md.cup");
             $team =  gettxt($fileinhalt, "<!--TEAMSTART-->", "<!--TEAMENDE-->");
             $options =  gettxt($fileinhalt, "<!--OPTIONS-->", "<!--OPTIONSENDE-->");
             $gruppe =  gettxt($fileinhalt, "<!--GR1-->", "<!--/GR1-->");
            
             $ausgabe = datenausgabe($team[0], $team[1], $fileinhalt);
              
             
             // ab hier stellst du aus den arrays die daten zusammen und
             // anstelle einer echo -ausgabe weist du hier allen text einer 
             // variablen zu
             echo $ausgabe; // ein string
          }
          echo ausgabe();

          Kommentar


          • #6
            hmm,

            deine datenausgabe() hat keinen rückgabewert ... in der ausgabe() machst nen echo, danach nochmal echo ausgabe();
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              alle funktionen sollten mit "return" ein ergebnis zurückliefern,
              in:
              - getfile()
              - datenausgabe()
              - ausgabe()
              Kissolino.com

              Kommentar


              • #8
                Danke für die Antworten, die Ausgabe habe ich hinbekommen doch jetzt habe ich ein Problem was ich noch viel Schlimmer finde aber für Euch evtl. ein Klacks ist.

                und zwar muss ich ja jetzt Zeiel für Zeile auslesen aber ich bekomme immer nur den 1.Datensatz ausgegeben auch mit ner foreach-Schleife

                Wie kann ich denn nun alle Daten zwischen $dateistart bis $dateiende in 1 Array bekommen ???

                Habt Ihr nen Ansatz für mich ???

                PHP-Code:
                function datenausgabe($dateistart$dateiende$fileinhalt)
                {
                for(
                $y=($dateistart+1);$y<($dateiende);$y++) // mit dieser Schleife wird der Start und Endpunkt der Datei festgelegt
                        
                {
                        
                sizeof($fileinhalt[$y]); 
                        if((
                $fileinhalt[$y] != "")&&($fileinhalt[$y] != "\n")) 
                          { 
                          
                $trennzeichen ";";
                          
                $eintrag =  explode($trennzeichen,$fileinhalt[$y]); 
                          
                $datenausgabe1 "$eintrag[0]"// Hier wird die Teamid ausgelesen und an die Variable $teamid übergeben
                          
                $datenausgabe2 "$eintrag[1]"// Hier wird der Name des Teams an die Variable $team übergeben
                          

                        
                $ergebnis array_merge($datenausgabe1$datenausgabe2);
                        return 
                $ergebnis;
                        
                // Hier endet die for-Schleife
                        
                }
                        


                Danke im Voraus und Respekt für Eure Fähigkeiten

                Kommentar


                • #9
                  ^^ so bekommst du nicht das gewünschte ergebnis,
                  du musst mit einem mehrdimensionalen array arbeiten,
                  und arrays erstmal verstehen. mal als beispiel:
                  PHP-Code:
                  <pre>
                  <?php
                  $a 
                  = array(
                              
                  '1;2',
                              
                  '3;4',
                              
                  '5;6'
                              
                  );
                  foreach(
                  $a as $val)
                  {
                      
                  $b[]= explode(';',$val);
                  }
                  print_r($b);
                  ?>
                  in
                  $b[0][0] steht 1
                  $b[0][1] steht 2

                  du kannst nun sowohl die einzelnen werte "direkt" ansprechen oder
                  auch in einer for-schleife durchlaufen, schau dir mal die unterschiede an:
                  PHP-Code:
                  for($i=0;$i<count($b);$i++)
                  {
                      echo 
                  $i '<br />';
                      
                  print_r($b[$i]);
                  }
                  for(
                  $i=0;$i<count($b[0]);$i++)
                  {
                      echo 
                  $b[0][$i] . '<br />';

                  damit solltest du doch weiterkommen
                  Kissolino.com

                  Kommentar


                  • #10
                    danke für die Hilfe... jetzt habe ich nur noch eine Frage, den Rest habe ich gechecked...

                    bei beinem jetzigen Code bekomme ich immer die nachfolgende Fehlermeldung....

                    Notice: Undefined variable: haus in c:\apache\apache\htdocs\cup.php on line 21

                    Aber ich habe doch alle Variablen gesetzt ??? Verstehe ich nicht ...

                    Jemand ne Lösung für mich ???

                    Vielen Dank

                    PHP-Code:
                    function datenausgabe($dateistart$dateiende$fileinhalt)
                    {

                    for(
                    $y=($dateistart+1);$y<($dateiende);$y++) 
                            {
                                  if(
                    $y==($dateistart+1))
                                  {
                                  
                    $haus "$fileinhalt[$y],";
                                  }
                                  elseif(
                    $y>$dateistart && $y<$dateiende)
                                  {
                                  
                    $haus.= "$fileinhalt[$y],";
                                  }
                                  elseif(
                    $y>=$dateiende)
                                  {
                                  
                    $haus.="$fileinhalt[$y]";
                                  }
                                  
                            }
                            
                    $tkkg = array($haus);
                            return 
                    $tkkg;
                            
                    // Hier endet die for-Schleife

                    Kommentar


                    • #11
                      du definierst $haus in der schleife.

                      wenn die schleife aber nicht durchlaufen wird, wird $haus nicht definiert.

                      verwenden tust du es aber IMMER nach der schleife.

                      ist die schleifen eben nicht durchlaufen, gibt es diese meldung.
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar


                      • #12
                        Hast Du denn für mich einen Lösungsvorschlag wie ich die Zeilen aus dem ARRAY in ein neues ARRAY bekomme ohne das ich diese Fehlermeldung erhalte...

                        Kommentar


                        • #13
                          Hast Du denn für mich einen Lösungsvorschlag wie ich die Zeilen aus dem ARRAY in ein neues ARRAY bekomme ohne das ich diese Fehlermeldung erhalte...
                          $haus vorher setzen?
                          was sonst?

                          EDIT:
                          dein code erscheint mir ziemlich kompliziert, array_push sollte u.a. besser sein.
                          Zuletzt geändert von derHund; 17.01.2004, 22:50.
                          Die Zeit hat ihre Kinder längst gefressen

                          Kommentar


                          • #14
                            Hat sich erledigt... hab es hinbekommen !!!

                            in die Schleife kann man es nicht setzen... aber mit if(isset($haus)) läuft es.... !!!

                            Kommentar

                            Lädt...
                            X