[PHP] explode() mit Ausgabe in Tabelle

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

  • [PHP] explode() mit Ausgabe in Tabelle

    Hallo Leute,

    ich habe ein kleines Problemchen, da ich noch totaler Anfänger in Sachen PHP bin.

    Also: Es existiert eine Datei (village.txt.gz), die mehrere Einträge enthält und durch Kommas abgegrenzt ist.

    [FONT=courier new]25232,Havena,102,134,17189,5741,0
    23236,Landsitz+des+Grafen,3,126,16054,5315,0[/FONT]

    und so weiter und so fort.

    Diese Datei decodiere ich und möchte sie in Form einer Tabelle ausgeben und dazu habe ich folgenden Code geschrieben, der anscheinend nicht ganz korrekt ist:

    PHP-Code:
    <?php

    // Village.txt.gz auslesen

    $datei_village "village.txt.gz" ;
    $zp gzopen($datei_village"r");

    $var1 gzgets($zp);
    $zerlegung explode (","$var1);

    // Villages: ID, Name, x, y, tribe, points, rank 

    $village_id $zerlegung[0];
    $village_name $zerlegung[1];
    $village_x $zerlegung[2];
    $village_y $zerlegung[3];
    $village_tribe $zerlegung[4];
    $village_points $zerlegung[5];
    $village_rank $zerlegung[6];
    ?>

    <table>
    <tr>
       <td><b>ID</b></td>
       <td><b>Name</b></td>
       <td><b>X-Koordinate</b></td>
       <td><b>Y-Koordinate</b></td>
       <td><b>Tribe</b></td>
       <td><b>Punkte</b></td>
       <td><b>>Rank</b></td>
    </tr>
    <?php
    while (!gzeof($zp)) {
    ?>
       <tr>
          <td><?php echo $village_id?></td>
          <td><?php echo $village_name?></td>
          <td><?php echo $village_x?></td>
          <td><?php echo $village_y?></td>
          <td><?php echo $village_tribe?></td>
          <td><?php echo $village_rank?></td>
       </tr>
    <?php
    }
    gzclose($zp) ;
    ?>
    </table>
    Wenn ich mir die Datei jetzt ausgeben lasse, werden mir zwar mehrere Zeilen der Tabelle angegeben, aber immer mit demselben Wert (des ersten Eintrags in der village.txt.gz).

    Ich vermute ja, dass [FONT=courier new]explode (",", $var1);[/FONT] nicht korrekt ist, oder aber [FONT=courier new] while (!gzeof($zp)) {[/FONT].

    Ich würde mich freuen, wenn mir dabei jemand helfen könnte ;-)

    Danke schon mal im Vorraus,

    Boron

    P.S: Natürlich wäre es nicht notwendig die Datei in Form einer solchen Tabelle wiederzugeben, sondern mit [FONT=courier new]while (!gzeof($zp)) {
    $zeile = gzgets($zp,500);
    echo $zeile.'<br>'; }[/FONT]
    sich die Datei ausgeben lassen, aber ich möchte es nun mal gerne.
    Zuletzt geändert von Boron; 29.08.2004, 15:12.

  • #2
    Hi,

    der explode Aufruf befindet sich doch ausserhalb deiner Whileschleiffe d.h. es wird nur zeile 1 in ein array umgewandelt - versuch doch das ganze mal in der while schliefe durchzuführen.

    Bye

    Rodi

    P.S. der Quellcode wär dann ungefähr (habs aber nicht getestet)
    PHP-Code:
    <?php

    // Village.txt.gz auslesen

    $datei_village "village.txt.gz" ;
    $zp gzopen($datei_village"r");


    ?>

    <table>
    <tr>
       <td><b>ID</b></td>
       <td><b>Name</b></td>
       <td><b>X-Koordinate</b></td>
       <td><b>Y-Koordinate</b></td>
       <td><b>Tribe</b></td>
       <td><b>Punkte</b></td>
       <td<b>>Rank</b></td>
    </tr>
    <?php
    while (!gzeof($zp)) {
           
    $var1 gzgets($zp);
    $zerlegung explode (","$var1);

    // Villages: ID, Name, x, y, tribe, points, rank 

    $village_id $zerlegung[0];
    $village_name $zerlegung[1];
    $village_x $zerlegung[2];
    $village_y $zerlegung[3];
    $village_tribe $zerlegung[4];
    $village_points $zerlegung[5];
    $village_rank $zerlegung[6];

    ?>
       <tr>
          <td><?php echo $village_id?></td>
          <td><?php echo $village_name?></td>
          <td><?php echo $village_x?></td>
          <td><?php echo $village_y?></td>
          <td><?php echo $village_tribe?></td>
          <td><?php echo $village_rank?></td>
       </tr>
    <?php
    }
    gzclose($zp) ;
    ?>
    (Nun auch mit PHP-Formatierung - Sorry dafür)
    Zuletzt geändert von Rodi; 29.08.2004, 13:05.

    Kommentar


    • #3
      @rodi: bitte die [PHP]-Tags zur Formatierung benutzen

      Kommentar


      • #4
        Mm... geht nicht... obwohl es logisch ist.

        die Überschrift zeigt er noch an (ID Name X-Koordinate Y-Koordinate Tribe Punkte Rank ), aber dadrunter steht nichts mehr, obwohl ich noch weit nach unten scrollen kann.

        Wenn ich mir den Quelltext anzeigen lasse, kommt dort, wo eigentlich die explode() Daten reinsollten, nur das:

        [FONT=courier new]<tr>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        </tr>
        <tr>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        </tr>[/FONT]

        usw.

        .....

        Sonst jemand eine Idee?

        Kommentar


        • #5
          PHP-Code:
          while (!gzeof($zp)) {
                 
          $var1 gzgets($zp); 
          erfordert gzgets nicht auch noch einen zweiten parameter, analog zu fgets?
          manual sagt ja.
          also probier mal gzgets($zp, 4096); o.ä. an dieser stelle.

          PHP-Code:
          $zerlegung explode (","$var1); 
          anschließend mal
          echo $var1;
          print_r($zerlegung);

          ausgabe?
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Och, ich Idiot habe vergessen, die

            PHP-Code:
            $village_id $zerlegung[0];
            $village_name $zerlegung[1];
            $village_x $zerlegung[2];
            $village_y $zerlegung[3];
            $village_tribe $zerlegung[4];
            $village_points $zerlegung[5];
            $village_rank $zerlegung[6]; 
            auch noch unter die while-schleife zu schreiben, weil er sonst ja nichts mit $zerlegung[0] anfangen kann.....

            Das Problem ist, jetzt läd er ewig, weil die Datei village.txt.gz so groß ist...
            Weiß jemand, wie ich sie pro Zeile ausgeben lassen kann?
            Also, dass ich schon etwas angezeigt bekomme, auch wenn die Seite noch lädt??

            Kommentar


            • #7
              evtl. mit flush(), siehe manual.
              wenn der client diese vorgehensweise mag ...
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Juhu, geht. Und zwar komischerweise auch total schnell der komplette Seitenaufbau!

                Hab einfach

                PHP-Code:
                flush();
                ob_flush(); 
                in die While-Schleife eingefügt, obwohl auch nur einer von den beiden Befehlen notwendig wäre.

                Danke!

                (Aber weitere Fragen werden bald kommen ... ;-) )

                Kommentar

                Lädt...
                X