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

[GELOEST] Externe JSON abfragen und in Tabelle darstellen

Werbung:
Den Wert in Klammern bei den Feuerwehren entfernen ist kein Problem:
Code:
        foreach ($einsatz['einsatz']['feuerwehrenarray'] as $feuerwehr) {
            $feuerwehrname = preg_replace('/\(\d*\)/', '', $feuerwehr['fwname']);
            $einsatzHTML .= "<li>$feuerwehrname</li>";
        }
Ebenso bei der Uhrzeit, da könnte man noch einen Schritt weiter gehen und das Datum in deutscher Schreibweise ausgeben.
 
Ich habe das Script getauscht jetzt wird aber nicht mehr gefiltert !!! Es werden nur mehr die Einsätze mit Typ SELBST angezeigt !
Hast du den fehler im script schon gefunden ?

Ist es möglich eine ton abzuspielen wenn ein neuer eintrag vorhanden ist ?
Da macht uns leider der Browser einen Strich durch die Rechnung, er lässt Töne nur nach Interaktion des Benutzers, z. B. Drücken eines Buttons, zu. Alternativ schlage ich einen visuellen Hinweis vor, z. B. einen blinkenden Hinweistext.
Geht es das eine Mail versendet wird ?

LG Stefan
 
Werbung:
Ja, Email kann versendet werden.


Das Problem, dass nicht mehr gefiltert wird, werde ich mir ansehen. Ist mir noch nicht aufgefallen.
 
Bei mir funktioniert alles. Es ist jedoch folgendes: Die Auswahl für die Einsatzarten wird dynamisch erzeugt und zwar nur ein Mal beim Laden der Seite. Jetzt kann es aber sein, dass durch die zyklische Aktualisierung Einsatzarten hinzu kommen, die dann in der Auswahl fehlen. Wir könnten das beheben, indem wir auch die Auswahl dauernd aktualisieren aber ich denke, es wäre ausreichend, wenn wir eine statische Auswahl haben, voraus gesetzt es gibt nur wenige Einsatzarten.
Versuche mal, dieses select vollständig zu machen:
Code:
    <select id="filter">
        <option value="">Alle Einsatzarten</option>
        <option value="SELBST" selected="true">SELBST</option>
        <option value="BRAND">BRAND</option>
    </select>
 
Werbung:
Code:
    <select id="filter">
        <option value="">Alle Einsatzarten</option>
        <option value="SELBST" selected="true">SELBST</option>
        <option value="BRAND">BRAND</option>
        <!-- Du musst hier die fehlenden Optionen hinzu fügen, z. B.: -->
        <option value="TEE">TEE</option>
        <!-- usw. -->
    </select>
 
<select id="filter"> <option value="">Alle Einsatzarten</option> <option value="SELBST" selected="true">SELBST</option> <option value="BRAND">BRAND</option> <!-- Du musst hier die fehlenden Optionen hinzu fügen, z. B.: --> <option value="TEE">TEE</option> <!-- usw. --> </select>
Es gibt folgende Einsatzarten:
Code:
    <select id="filter">
        <option value="">Alle Einsatzarten</option>
        <option value="SELBST" selected="true">SELBST</option>
        <option value="BRAND">BRAND</option>
        <option value="TEE">TEE</option>
        <option value="PERSON">PERSON</option>
        <option value="SONTIGE">SONTIGE</option>
    </select>

LG Stefan
 
Das ist ja sehr überschaubar. "SONTIGE" - ist das ein Tippfehler oder steht das so im JSON?

Du hast ja wahrscheinlich inzwischen ebenfalls Änderungen gemacht. Poste doch mal den Code von beiden Dateien, damit nichts verloren geht wenn ich die Auswahl ändere.
 
Werbung:
Das ist ja sehr überschaubar. "SONTIGE" - ist das ein Tippfehler oder steht das so im JSON?

Du hast ja wahrscheinlich inzwischen ebenfalls Änderungen gemacht. Poste doch mal den Code von beiden Dateien, damit nichts verloren geht wenn ich die Auswahl ändere.
Tippfehler !!

hole-einsatzdaten.php
Code:
<?php

error_reporting(E_ALL);

