Marcus
Avatar Marcus
Themenersteller
Guru (223 Beiträge)

Wert aus einer json-Datei in PHP ausgeben

am 08.02.2017, 21:05 Uhr eröffnete Marcus folgenden Thread
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
Avatar matthes
Foren Moderator
Evil Genius
Content Halbgott (973 Beiträge)
am 08.02.2017, 21:14 Uhr schrieb matthes

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
Avatar joerg
Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)
am 08.02.2017, 22:01 Uhr schrieb joerg

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
Avatar Marcus
Guru (223 Beiträge)
am 08.02.2017, 22:43 Uhr schrieb Marcus

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
Avatar joerg
Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)
am 08.02.2017, 23:18 Uhr schrieb joerg

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
Avatar Marcus
Guru (223 Beiträge)
am 08.02.2017, 23:32 Uhr schrieb Marcus

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
Avatar matthes
Foren Moderator
Evil Genius
Content Halbgott (973 Beiträge)
am 09.02.2017, 11:56 Uhr schrieb matthes

joerg schrieb:
@Matthes warum ein array?


Weils ein langer Tag war und ich unkonzentriert...

@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
Avatar Marcus
Guru (223 Beiträge)
am 09.02.2017, 19:41 Uhr schrieb Marcus

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
Avatar matthes
Foren Moderator
Evil Genius
Content Halbgott (973 Beiträge)
am 09.02.2017, 21:31 Uhr schrieb matthes

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
Avatar Marcus
Guru (223 Beiträge)
am 09.02.2017, 21:55 Uhr schrieb Marcus

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
Avatar matthes
Foren Moderator
Evil Genius
Content Halbgott (973 Beiträge)
am 09.02.2017, 22:35 Uhr schrieb matthes

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!



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

Das Seitenreport Forum hat aktuell 5271 Themen und 36110 Beiträge.
Insgesamt sind 48320 Mitglieder registriert.