Marcus
Mitglied seit: 27.01.2011

Themenersteller
Guru (223 Beiträge)

Wert aus einer json-Datei in PHP ausgeben

08.02.2017, 21:05 Uhr    AJAX & JavaScript (JS)    5064 mal gelesen    11 Antwort(en).

Hallo zusammen!

Folgender Dateiinhalt liegt in einer json-Datei vor:

{
"url": "http://domain",
"propertiesXmlPaths": {
"period": ["/notdienste/zeitraum","/
notdienstplan/zeitraum"],
"entry": ["/container/entries/entry","/notdienste/
notdienst","/notdienstplan/notdienste/notdienst"],
"name": ["/container/entries/entry/name","/notdienste/
notdienst/apotheke","/notdienstplan/notdienste/notdienst/apotheke"],
"street": ["/container/entries/entry/street","/notdienste/
notdienst/strasse","/notdienstplan/notdienste/notdienst/strasse"],
"zipCode": ["/container/entries/entry/zipCode","/notdienste/
notdienst/plz","/notdienstplan/notdienste/notdienst/plz"],
"location": ["/container/entries/entry/location","/notdienste/
notdienst/ort","/notdienstplan/notdienste/notdienst/ort"],
"subLocation": ["/container/entries/entry/subLocation","/notdienste/
notdienst/ortsteil","/notdienstplan/notdienste/notdienst/ortsteil"],
"phone": ["/container/entries/entry/phone","/notdienste/notdienst/
telefon","/notdienstplan/notdienste/notdienst/telefon"],
"to": ["/container/entries/entry/to"],
"from": ["/container/entries/entry/from"],
"lat": ["/container/entries/entry/lat","/notdienste/
notdienst/latitude",
"/notdienstplan/notdienste/notdienst/latitude"],
"lon": ["/container/entries/entry/lon","/notdienste/
notdienst/longitude","/notdienstplan/notdienste/notdienst/longitude"],
"date": ["/notdienste/notdienst/datum","/notdienstplan/
notdienste/notdienst/datum"]
},
"useCurrentTime": true,
"toDay": 14,
"phoneRegionPrefix": "+49",
"propertiesDisplay": {
"from": ["

","b","u"," – "],
"to": ["b","u","

"],
"name": ["div"],
"street": ["p"],
"zipCode": ["

", "span"," "],
"location": ["span","

"],
"phone": ["p","a"]
}
}


Nun möchte ich, da die Variale toDay unterschiedlich ist, diese in der entsprechenden Ausgabe-Datei (php) angeben.

Der Code dazu sieht folgendermaßen aus:

else {
$content .= "


In den nächsten Tagen bieten keine
Apotheken einen Notdienst an.

";
}
$content .= "

";

Wie man eine Variable in php ausgibt weiß ich. Aber wie ich sie aus der json-Datei ins PHP-File bekomme, das schnall ich (noch) nicht.

Mag mir da einer weiterhelfen?

Danke!

Marcus


Das Regional-Magazin für Lüneburg und die Region:
salzsau-panorama.de

matthes
Mitglied seit: 08.05.2010

Foren Moderator
Evil Genius
Content Halbgott (967 Beiträge)
08.02.2017, 21:14 Uhr

Der von Dir gezeigte PHP-Code ist völlig ohne Aussage.

Den Inhalt der Datei in eine Variable lesen, per json_decode in ein Array umwandeln, mit print_r, var_export, o.ä. das Array anzeigen lassen und entsprechend einbauen.


Make Seitenreport great again!

joerg
Mitglied seit: 09.06.2009

Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)
08.02.2017, 22:01 Uhr

Wenn ich das json richtig lese sollte von dem objekt ausgehend

$json_object -> toDay dir den Wert liefern.

oder fehlt dir da was wie file_get_contents? php.net/manual/en/function.file-get-contents.php

@Matthes warum ein array?


Zufällige Umleitung zu der Startseite einer meiner Domains
Meine ungewöhnlichen Tools

Marcus
Mitglied seit: 27.01.2011

Guru (223 Beiträge)
08.02.2017, 22:43 Uhr

Ich habe jetzt versucht, mich da rein zu arbeiten.

Aber ich fürchte, das das von vornherein eigentlich unmöglich ist / war, da es mehrere Konfigurationsdateien gibt, die alle in einem Verzeichnis liegen.

Die Renderer-Datei aber, die wiederum in einem anderen Verzeichnis liegt, greift ja global.

Sollte es da doch eine Lösung geben, geht das über meine Kenntnisse weit hinaus.

Die Renderer-Datei schaut so aus

Das System verschluckt die : hinter https

Hier nochmal zum kopieren: www.dropbox.com/home


Das Regional-Magazin für Lüneburg und die Region:
salzsau-panorama.de

joerg
Mitglied seit: 09.06.2009

Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)
08.02.2017, 23:18 Uhr

Verstehe ich das jetzt richtig du versuchst dich hieran?

github.com/theorak/datec-emergency-pharmacies-viewer


www.aknr.de/notdienst/notdienst_xml.php wäre dann mal so eine Datenquelle zu Beispiel


Zufällige Umleitung zu der Startseite einer meiner Domains
Meine ungewöhnlichen Tools

Marcus
Mitglied seit: 27.01.2011

Guru (223 Beiträge)
08.02.2017, 23:32 Uhr

Ja Joerg, das siehst Du richtig!

Und es funktioniert bei mir auch in sofern, das die Anzeige funktioniert:

salzsau-panorama.de/stadt-lueneburg/

Wenn keine Notdienst-Apotheke vorliegt, wie in diesem Falle (https://salzsau-panorama.de/aus-der-region/samtgemeinde-gellersen/)

zeigt er nur den (angepassten) Text an, das in den nächsten Tagen kein Notdienst angeboten wird. Und das wollte ich ein bisschen präzisieren.

Dafür habe ich im Verzeichnis Config 10 verschiedene Dateien angelegt. Für jede Samtgemeinde der Region eine.

Aber wie gesagt, wie (und ob) man das hin bekommt, das auf jede einzelne Config separat zugegriffen und der Wert ausgelesen werden kann, das übersteigt meine Fähigkeiten.

Ich belasse es also am besten erst einmal bei der allgemeinen Floskel


Das Regional-Magazin für Lüneburg und die Region:
salzsau-panorama.de

matthes
Mitglied seit: 08.05.2010

Foren Moderator
Evil Genius
Content Halbgott (967 Beiträge)
09.02.2017, 11:56 Uhr

joerg schrieb:
@Matthes warum ein array?


Weils ein langer Tag war und ich unkonzentriert... 2

@Marcus:
Wenn es den Text anzeigt, ist es auch möglich, das zu präzisieren. Zeig einfach mal den ganzen if-Block, bitte, nicht nur den else-Teil.


Make Seitenreport great again!

Marcus
Mitglied seit: 27.01.2011

Guru (223 Beiträge)
09.02.2017, 19:41 Uhr

Hallo Matthes!

Der komplette Block sieht so aus:

/**
* Render HTML View
*/
public function renderEntries(array $entries, $errors) {

$content = "

\\n";

if(count($errors)) {
$content .="

";
foreach($errors as $error){
$content .="

".$error."

";
}
$content .="

";
} else {
$content .= "

\\n";
if(!empty($entries)) {
foreach($entries as $entry) {
$content .= "

";
foreach($this->config->propertiesDisplay
as $prop => $tags) {
$content .= $this->wrapByTags($tags,
$entry[$prop], $prop);
}
$content .= "

";
}
} else {
$content .= "


In den nächsten Tagen bietet keine
Apotheke in der Samtgemeinde einen Notdienst an.

";
}
$content .= "

";
}
$content .= "

";
$content .= "

";

return $content;
}


Das Regional-Magazin für Lüneburg und die Region:
salzsau-panorama.de

matthes
Mitglied seit: 08.05.2010

Foren Moderator
Evil Genius
Content Halbgott (967 Beiträge)
09.02.2017, 21:31 Uhr

Ja, damit kann man arbeiten.
Lass Dir mal den Inhalt von $entries anzeigen und poste ihn hier.
Am besten von einer Apotheke ohne Notdienst.

Gleich nach
$content = "

\\n";


Make Seitenreport great again!

Marcus
Mitglied seit: 27.01.2011

Guru (223 Beiträge)
09.02.2017, 21:55 Uhr

Hallo Matthes!

Mit var_dump($entries) ergibt es array(0) { }


print_r und var_export ergeben array ( ).


Das Regional-Magazin für Lüneburg und die Region:
salzsau-panorama.de

matthes
Mitglied seit: 08.05.2010

Foren Moderator
Evil Genius
Content Halbgott (967 Beiträge)
09.02.2017, 22:35 Uhr

Ha, entschuldige bitte, das war unaufmerksam von mir... $entries muss ja leer sein.
Dann hast Du an der Stelle keinerlei Daten und kannst es ohne größere Anpassung an anderer Stelle wahrscheinlich nicht umsetzen. Die Funktion bekommt nur $entries übergeben - und $entries kann anscheinend bei der Übergabe bereits leer sein.

Wenn Du das lösen willst, müsstest Du die Stelle suchen, an der Du renderEntries aufrufst und die Daten übergibst.


Make Seitenreport great again!


Neuen Beitrag erstellen

Um einen Beitrag zu erstellen, müssen Sie eingeloggt sein. Bitte melden Sie sich an.
EinloggenRegistrieren



« zurück zu: AJAX & JavaScript (JS)

Das Seitenreport Forum hat aktuell 4134 Themen und 36063 Beiträge.
Insgesamt sind 47862 Mitglieder registriert.