CSV Zellenweise formatiert ausgeben

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

  • CSV Zellenweise formatiert ausgeben

    Hallo erstmal...
    Ich bin was PHP betrifft absoluter NOOB, kenne mich bisher leider nur mit HTML aus. Nun wollte ich mich mal etwas in PHP einüben und stehe jetzt vor einem Problem (sonst würde ich hier nicht posten ).
    Vorweg sei gesagt .... JA ich habe die Suchfunktion benutzt. Habe zwar viele Ansätze, nur keine Hilfe für mein Problem gefunden.

    So, nun zu dem Problem:
    Ich habe eine .csv Datei mit folgendem inhaltlichen Schema
    Code:
    001;alpha;1;ALPHA
    002;beta;2;BETA
    003;gamma;3;GAMMA
    Zudem habe ich eine .php datei mit folgendem Inhalt
    PHP-Code:
    <?php
     $row 
    1;                                      
     
    $handle fopen ("test.csv","r");              
      while ( (
    $data fgetcsv ($handle1000",")) !== FALSE ){
      
    $num count ($data);
       print 
    "<p> $num fields in line $row: <br>\n";
        
    $row++;                                       
      for (
    $c=0$c $num$c++) {
      print 
    $data[$c] . "<br>\n";            
        }
    }
    fclose ($handle);
    ?>
    Nun möchte ich, dass ich jeder Zelle einer Reihe eine eigene Formatierung zuweisen kann, insbesondere, dass z.B. aus der 001 ein Link auf die Datei 001.php wird. Eine optische Formatierung der Tabelle möchte ich später in einer externen .css einstellen.
    Ich weiss, dass soetwas bestimmt schon mal irgendwor besprochen wurde, nur finde ich es nicht.
    Schon mal vielen Dank für eure (hoffentlich vorhandene) Geduld mit mir.

  • #2
    Re: CSV Zellenweise formatiert ausgeben

    Du liest bereits jede einzelne Zeile mit fgetcsv() in ein Array ein.
    Dieses Array durchläufst du dann mit for, um jeweils den Inhalt einer "Spalte" auszugeben, gefolgt von einem "<br>\n".

    Jetzt willst du aber nicht jeden Wert in einer neuen Zeile, sondern die einzelnen Werte in Tabellenzellen - also gibst du vor dem jeweiligen Wert vielleicht mal ein <td> aus, und dahinter ein </td>.

    Dann musst du jede "Zeile" natürlich noch in ein TR packen, und das ganze noch mal ein eine TABLE ...
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Code:
      <?php
       $handle = fopen ("test.csv","r");              
        while ( ($data = fgetcsv ($handle, 1000, ",")) !== FALSE ){
      
          print "<a href=\"".$data[0]."\">".$data[1].$data[2]."</a>" ; 
                
        }
      fclose ($handle);
      ?>
      Download ET-Chat v3.x.x

      Kommentar


      • #4
        So, soweit so gut ...
        jetzt habe ich aber das Problem, dass er mir die Inhalte der gesammten Zeilen auf eínen Schlag ausgibt. Und es nicht ordentlcih in die Tabele einsortiert. Wie kann ich ihm jetzt sagen, dass er den Inhalt in seine jeweilige Zelle schreibt und dann am ende de Reihe eine neue TR anfängt?

        PHP-Code:
        <html>
        <head>
        <title></title>
        </head>
        <body>
        <?php
         $handle 
        fopen ("test.csv","r");
          while ( (
        $data fgetcsv ($handle1000";")) !== FALSE ){

            echo 
        "<a href=\"".$data[0].".php"."\">".$data[1].$data[2]."</a>" ;

          }
        fclose ($handle);
        ?>
        <table>
         <tr><td></td>
             <td></td>
             <td></td>
             <td></td>
         </tr>
        </table>

        </body>
        </html>
        Ich habe das Gefühl, dass er die Tabelle rigoros ignoriert.

        Sorry, wenn ich nerve, aber ich bin halt sehr neu darin.

        Kommentar


        • #5
          sorry, doppelpost

          Kommentar


          • #6
            echo-Ausgaben erscheinen da im HTML-Quelltext, wo sie sich auch im PHP-Quelltext finden. Bei dir also alle Links vor der Tabelle.

            Mach es so:
            PHP-Code:
            <html>
            <head>
            <title></title>
            </head>
            <body>
            <table>
            <?php
             $handle 
            fopen ("test.csv","r");
              while ( (
            $data fgetcsv ($handle1000";")) !== FALSE ){

                echo 
            "<tr><td><a href=\"".$data[0].".php"."\">".$data[1].$data[2]."</a></td></tr>" ;

              }
            fclose ($handle);
            ?>
            </table>

            </body>
            </html>

            Kommentar


            • #7
              Also erstmal einen herzlichen Dank, an alle, die mir hier geholfen haben.
              Ich denke, dass das Script, jetzt für meine Zwecke passend ist.
              Hier nochmal das derzeit endgültige Script. Werde zwar noch ein wenig an der Optik feilen, aber da das eigentlich nur HTML ist, denke ich mal, dass ich es hinkriege.
              PHP-Code:
              <html>
              <head>
              <title></title>
              </head>
              <body>
              <table>
              <?php
               $handle 
              fopen ("test.csv","r");
                while ( (
              $data fgetcsv ($handle1000";")) !== FALSE ){

                  echo 
              "<tr><td><a href=\"".$data[0].".php"."\">".$data[0]."</a></td>" ;
                  echo 
              "<td>".$data[1]."</td>" ;
                  echo 
              "<td>".$data[2]."</td>" ;
                  echo 
              "<td>".$data[3]."</td></tr>" ;
                }
              fclose ($handle);
              ?>
              </table>

              </body>
              </html>

              Nochmals Danke an Alle

              Kommentar


              • #8
                So, jetzt kommen wir zum nächsten Schritt.
                Folgendes habe ich vor: Ich will einem Script über die Adresszeile sagen "ich brauche nur die Daten aus Zeile 2342".
                Prinzip für das Linkformat ist mir auch schon klar: details.php?zeile2342

                Jetzt kommt das eigentliche Problem: Wie muss ich das meinem Script sagen, dass er nur die Daten aus der Zeile 2342 nehmen soll und den Rest ignorieren muss?
                Vom Prinzip her muss das Script ja so aussehen, wie das Listenscript, nur soll er mir ja nur die Daten aus der Zeile anzeigen, welche ich will.

                PHP-Code:
                <html>
                <head>
                <title></title>
                </head>
                <body>
                <table>
                <?php
                 $handle 
                fopen ("test.csv","r");
                  while ( (
                $data fgetcsv ($handle1000";")) !== FALSE ){

                    echo 
                "<tr><td>".$data[0]."</td>" ;
                    echo 
                "<td>".$data[1]."</td>" ;
                    echo 
                "<td>".$data[2]."</td>" ;
                    echo 
                "<td>".$data[3]."</td></tr>" ;
                  }
                fclose ($handle);
                ?>
                </table>

                </body>
                </html>

                Kommentar


                • #9
                  Original geschrieben von MelkorMJ
                  Wie muss ich das meinem Script sagen, dass er nur die Daten aus der Zeile 2342 nehmen soll und den Rest ignorieren muss?
                  Die ersten 2341 Zeilen überlesen - also Zähler mitlaufen lassen.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Kannst du mir einen Schubs geben? Ich sehe den Wald irgendwie vor lauter Bäumen nicht.
                    Ich denke mal, dass ich es mit if ... else machen soll, nur habe ich keine Ahnung wie... Sorry

                    Kommentar


                    • #11
                      In Schleife Zähler erhöhen, wenn der die Nummer der gesuchten Zeile erreicht, diese Zeilen nehmen, und aus der Schleife aussteigen.
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Du hast doch hier ne ausreichende Antwort von Wahsaga bekommen,
                        also spar Dir Deine Crosspostings, oder soll man Dir jetzt ne if-Abfrage diktieren?

                        Kommentar


                        • #13
                          So, ich habe jetzt eine andere Lösung gefunden, die mir den gewünschten Effekt bring, ohne dass ich mit if ... else hantieren muss, wovon ich eh keinen Schimmer habe.

                          PHP-Code:
                          <?php

                          $var1
                          =$_GET["fach"];

                           
                          $row 1;
                            
                          $fp fopen ("filme.csv","r");
                           
                          $csv = array();
                            while (
                          $zeile fgetcsv($fp1000";")) {
                            
                          $csv[] = $zeile;
                          }

                             echo 
                          "<tr><td>Fach</td>";
                             echo 
                          "<td>".$csv[$var1][1]."</td></tr>";
                             echo 
                          "<tr><td>Titel</td>";
                             echo 
                          "<td>".$csv[$var1][2]."</td></tr>";
                             echo 
                          "<tr><td>Format</td>";
                             echo 
                          "<td>".$csv[$var1][3]."</td></tr>";
                             echo 
                          "<tr><td>Genre</td>";
                             echo 
                          "<td>".$csv[$var1][4]."</td></tr>" ;
                             echo 
                          "<tr><td>Darsteller</td>";
                             echo 
                          "<td>".$csv[$var1][5]."</td></tr>" ;
                             echo 
                          "<tr><td>Regie</td>";
                             echo 
                          "<td>".$csv[$var1][6]."</td></tr>" ;
                             echo 
                          "<tr><td>Filmlänge</td>";
                             echo 
                          "<td>".$csv[$var1][7]."</td></tr>" ;
                             echo 
                          "<tr><td>Homepage</td>";
                             echo 
                          "<td><a href=".$csv[$var1][8].">".$csv[$var1][8]."</a></td></tr>" ;
                             echo 
                          "<tr><td>Plakatmotiv</td>";
                             echo 
                          "<td><img src=images/plakat/".$csv[$var1][1].".jpg></td></tr>" ;

                           
                          fclose ($fp);
                          ?>
                          Acho so und was die "Crosspostings" betrifft, so nutze ich halt mehrere Quellen, da ich absoluter Einsteiger in dieses Gebiet bin.

                          Kommentar

                          Lädt...
                          X