$url = 'https://cf-einsaetze.ooelfv.at/webext2/rss/json_2tage.txt';

$curl = curl_init();
$headers = array();
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$json = curl_exec($curl);
curl_close($curl);
$data = json_decode($json, true);

$einsatzArten = [];
$selectHTML = '<select id="filter"><option value="">Alle Einsatzarten</option>';
foreach ($data['einsaetze'] as $einsatz) {
    $art = $einsatz['einsatz']['einsatzart'];
    if (!in_array($art, $einsatzArten)) {
        $einsatzArten[] = $art;
        $selectHTML .= "<option value=\"$art\">$art</option>";
    }
}
$selectHTML .= '</select>';

if (isset($_GET['einsatzart'])) {
    $filterEinsatzart = $_GET['einsatzart'];
} else {
    $filterEinsatzart = '';
}

$einsatzHTML = '';
$einsatzHTML .= '<ul>';
$cntEinsaetze = $data['cnt_einsaetze'];
$cnt_feuerwehren = $data['cnt_feuerwehren'];
$einsatzHTML .= "<li> Einsätze: $cntEinsaetze - Feuerwehren: $cnt_feuerwehren (alarmiert im Einsatz) </li>";
$einsatzHTML .= '</ul>';




foreach ($data['einsaetze'] as $einsatz) {
    $art = $einsatz['einsatz']['einsatzart'];
    $K1 = $einsatz['einsatz']['einsatzart'];
    if ($filterEinsatzart == '' || $filterEinsatzart == $art) {
        $einsatzHTML .= "<section class=\"$art\">";
        $einsatzHTML .= "<div class=btns>";
        $startzeit = $einsatz['einsatz']['startzeit'];
        $lng = $einsatz['einsatz']['wgs84']['lng'];
        $lat = $einsatz['einsatz']['wgs84']['lat'];
        $ort = $einsatz['einsatz']['einsatzort'];
        $typ = $einsatz['einsatz']['einsatztyp']['text'];
        $einsatzsubtypid = $einsatz['einsatz']['einsatzsubtyp']['id'];
        $einsatzsubtyp = $einsatz['einsatz']['einsatzsubtyp']['text'];
        $status = $einsatz['einsatz']['status'];
        $alarmstufe = $einsatz['einsatz']['alarmstufe'];
        $einsatzHTML .= "<h3>$ort - $typ </br> <font color=red size='2pt'>" . $startzeit . "</font> <font color=green size='3pt'> Status: $status </font> <font color=black size='2pt'> Alarmstufe: $alarmstufe </font></h3>";
        $typ = $einsatz['einsatz']['einsatztyp']['text'];

        $einsatzHTML .= "<dl>";
        $einsatzHTML .= " Einsatzart:$art - $einsatzsubtypid - $einsatzsubtyp" ;
  
        $einsatzHTML .= "</dl>";

        $einsatzHTML .= '<ul>';
        foreach ($einsatz['einsatz']['feuerwehrenarray'] as $feuerwehr) {
            $feuerwehrname = preg_replace('/\(\d*\)/', '', $feuerwehr['fwname']);

            
            $einsatzHTML .= "<li>$feuerwehrname</li>";
        }
        $einsatzHTML .= '</ul>';
        $einsatzHTML .= "</section>";
        $einsatzHTML .= "</br>";
        $einsatzHTML .= "</div>";
    }
}
echo json_encode(['selectHTML' => $selectHTML, 'einsatzHTML' => $einsatzHTML],
    JSON_PRETTY_PRINT);
    ?>

index.html
Code:
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>Einsatzdaten</title>
    <style>
       body {
    font-family: Helvetica, Sans-Serif;   
}

    </style>

<style>
    section.PERSON {
        border: 2px solid yellow;
        border-radius: 30px;
    }

    section.TEE {
        border: 2px solid blue;
        border-radius: 30px;
    }

    section.SELBST {
        border: 2px solid gray;
        border-radius: 30px;
    }

    section.BRAND {
        border: 2px solid red;
        border-radius: 30px;
    }

    section.UNWETTER {
        border: 2px solid green;
        border-radius: 30px;
    }
    
    section.SONST {
        border: 2px solid black;
        border-radius: 30px;
    }
    .btns {
        margin-left: 20px;
}
</style>
</head>

