CSV in PHP einlesen und als Tabelle darstellen

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:
PHP:
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SCHICHTEN</title>
<link rel="stylesheet" href="../formate.css">
</head>
<body>
<p><img id="logo-l" src="../img/logo.png" width="201" height="216" alt="Logo"</p>
<p><img id="logo-r" src="../img/logo.png" width="201" height="216" alt="Logo"</p>
<h2>SCHICHT A1</h2>
<nav>
<div id="Schichten">
<ul>
<li><a tabindex="0" aria-current="page">SCHICHT A1</a></li>
<li><a href=../index.html>SCHICHTEN</a></li>
<li>SCHICHT A2</li>
<li>SCHICHT A3</li>
</ul>
</div>
</nav>
<table border="1">
<tr><td>Datum</td><td>Schichtbeginn</td><td>Schichtende< /td><td>Personal 1</td><td>Personal 2</td><td>Personal 3</td></tr>
<?php
$feld = file(a1.csv);
foreach($feld as $zeile)
(
$i = explode(";" , $zeile);
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>
)
?>
</body>
</html>

Heraus kommt folgendes: php.png
Kann mir dort irgendwer behilflich sein? Ich google mich dumm und dämlich...
 
Hi

Code:
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:
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.
 
@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.
 
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?
 
PHP:
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
PHP:
<?php

// Escapes with htmlspecialchars in a non-quote context with UTF-8 encoding
function escapeHtml($str) {
  return htmlspecialchars($i[0], ENT_HTML5 | ENT_DISALLOWED, 'UTF-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?
 
@ComFreek habe ihn folgendermassen eingebaut und funktioniert nix..
PHP:
<?php
$feld = file('a1.csv');
foreach($feld as $zeile)
$i=explode(";", $zeile);
function escapeHtml($str){
  return htmlspecialchars($i[0], ENT_HTML5 | ENT_DISALLOWED, 'UTF-8');
}

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>"
?>
 
von überall erreichbar also es soll danach eine Internetseite ergeben auf der jedes Mitglied seine Schichten sehen kann und das halt immer aktuell
 
Zurück