Anzeige

CSV in PHP einlesen und als Tabelle darstellen

#1
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...
 
#2
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.
 
#4
@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.
 

Kalito

Erfahrenes Mitglied
#5
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?
 

ComFreek

Mod | @comfreek
Moderator
#7
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?
 
#8
@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>"
?>
 

ComFreek

Mod | @comfreek
Moderator
#11
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
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
 
#14
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..
 
Anzeige

Neue Beiträge

Anzeige