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

[GELOEST] DataTabels zur Laufzeit konfigurieren

peternmb

Mitglied
Hallo,

nachdem ich nun überzeugter Nutzer der DataTables bin würde ich das gerne auch für eine andere Ausgabe nutzen.

Mein Problem dabei: ich weiß vorher nicht, wieviele Spalten es sind und wie die jeweiligen Überschriften sind.
Die Daten werden von meinem Windows-Programm erstellt, und als txt-Datei an das Scipt übergeben.
Zeile 1 die Überschriften, dann kommen die Daten - sieht aus wie eine MS-Word Steuerdatei zur Serienbrieferstellung.

Die Datei sieht z.B. dann so aus:
Code:
Name,Ort,Monat01,Monat02,Monat03
Maier Udo,Irgendwo,10,25,30
Müller Karl,Sonstwo,3,0,12
Maier Kurt,Überall,22,-2,4

Ich müsste also die text-Datei zuerst mit PHP einlesen um die Anzahl der Spalten und der Überschriften zu haben
 
Werbung:
Super vielen Dank für deine Mühe, hat auf Anhieb funktioniert.

Erst dachte ich daran, die txt-Datei einzulesen, das HTML für den Tabellenkopf zu generieren und einzufügen, das JSON für die Tabellendaten in einer weiteren Datei zu speichern und dann durch datatables wieder mit Ajax einlesen zu lassen. Nach etwas Überlegung kam mir das zu kompliziert vor und ich habe dann die txt-Datei eingelesen und sowohl die Daten für den Kopf als auch für den Körper in Javascript-Strukturen übertragen ohne den Umweg über eine Datei.
ja, es war auch meine erste Überlegung dafür zwei seperate 2 txt-Dateien zu estellen, eine mit den Überschriften die zweite mit dem Inhalt - schien mir dann aber Pfusch zu sein...

Möglicher Weise bekommst Du wieder Probleme, falls deine txt-Datei mit dem Windows-Zeichensatz gespeichert wird, aber das wird leicht zu lösen sein, ebenso wie bei deinem anderen Projekt.
Ich habe sicherheitshalber die Kommas gegen Strichpunkte ausgetauscht - das habe ich noch alleine hinbekommen :D, das mit dem Zeichensatz klappt schon wieder nicht. ich habe diese Zeile
PHP:
// Array mit den Daten fuer datatables erzeugen
$dataarray = [];
for ($i = 1; $i < count($input); $i++) {
    $dataarray[] = str_getcsv($input[$i],";");
}
geändert in
PHP:
// Array mit den Daten fuer datatables erzeugen
$dataarray = [];
for ($i = 1; $i < count($input); $i++) {
    $dataarray[] = str_getcsv(utf8_encode($input[$i],";"));
}
auch so funktioniert es nicht:
PHP:
// Array mit den Daten fuer datatables erzeugen
$dataarray = [];
for ($i = 1; $i < count($input); $i++) {
    $dataarray[] = str_getcsv($input[$i],";");
}

// nach UTF-8 umkodieren
for ($i = 0; $i < count($dataarray); $i++) {
    $dataarray[$i] = utf8_encode($dataarray[$i]);
}
ich scheine mich da wirklich extrem dämlich anzustellen :confused:

Noch eine Frage: wenn ich in der Tabelle (z.B. bei Platzmangel wegen vielen Spalten) Name und Ort in einer Spalte 2-zeilig darstellen möchte, kann ich das über den Dateninput z.B. mit einem <BR> machen oder muss ich das im PHP-Teil lösen?
 
Werbung:
ja, funktioniert so. Danke.
Ich hatte erst noch ein Problem weil ich ja den Trenner auf Strichpunkt geändert habe.

Ich hatte dein Eingangsposting so verstanden, dass das Skript universell für eine variable Anzahl von Spalten verwendbar sein soll. Das würde dafür sprechen, den Zeilentrenner gleich in der txt-Datei einzutragen.
Wenn man es im PHP-Skript machen wollte, müsste man genau einprogrammieren, welche Spalten zusammen gefügt werden sollen.
Das ist schon richtig so, da habe ich mich vielleicht falsch ausgedrückt.
Ich möchte den Wert einer Spalte zweizeilig anzeigen und möchte wissen wie ich das übergeben kann.
Die txt-Datei sähe dann vielleicht so aus:
Code:
Platz;Name,Ort;Monat01;Monat02;Monat03
1;Maier Udo<BR>Irgendwo;10;25;30
2;Müller Karl<BR>Sonstwo;3;0;12
3;Maier Kurt<BR>Überall;22;-2,4
 
Zuletzt bearbeitet:
ich sehe eben, dass ich das vermutlich nicht benötige.
Die Spalten werden so schön aufgeteilt, dass die Optik eigentlich immer passt.

Das mit dem <BR> im Beispielcode oben funktioniert einwandfrei, das kann ich dann bei Bedarf einsetzen.

Vielen, vielen Dank - jetzt läuft alles, das hätte ich alleine niemals hingebracht.
 
Zuletzt bearbeitet:
Doch noch ein Problem, von dem ich eigentlich dachte es selber lösen zu können.
Um es universell einsetzen zu können möchte ich die Quelldatei als Parameter an das Script übergeben.
Im Script habe ich das so geändert:
Code:
vorher:
$txtfile = 'Gesamt.txt';
// txt-Datei einlesen
$input = file($txtfile);

jetzt:
$txtfile = file($_GET["Quelle"]);
// txt-Datei einlesen
$input = file($txtfile);
Beim Aufruf des Scripts gebe ich den Parameter "Quelle=Gesamt.txt" mit:

Das sollte doch lt. Dokumentation so funktionieren?
 
Werbung:
Zurück
Oben