CSV laden
Dieses Skript lädt, sortiert und filtert CSV-Dateien.
Das Skript
Stand: 21.10.2022
Ladefehler: $$$ file a $$$
<?php
function filtern($array, $key, $keyValue) {
return @array_filter($array, function($value) use ($key, $keyValue) {
return str_contains(strtolower($value[$key]), strtolower($keyValue));
});
}
function csvdisplay($DateiRelativ,$Ausrichtung,$Suche='',$Suchspalte=0,$Sortierspalte=0,$Absteigend=true,$HatKopf=true,$Ueberschriften='') {
$Datei = $_SERVER["DOCUMENT_ROOT"] . $DateiRelativ;
if (!file_exists($Datei)) {
$ausgabe = '<p><strong>Keine Datei gefunden.</strong></p>';
}
else {
$adr = "csv".rand(100,999);
$head = $HatKopf;
$u = PHP_EOL;
$csv = array_map('str_getcsv', file($Datei));
if (!empty($csv)) {
if (!$csv) return [];
if ($HatKopf) {
$header = $csv[0];
array_shift($csv);
}
if ($Sortierspalte>-1) {
$titles = [];
foreach ($csv as $row){
$titles[] = $row[$Sortierspalte];
}
if ($Absteigend){
array_multisort($titles, SORT_NATURAL | SORT_FLAG_CASE, SORT_DESC, $csv);
} else {
array_multisort($titles, SORT_NATURAL | SORT_FLAG_CASE, $csv);
}
}
if ($Suche>''){
$csv = filtern($csv,$Suchspalte,$Suche);
}
if (count($csv)>0) {
if ($HatKopf) {
array_unshift($csv,$header);
}
$ausgabe = '<style>'.$u;
$ausgabe .= '#'.$adr . ' th{text-align:center;font-weight:bold;white-space:pre}'.$u;
$spalte = strlen($Ausrichtung);
For ($i=0; $i < $spalte; $i++) {
$ausgabe .= '#'.$adr . ' td:nth-child('. ($i+1) .'){text-align:';
switch (substr($Ausrichtung,$i,1)) {
case "c":
$ausgabe .='center';
break;
case "l":
$ausgabe .='left';
break;
case "r":
$ausgabe .='right';
break;
default:
$ausgabe .='left';
}
$ausgabe .= ' !important}'.$u;
}
$ausgabe .= '</style>'.$u;
$ausgabe .= '<table ID="' . $adr . '">'. $u;
If (!$head){
$Kopf = explode(",",$Ueberschriften);
$ausgabe .= '<thead><tr>';
foreach($Kopf as $utext) {
$ausgabe .= '<th>' . htmlspecialchars($utext) . '</th>'.$u;
}
$ausgabe .= '</tr></thead><tbody>'.$u;
}
foreach($csv as $key => $element){
if ($head) {
$ausgabe .= '<thead><tr>' . $u;
}
else {
$ausgabe .= '<tr>' . $u;
}
foreach($element as $subkey => $subelement){
if ($head) {
$ausgabe .= '<th>' . htmlspecialchars($subelement) . '</th>' . $u;
}
else {
$ausgabe .= '<td>' . str_replace('|','<br/>',htmlspecialchars($subelement)) . '</td>' . $u;
}
}
if ($head) {
$ausgabe .= '</tr></thead><tbody>' . $u;
$head = false;
}
else {
$ausgabe .= '</tr>' . $u;
}
}
$ausgabe .= '</tbody></table>' . $u;
}
else {
$ausgabe ='<p><strong>Keine Einträge.</strong></p>'.$u;
}
}
else {
$ausgabe = '<p><strong>Keine Daten.</strong></p>'.$u;
}
}
Return $ausgabe;
}
?>