Liebe VivienSchiller,
dass Du nur zu sagen bräuchtest, wie Du auf einer ganz bestimmten Seite ganz bestimmte Inhalte aus Deinen Textdateien aussuchst, damit man Dir die Entsprechung in JSON zeigen kann. Wenn das bekannt wäre, könnte man Dir ganz konkrete Starthilfe geben.
Welche Informationen brauchst du um es mir zu erklären?
ein Code-Beispiel oder alternativ einen Link zu einer Beispielseite, damit erkennbar wird, welche Inhalte aus der Datendatei kommen, und welche sozusagen zum "Gerüst" der Seite gehören. Außerdem wäre interessant zu wissen, ob Du die Inhalte je nach "Datei" in der Adresse, oder je nach URL-Parametern (wie z.B. http://example.org/index.php?seite=1234&a=irgendwas&b=anderes
) auswählst.
Stellen wir uns eimal vor, Du speichertest tatsächlich diverse Daten in einer JSON-Datei (z.B. namens inhalte.json
):
{
"hasenjagd": {
"title": "Hasenjagd",
"heading": "Halali! Auf zur Hasenjagd",
"content": "Bei der diesjährigen Hasenjagd ging es auch dieses Mal wieder den Langohren gehörig an den Kragen. Immerhin verwendeten die Jäger als Lockmittel Bio-Möhren."
},
"streichelzoo": {
"title": "Streichelzoo",
"heading": "Neuer Streichelzoo im Park eröffnet",
"content": "Die Saison zum \"Tierekuscheln\" hat wieder begonnen. Zu diesem Zweck hat die Stadt im Park einen Streichelzoo für Groß und Klein eingerichtet. Der Eintritt ist eine kleine Tüte Tiertrockenfutter."
}
}
In Deinem PHP-Script kannst Du diese Datei in ein Array hineinlesen lassen:
function getJsonData () {
$data = array();
$json = file_get_contents('./inhalte.json');
$test = json_decode($json, true); // true für assoziatives Array
if ($test !== null) {
$data = $test;
}
return $data;
}
In obiger Funktion wird als zurückzugebender Inhalt ein leeres Array definiert, falls unsere JSON-Daten aus irgendeinem Grund (z.B. Syntaxfehler in der JSON-Datei) nicht gelesen werden können - oder wenn keine da sind. Anschließend wird der Dateiinhalt in die Variable $json
eingelesen. Dieser Inhalt wird dann mit der Funktion json_decode
(deutsche Erklärung) in eine Datenstruktur umgewandelt, die mit dem zweiten Parameter (der Wert true
) als ein Array definiert wird.
Sollte die Funktion json_decode
auf Probleme stoßen, so gibt sie den Wert null
zurück. Wenn dies nicht der Fall ist, wird das Ergebnis zu unserem Rückgabewert.
Wenn Du nun ein Script hast, das versucht, Inhalte in eine Seite einzubauen, dann könnten die Daten folgendermaßen genutzt werden:
$gefordert = 'hasenjagd'; // Beispielwert, abhängig von der auszuliefernden Seite
$inhalte = getJsonData(); // liefert garantiert ein Array
if (array_key_exists($gefordert, $inhalte)) {
// Titel benutzen
$titel = $inhalte[$gefordert]['title'];
// Überschrift benutzen
$ueberschrift = $inhalte[$gefordert]['heading'];
// Inhalt benutzen
$text = $inhalte[$gefordert]['content'];
}
Wenn nun auf der Seite die Inhalte zu "hasenjagd" angezeigt werden sollen, so versucht obiger Code, ob es zu exakt diesem Wert (also Hasenjagd in Kleinbuchstaben) einen Eintrag gibt. Die JSON-Datei oben hat einen solchen Eintrag. Also kann unser Script passende Inhalte finden. Das liegt daran, dass unser Array einen passenden Schlüssel (so nennt man das bei Arrays) hat. Das könnte man auch als $inhalte['hasenjagd']
notieren, hätte dann aber keine Möglichkeit, andere Seiten mit dem selben Code zu bedienen. Daher notiert man den Schlüssel als Variable in den eckigen Klammern: $inhalte[$gefordert]
.
Zu diesem Schlüssel gibt es als Wert wiederum ein Array (denke "Schachtel in einer Schachtel"), welches die drei Schlüssel "title", "heading" und "content" hat, also genau die Schlüsselnamen, die in der JSON-Datei durch ihre Struktur vorgegeben sind (Du darfst andere Schlüsselnamen benutzen, jedoch sind englische Bezeichner inzwischen ein sinnvoller Standard - Hauptsache Dein PHP-Code benutzt identische Schlüsselnamen wie die JSON-Datei!). Entsprechend kann man dann mit einem weiteren Paar an eckigen Klammern die Schlüssel des inneren Arrays notieren, wie z.B. den Titel: $inhalte[$gefordert]['title']
.
Was Du im Einzelfall mit den Daten tatsächlich anstellst, kann ich nicht wissen, da ich Deinen PHP-Code nicht kenne. Wie Du mit Arrays in PHP umgehen kannst, steht im PHP-Manual (sogar auf deutsch).
Hoffentlich kommst Du nun etwas besser zurecht. Wenn Du weitere Denkanstöße brauchst, melde Dich doch wieder!
Liebe Grüße,
Felix Riesterer.