<body>

    <img src="bilder/ooelfv.png" alt="Bild" style="float:left;
    margin-right:4px; margin-bottom:4px;width: 100px;">
    <h3 style="float:left; margin-right:4px;  margin-bottom:4px;">Laufende Einsätze - Feuerwehren OÖ</h3>
</br></br></br>

</br>
    <div id="auswahl-einsatzart"></div>

</br></br>
    <main></main>
 <script>
        const
            intv = 10000,
            einsatzartDefault = 'SELBST',
            url = `hole-einsatzdaten.php?t=${Date.now()}`,
            urlDefault = `${url}&einsatzart=${einsatzartDefault}`,
            auswahlEinsatzart = document.querySelector('#auswahl-einsatzart'),
            einsaetze = document.querySelector('main');
        let sel;
        fetch(urlDefault)
            .then(response => response.json())
            .then(html => {
                auswahlEinsatzart.innerHTML = html.selectHTML;
                const
                    sel = document.querySelector('#auswahl-einsatzart select'),
                    optDefault = sel.querySelector(`option[value="${einsatzartDefault}"]`);
                if (optDefault) optDefault.setAttribute('selected', true);
                einsaetze.innerHTML = html.einsatzHTML;
            });
        function holeEinsatzdaten() {
            let queryString = '';
            if (sel.value != '') {
                queryString = `&einsatzart=${sel.value}`;
            }
            fetch(`${url}${queryString}`)
                .then(response => response.json())
                .then(html => {
                    einsaetze.innerHTML = html.einsatzHTML;
                });
        }
        setInterval(holeEinsatzdaten, intv);
        document.addEventListener('change', event => {
            if (event.target.matches('select')) {
                holeEinsatzdaten();
            }
        });
    </script>
</body>

</html>
 
So, ich habe das auf die statische Auswahl umgestellt. Dadurch hat sich der Code stark vereinfacht.
Jetzt kann es vorkommen, dass für eine gewählte Einsatzart keine Einsätze laufen. In dem Fall gebe ich einen Hinweistext aus.

index.html
Code:
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>Einsatzdaten</title>
    <style>
        body {
            font-family: Helvetica, Sans-Serif;
        }
    </style>

    <style>
        section.PERSON {
            border: 2px solid yellow;
            border-radius: 30px;
        }

        section.TEE {
            border: 2px solid blue;
            border-radius: 30px;
        }

        section.SELBST {
            border: 2px solid gray;
            border-radius: 30px;
        }

        section.BRAND {
            border: 2px solid red;
            border-radius: 30px;
        }

        section.UNWETTER {
            border: 2px solid green;
            border-radius: 30px;
        }

        section.SONST {
            border: 2px solid black;
            border-radius: 30px;
        }

        .btns {
            margin-left: 20px;
        }
    </style>
</head>

<body>
    <img src="bilder/ooelfv.png" alt="Bild" style="float:left;
    margin-right:4px; margin-bottom:4px;width: 100px;">
    <h1 style="float:left; margin-right:4px;  margin-bottom:4px;">Laufende Einsätze - Feuerwehren OÖ</h1>
    <select id="filter">
        <option value="">Alle Einsatzarten</option>
        <option value="SELBST">SELBST</option>
        <option value="BRAND">BRAND</option>
        <option value="UNWETTER">UNWETTER</option>
        <option value="TEE">TEE</option>
        <option value="PERSON">PERSON</option>
        <option value="SONSTIGE">SONSTIGE</option>
    </select>
    <main></main>
    <script>
        const
            intv = 10000,
            einsatzartDefault = 'SELBST',
            url = `hole-einsatzdaten.php?t=${Date.now()}`,
            urlDefault = `${url}&einsatzart=${einsatzartDefault}`,
            sel = document.querySelector('select#filter'),
            einsaetze = document.querySelector('main'),
            optDefault = sel.querySelector(`option[value="${einsatzartDefault}"]`);
        if (optDefault) optDefault.setAttribute('selected', true);
        fetch(urlDefault)
            .then(response => response.json())
            .then(html => {
                einsaetze.innerHTML = html.einsatzHTML;
            });
        function holeEinsatzdaten() {
            const queryString = `&einsatzart=${sel.value}`;
            fetch(`${url}${queryString}`)
                .then(response => response.json())
                .then(html => {
                    einsaetze.innerHTML = html.einsatzHTML;
                });
        }
        setInterval(holeEinsatzdaten, intv);
        document.addEventListener('change', event => {
            if (event.target.matches('select')) {
                holeEinsatzdaten();
            }
        });
    </script>
