• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

DataTable Hilfe benötigt

peternmb

Mitglied
Hallo,

nachdem ich letztes Jahr, Dank der Hilfe hier im Forum, zum ersten Mal mit DataTables gearbeitet habe würde ich das gerne wieder einsetzen.

Problemstellung:
Ich habe in einem Verzeichnis eine beliebige Anzahl kleiner txt-Dateien, deren Inhalt ich gerne in der Tabelle darstellen würde.
Das Grundgerüst konnte ich vom letzten Mal übernehmen, es fehlen jedoch einige spezielle Anpassungen bei denen ich Hilfe benötige.

So sehen die txt-Dateien aus:
www.hildegarda.de/TEST/0101.txt
www.hildegarda.de/TEST/0201.txt
www.hildegarda.de/TEST/0301.txt

Ich habe eine Testseite mit Beispieldaten gebaut, um das besser verdeutlichen zu können - so sieht das aus was ich bisher gemacht habe:
www.hildegarda.de/TEST

Die index.html:
<!DOCTYPE html>
<html>
<head>
<title>Test Datatables</title>
<meta charset="utf-8">
<link rel="stylesheet" href="https://cdn.datatables.net/1.10.20/css/jquery.dataTables.min.css">
</head>
<body>
<h2 style="font-family: Helvetica,Arial,sans-serif;">aktueller Test:</h2>
<script src="https://code.jquery.com/jquery-3.3.1.js"></script>
<script src="https://cdn.datatables.net/1.10.20/js/jquery.dataTables.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script>
<script src="https://cdn.datatables.net/plug-ins/1.10.20/sorting/datetime-moment.js"></script>
<script type="text/javascript" src="jquery.dataTables.js"></script>
<table id="events" class="display" style="width: 100%;">
<thead>
<tr>
<th>Name</th>
<th>erstellt am</th>
<th>Email</th>
<th>Bildung</th>
</tr>
</thead>
</table>

<script>
$.fn.dataTable.moment('DD.MM.YYYY');
$('#events').DataTable({
"ajax": "data.php",
"language": {
url: 'https://cdn.datatables.net/plug-ins/1.10.20/i18n/German.json'
},
"order": [[ 0, 'desc' ]]
});
</script>

</body>
</html>

Die data.php:
<?php
$files = 0; // Zähler
$path = scandir('./'); // Gibt den Inhalt des ganzen Verzeichnisses in einem Array wieder
$array = []; // Array für Dateiinhalt
foreach ($path as $file) { // Wiederhole den Vorgang für jedes Element des Arrays "$path"
if (substr($file, -4) == '.txt') { // nur txt-Dateien
$subarray = file($file); // Inhalt in array einlesen
$eventid = substr($file, 0, -4); // Dateiname ohne Extension merken
// nach UTF-8 umkodieren
for ($i = 0; $i < count($subarray); $i++) {
$subarray[$i] = utf8_encode($subarray[$i]);
}
$array[] = $subarray;
$files++; // Inkrementiert $files um 1
}
}
$outarray = ["data" => $array];
echo json_encode($outarray);

?>
Was ich nicht hinbekomme:
- ich möchte als erste Spalte den Dateinamen haben
- bei erstellt am hätte ich gerne nur das Datum um das danach sortieren zu können
- in der letzten Spalte bei Bildung hätte ich gerne alle folgenden Einträge in der gleichen Tabellenspalte untereinander

Wäre klasse, wenn ich hier wieder so toll geholfen bekäme. Danke.
 
Sorry, ich bekomme immer noch die Fehlermeldung.

Wenn ich die data.php direkt im Browser aufrufe erhalte ich überhaupt keine Rückgabe - tut mir leid, ich habe von PHP wirklich seehr wenig Ahnung - benötige es auch sehr selten, und wenn versuche nur etwas anzupassen.
 
vielen Dank, der erste Teil ist geschafft, auch die Datumssortierung funktioniert mit str__replace.

Was ich jetzt noch möchte, falls das überhaupt möglich ist wäre, dass alle weiteren Einträge der Textdateien jeweils nur in der Tabellenzelle Bildung untereinander gezeigt werden.
 
Vielen Dank, absolut perfekt - funktionierte aus Anhieb genau wie ich es mir vorgestellt habe :smile:

auch die Datumssortierung funktioniert mit str__replace.
Wie hast Du das denn gelöst?
einfach nur mit str_replace die überflüssigen Zeichen entfernt.
Ich hatte erwartet, dasss danach noch eine aufwändige Konvertierung des deutschen Datums in ein sortierfähiges notwendig würde - DataTables scheint aber sogar das mit dem deutschen Datum zu erkennen.

Ich bin echt begeistert von den Möglichkeiten der DataTables, und das mit wenigen Zeilen Code (wenn man es kann...).

Ich hätte das auch über ein Windows-Programm lösen können, wäre aber sehr aufwändig gewesen. Erst alle Dateien per FTP herunterladen, dann alles in eine Datenbank oder ein Array einlesen und vernünftig anzeigen. Da wären dann immer noch keine Such-, Filter- oder Sortiermöglichkeiten...
 
Zurück
Oben