1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

CSV in PHP einlesen und als Tabelle darstellen

Dieses Thema im Forum "PHP" wurde erstellt von frankc03, 11. Januar 2018 um 00:56 Uhr.

  1. frankc03

    frankc03 Grünschnabel

    Hallo,

    Ich werde langsam ratlos.
    Ich bin kein Programmierer und habe relativ wenig mit Informatik zu tun als Anfang.
    Ich bekomme jede Stunde eine CSV Datei per Mail gesendet. Diese wird automatisch gespeichert unter A1.csv
    Die Date sieht beispielsweise folgendermassen aus (habe Dorf und Namen geändert):
    Hamburg;AM1;;;
    Montag 08/01/2018;;;;
    00:00;06:00;5555 KLEIN Peter;1234 MÜLLER Jakob;
    06:00;08:00;2222 MÜLLER Jakob;4567 KLEIN Peter;
    Dienstag 09/01/2018;;;;
    12:00;13:00;6666 PETRA Petra;9999 TOBI Tobias; usw und so fort

    Manchmal steht auch ein dritter Name mit drin:
    18:00;20:00;7777 MÜLLER Paul;1111 KLEIN Kleini;2555 HOFFMANN Petra;

    Hamburg und AM1 sollten ignoriert werden.
    Danach sollten folgende Tabellen erscheinen:
    Datum, Schichtbeginn, Schichtende, Personal 1, Personal 2, Personal 3

    Ich habe folgenden Code eingebaut:
    Code (PHP):
    1. <!doctype html>
    2. <html lang="de">
    3. <head>
    4. <meta charset="utf-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <title>SCHICHTEN</title>
    7. <link rel="stylesheet" href="../formate.css">
    8. </head>
    9. <body>
    10. <p><img id="logo-l" src="../img/logo.png" width="201" height="216" alt="Logo"</p>
    11. <p><img id="logo-r" src="../img/logo.png" width="201" height="216" alt="Logo"</p>
    12. <h2>SCHICHT A1</h2>
    13. <nav>
    14. <div id="Schichten">
    15. <ul>
    16. <li><a tabindex="0" aria-current="page">SCHICHT A1</a></li>
    17. <li><a href=../index.html>SCHICHTEN</a></li>
    18. <li>SCHICHT A2</li>
    19. <li>SCHICHT A3</li>
    20. </ul>
    21. </div>
    22. </nav>
    23. <table border="1">
    24. <tr><td>Datum</td><td>Schichtbeginn</td><td>Schichtende< /td><td>Personal 1</td><td>Personal 2</td><td>Personal 3</td></tr>
    25. <?php
    26. $feld = file(a1.csv);
    27. foreach($feld as $zeile)
    28. (
    29. $i = explode(";" , $zeile);
    30. echo <tr><td>$i(0)</td><td>$i(1)</td><td> $i(2)</td><td>$i(3)</td><td>$i(4)</td> <td>$i(5)</td><tr>
    31. )
    32. ?>
    33. </body>
    34. </html>
    Heraus kommt folgendes: php.png
    Kann mir dort irgendwer behilflich sein? Ich google mich dumm und dämlich...
     
  2. sheel

    sheel I love Asm Administrator

    Hi

    Code (Text):
    1. echo <tr><td>$i(0)</td><td>$i(1)</td><td> $i(2)</td><td>$i(3)</td><td>$i(4)</td> <td>$i(5)</td><tr>
    sollte eher so ausschauen:

    Code (Text):
    1. echo "<tr><td>$i[0]</td><td>$i[1]</td><td> $i[2]</td><td>$i[3]</td><td>$i[4]</td> <td>$i[5]</td><tr>";
    Also Anführungszeichen, Semikolon, und eckige Klammern.
     
  3. ComFreek

    ComFreek Mod | @comfreek Moderator

    Du möchtest vielleicht noch htmlspecialchars() bei der Ausgabe nutzen, damit du nicht anfällig für XSS bist.
     
    Zuletzt bearbeitet: 11. Januar 2018 um 11:04 Uhr
  4. frankc03

    frankc03 Grünschnabel

    @sheel Wurde geändert. Jedoch funktioniert dies auch nicht.
    IN einem anderen Forum meinte jemand ich müsse einen PHP Server installieren. Habe Apache heruntergeladen und ausgepackt. jedoch verstehe ich nix von der README und denke dass es dann noch nicht richtig installiert ist.

    @ComFreek Bitte was? Wie gesagt null Informatikkenntnisse. Normalerweilse kämpf ich mich mit googlen durch.
     
  5. Kalito

    Kalito Erfahrenes Mitglied

    Naja, Apache ist nur ein webserver zur Anzeige von Webseiten. Für die Verarbeitung brauchst du PHP. Mit was arbeitest du? Windows, Linux oder Mac? Arbeitst du local auf deinem PC oder mit einem Server?
     
  6. frankc03

    frankc03 Grünschnabel

    @Kalito ich arbeite mit Windows auf meinem Computer also denke ich lokal?
     
  7. ComFreek

    ComFreek Mod | @comfreek Moderator

    Code (PHP):
    1. echo "<tr><td>$i[0]</td><td>$i[1]</td><td> $i[2]</td><td>$i[3]</td><td>$i[4]</td> <td>$i[5]</td><tr>";
    wird zu
    Code (PHP):
    1. <?php
    2.  
    3. // Escapes with htmlspecialchars in a non-quote context with UTF-8 encoding
    4. function escapeHtml($str) {
    5.   return htmlspecialchars($i[0], ENT_HTML5 | ENT_DISALLOWED, 'UTF-8');
    6. }
    7.  
    8. echo "<tr><td>" . escapeHtml($i[0]) . "</td><td>analog weiter...";
    Ich habe sehr lange schon nicht mehr mit PHP gearbeitet, ich hoffe die angegebenen Flags sind sinnvoll und passen. Ggf. weiß da @sheel mehr?
     
  8. frankc03

    frankc03 Grünschnabel

    @ComFreek habe ihn folgendermassen eingebaut und funktioniert nix..
    PHP:
    1. <?php
    2. $feld = file('a1.csv');
    3. foreach($feld as $zeile)
    4. $i=explode(";", $zeile);
    5. function escapeHtml($str){
    6.   return htmlspecialchars($i[0], ENT_HTML5 | ENT_DISALLOWED, 'UTF-8');
    7. }
    8.  
    9. echo "<tr><td>" . escapeHtml($i[0]) . "</td><td>" . escapeHtml ($i[1]) . "</td><td>" . escapeHtml ($i[2]) . "</td><td>" . escapeHtml ($i[3]) . "</td><td>" . escapeHtml ($i[4]) . "</td><td>" . escapeHtml ($i[5]) . "</td></tr>"
    10. ?>
     
  9. ComFreek

    ComFreek Mod | @comfreek Moderator

    Wie oben erwähnt wurde, benötigst du einen Web Server.

    Was möchtest du erreichen? Ist dein Ziel, die CSV einfach nur schön formatierst anzuzeigen? Nur auf deinem PC oder von überall erreichbar?
     
  10. frankc03

    frankc03 Grünschnabel

    von überall erreichbar also es soll danach eine Internetseite ergeben auf der jedes Mitglied seine Schichten sehen kann und das halt immer aktuell
     
  11. ComFreek

    ComFreek Mod | @comfreek Moderator

    Das ist dann ein komplizierteres Unterfangen, denn:
    • Du benötigst einen Rechner (Webserver), der immer dieselbe IP hat und Anfragen ("schichten.php") bearbeiten kann. Also Webspace + Web server. Wenn du nicht möchtest, dass die Nutzer eine IP (so etwas wie 93.184.216.34) eingeben müssen, musst du dir auch eine Domain ("frankc03-schichten.de") registrieren lassen.

    • Wenn du nicht möchtest, dass jeder Internetznutzer Zugriff auf die Seite hat, benötigst du einen Mitgliederbereich mit Loginfunktion.

    • Wenn du die CSV per Mail bekommst, müsste diese automatisiert auf den Server hochgeladen werden.
    Ich würde empfehlen, dass du dir jemanden suchst, der das für dich aufsetzt und pflegt.
     
  12. frankc03

    frankc03 Grünschnabel

    Die Domain wäre ja noch das einfachste denke ich :p
    Es wäre tatsächlich eher ohne Loginfunktion, da man schnell darauf zugreifen sollte, also nicht noch anmelden muss etc.

    Ist ja dann doch nicht so ganz ohne... Man stellt sich das immer so easy vor, ist es aber nicht :p
    Vielen Dank trotzdem
     
  13. Kalito

    Kalito Erfahrenes Mitglied

    Bedenke bitte, dass es auch Leute sehen können, die es nicht sehen sollen/dürfen.
     
  14. frankc03

    frankc03 Grünschnabel

    Ja das ist mir bewusst.
    Ich habe nun einen Webspace, eine Domain und FileZilla installiert.
    FileZilla liefert autonatisch den Inhalt eines Ordners X auf das Webspace hoch.
    In diesem ordner X sin dann meine html und pho dateien sowie meine CSV dateien, die automatisch von Outlook Extraxtor heruntergeladen werden und sich immer überschreiben.

    Es kann also weiter gehen. Ich muss trotzdem einen Code finden wie ich diese CSV einlesen und ausgeben kann. Der Rest wäre ja denke ich geklärt..
     
Die Seite wird geladen...