</body>

</html>

hole-einsatzdaten.php:
Code:
<?php

error_reporting(E_ALL);

$url = 'https://cf-einsaetze.ooelfv.at/webext2/rss/json_2tage.txt';

$curl = curl_init();
$headers = array();
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
$json = curl_exec($curl);
curl_close($curl);
$data = json_decode($json, true);

$einsatzArten = [];

if (isset($_GET['einsatzart'])) {
    $filterEinsatzart = $_GET['einsatzart'];
} else {
    $filterEinsatzart = '';
}

$einsatzHTML = '';
$einsatzHTML .= '<ul>';
$cntEinsaetze = $data['cnt_einsaetze'];
$cnt_feuerwehren = $data['cnt_feuerwehren'];
$einsatzHTML .= "<li> Einsätze: $cntEinsaetze - Feuerwehren: $cnt_feuerwehren (alarmiert im Einsatz) </li>";
$einsatzHTML .= '</ul>';

$zaehler = 0;
foreach ($data['einsaetze'] as $einsatz) {
    $art = $einsatz['einsatz']['einsatzart'];
    $K1 = $einsatz['einsatz']['einsatzart'];
    if ($filterEinsatzart == '' || $filterEinsatzart == $art) {
        $einsatzHTML .= "<section class=\"$art\">";
        $einsatzHTML .= "<div class=btns>";
        $startzeit = $einsatz['einsatz']['startzeit'];
        $lng = $einsatz['einsatz']['wgs84']['lng'];
        $lat = $einsatz['einsatz']['wgs84']['lat'];
        $ort = $einsatz['einsatz']['einsatzort'];
        $typ = $einsatz['einsatz']['einsatztyp']['text'];
        $einsatzsubtypid = $einsatz['einsatz']['einsatzsubtyp']['id'];
        $einsatzsubtyp = $einsatz['einsatz']['einsatzsubtyp']['text'];
        $status = $einsatz['einsatz']['status'];
        $alarmstufe = $einsatz['einsatz']['alarmstufe'];
        $einsatzHTML .= "<h3>$ort - $typ </br> <font color=red size='2pt'>" . $startzeit . "</font> <font color=green size='3pt'> Status: $status </font> <font color=black size='2pt'> Alarmstufe: $alarmstufe </font></h3>";
        $typ = $einsatz['einsatz']['einsatztyp']['text'];

        $einsatzHTML .= "<dl>";
        $einsatzHTML .= " Einsatzart:$art - $einsatzsubtypid - $einsatzsubtyp";

        $einsatzHTML .= "</dl>";

        $einsatzHTML .= '<ul>';
        foreach ($einsatz['einsatz']['feuerwehrenarray'] as $feuerwehr) {
            $feuerwehrname = preg_replace('/\(\d*\)/', '', $feuerwehr['fwname']);

            $einsatzHTML .= "<li>$feuerwehrname</li>";
        }
        $einsatzHTML .= '</ul>';
        $einsatzHTML .= "</section>";
        $einsatzHTML .= "</br>";
        $einsatzHTML .= "</div>";
        $zaehler++;
    }
}
if ($zaehler == 0) {
    $einsatzHTML .= 'Keine laufenden Einsätze für die gewählte Einsatzart.';
}
echo json_encode(['einsatzHTML' => $einsatzHTML],
    JSON_PRETTY_PRINT);

Übrigens: Auf float besser verzichten, es kann zu unerwarteten Ergebnissen führen.
 
  • Angry
Reaktionen: msi
Werbung:
Danke so habe ich es versucht, funkt aber nicht !

stimmt das so wenn ich es so einbau

$einsatzHTML .= "<dl>";
$einsatzHTML .= " Einsatzart:$art - $einsatzsubtypid - $einsatzsubtyp";

$einsatzHTML .= " Google: <a href="default.asp"><img src="smiley.gif" alt="HTML tutorial" style="width:42px;height:42px;"></a>";

$einsatzHTML .= "</dl>";

der rot makierte bereich wird mir als fehler angezeigt !

LG Stefan
 
Werbung:
Du musst als href-Attribut die URL von Google-Maps angeben:

Füge oben in hole-einsatzdaten.php dies ein:
Code:
<?php

error_reporting(E_ALL);

// Doku für Google-Maps:
// https://developers.google.com/maps/documentation/urls/get-started?hl=de
$mapZoom = 10;
$mapBase = 'satellite';
$mapURL = "https://www.google.com/maps/search/?api=1&query={{lat}}%2C{{lng}}&hl=de";

$url = 'https://cf-einsaetze.ooelfv.at/webext2/rss/json_2tage.txt';

// usw. wie bisher
Anscheinend kann man bei der search-Funktion Zoom und Kartentyp nicht einstellen. Du kannst selber weiter suchen ob es doch irgend wie geht.

Und dann in der Schleife über die Einsätze:
Code:
$zaehler = 0;
foreach ($data['einsaetze'] as $einsatz) {
    $art = $einsatz['einsatz']['einsatzart'];
    $K1 = $einsatz['einsatz']['einsatzart'];
    if ($filterEinsatzart == '' || $filterEinsatzart == $art) {
        $einsatzHTML .= "<section class=\"$art\">";
        $einsatzHTML .= "<div class=btns>";
        $startzeit = $einsatz['einsatz']['startzeit'];
        // Länge und Breite für Google-Maps bereit stellen:
        $lng = $einsatz['einsatz']['wgs84']['lng'];
        $lat = $einsatz['einsatz']['wgs84']['lat'];
        // und in die URL eintragen:
        $einsatzMapURL = str_replace(['{{lat}}', '{{lng}}'], [$lat, $lng], $mapURL);
        $ort = $einsatz['einsatz']['einsatzort'];
        $typ = $einsatz['einsatz']['einsatztyp']['text'];
        $einsatzsubtypid = $einsatz['einsatz']['einsatzsubtyp']['id'];
        $einsatzsubtyp = $einsatz['einsatz']['einsatzsubtyp']['text'];
        $status = $einsatz['einsatz']['status'];
        $alarmstufe = $einsatz['einsatz']['alarmstufe'];
        $einsatzHTML .= "<h3>$ort - $typ </br> <font color=red size='2pt'>" . $startzeit . "</font> <font color=green size='3pt'> Status: $status </font> <font color=black size='2pt'> Alarmstufe: $alarmstufe </font></h3>";
        $typ = $einsatz['einsatz']['einsatztyp']['text'];
        // Verweis auf Google-Maps:
        $einsatzHTML .= "<a href=\"$einsatzMapURL\" target=\"_blank\">Karte anzeigen</a>";
        $einsatzHTML .= "<dl>";
        $einsatzHTML .= " Einsatzart:$art - $einsatzsubtypid - $einsatzsubtyp";

        $einsatzHTML .= "</dl>";
 
Zuletzt bearbeitet:
Übrigens: Da sehe ich immer noch font-Tags. Als ersten Schritt durch span-Tags mit CSS ersetzt:
Code:
        $einsatzHTML .= "<h3>$ort - $typ </br> <span style=\"color: red; font-size: 0.8rem;\">$startzeit</span> <span style=\"color: green; font-size: 1rem;\"> Status: $status </span> <span style=\"color: black; font-size: 0.8rem;\"> Alarmstufe: $alarmstufe </span></h3>";
 
Zuletzt bearbeitet:
Übrigens: Da sehe ich immer noch font-Tags. Als ersten Schritt durch span-Tags mit CSS ersetzt:
span mit inline-CSS ist im Prinzip der gleiche Müll nur anders angemalt. Zudem gibt es </br> nicht da br ein leeres Element ist und font-size:0.8rem; ist zu klein: 1rem ist die Größe die für den Benutzer gut lesbar ist, alles darunter ist nur wenig sinnvoll.

PS: bei der Angabe einer Schriftart sollte auch immer eine Hintergrundfarbe angegeben werden.
 
Zuletzt bearbeitet:
Werbung:
@Sempervivum
Den Wert in Klammern bei den Feuerwehren entfernen ist kein Problem:
Code:
        foreach ($einsatz['einsatz']['feuerwehrenarray'] as $feuerwehr) {
            $feuerwehrname = preg_replace('/\(\d*\)/', '', $feuerwehr['fwname']);
            $einsatzHTML .= "<li>$feuerwehrname</li>";
        }
Ebenso bei der Uhrzeit, da könnte man noch einen Schritt weiter gehen und das Datum in deutscher Schreibweise ausgeben.
Bezüglich der Uhrzeit wollte ich fragen wie das umgestellt werden kann auf deutsche Schreibweise ?
Danke
LG Stefan
 
Eine zeitgemäße Lösung benutzt den IntlDateFormatter:
Code:
$zaehler = 0;
foreach ($data['einsaetze'] as $einsatz) {
    $art = $einsatz['einsatz']['einsatzart'];
    $K1 = $einsatz['einsatz']['einsatzart'];
    if ($filterEinsatzart == '' || $filterEinsatzart == $art) {
        $einsatzHTML .= "<section class=\"$art\">";
        $einsatzHTML .= "<div class=btns>";
        $startzeit = $einsatz['einsatz']['startzeit'];
        // Länge und Breite für Google-Maps bereit stellen:
        $lng = $einsatz['einsatz']['wgs84']['lng'];
        $lat = $einsatz['einsatz']['wgs84']['lat'];
        // und in die URL eintragen:
        $einsatzMapURL = str_replace(['{{lat}}', '{{lng}}'], [$lat, $lng], $mapURL);
        $ort = $einsatz['einsatz']['einsatzort'];
        $typ = $einsatz['einsatz']['einsatztyp']['text'];
        $einsatzsubtypid = $einsatz['einsatz']['einsatzsubtyp']['id'];
        $einsatzsubtyp = $einsatz['einsatz']['einsatzsubtyp']['text'];
        $status = $einsatz['einsatz']['status'];
        $alarmstufe = $einsatz['einsatz']['alarmstufe'];
        $dt = new DateTime($startzeit);
        $formatter = new IntlDateFormatter('de_DE', IntlDateFormatter::SHORT, IntlDateFormatter::SHORT);
        // Wochentag in Kurzform:
        // $formatter->setPattern('E d.M.yyyy HH:MM');
        // Wochentag in Langform:
        $formatter->setPattern('cccc d.M.yyyy HH:MM');
        $dtStr = $formatter->format($dt);
        $einsatzHTML .= "<h3>$ort - $typ </br> <span style=\"color: red; font-size: 0.8rem;\">$dtStr</span> <span style=\"color: green; font-size: 1rem;\"> Status: $status </span> <span style=\"color: black; font-size: 0.8rem;\"> Alarmstufe: $alarmstufe </span></h3>";
        $typ = $einsatz['einsatz']['einsatztyp']['text'];
        // Verweis auf Google-Maps:
        $einsatzHTML .= "<a href=\"$einsatzMapURL\" target=\"_blank\">Karte anzeigen</a>";
        $einsatzHTML .= "<dl>";
        $einsatzHTML .= " Einsatzart:$art - $einsatzsubtypid - $einsatzsubtyp";

        $einsatzHTML .= "</dl>";

        $einsatzHTML .= '<ul>';
        foreach ($einsatz['einsatz']['feuerwehrenarray'] as $feuerwehr) {
            $feuerwehrname = preg_replace('/\(\d*\)/', '', $feuerwehr['fwname']);

            $einsatzHTML .= "<li>$feuerwehrname</li>";
        }
        $einsatzHTML .= '</ul>';
        $einsatzHTML .= "</section>";
        $einsatzHTML .= "</br>";
        $einsatzHTML .= "</div>";
        $zaehler++;
    }
}
Es könnte jedoch sein, dass auf deinem Webspace der IntlDateFormatter nicht aktiviert ist. In dem Fall müsstest Du den Admin bitten, das zu tun.
 
Zurück
Oben