Diese Webseite nutzt Cookies

Diese Webseite nutzt Cookies zur Verbesserung des Erlebnisses unserer Besucher. Indem Sie weiterhin auf dieser Webseite navigieren, erklären Sie sich mit unserer Verwendung von Cookies einverstanden.

Marcus
Bisherige Beiträge: 223
Mitglied seit: 27.01.2011

Themenersteller
Guru
08.02.2017, 21:05 Uhr

Wert aus einer json-Datei in PHP ausgeben

Kategorie: AJAX & JavaScript (JS)
5064 mal gelesen
11 Antworten auf dieses Thema.

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


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

matthes
Bisherige Beiträge: 967
Mitglied seit: 08.05.2010

Foren Moderator
Evil Genius
Content Halbgott
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.


Benutzer Signatur:
Make Seitenreport great again!

joerg
Bisherige Beiträge: 1941
Mitglied seit: 09.06.2009

Fachinformatiker Anwendungsentwicklung
Content Gott
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?


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

Marcus
Bisherige Beiträge: 223
Mitglied seit: 27.01.2011

Guru
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


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

joerg
Bisherige Beiträge: 1941
Mitglied seit: 09.06.2009

Fachinformatiker Anwendungsentwicklung
Content Gott
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


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

Marcus
Bisherige Beiträge: 223
Mitglied seit: 27.01.2011

Guru
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


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

matthes
Bisherige Beiträge: 967
Mitglied seit: 08.05.2010

Foren Moderator
Evil Genius
Content Halbgott
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.


Benutzer Signatur:
Make Seitenreport great again!

Marcus
Bisherige Beiträge: 223
Mitglied seit: 27.01.2011

Guru
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;
}


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

matthes
Bisherige Beiträge: 967
Mitglied seit: 08.05.2010

Foren Moderator
Evil Genius
Content Halbgott
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";


Benutzer Signatur:
Make Seitenreport great again!

Marcus
Bisherige Beiträge: 223
Mitglied seit: 27.01.2011

Guru
09.02.2017, 21:55 Uhr

Hallo Matthes!

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


print_r und var_export ergeben array ( ).


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

matthes
Bisherige Beiträge: 967
Mitglied seit: 08.05.2010

Foren Moderator
Evil Genius
Content Halbgott
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.


Benutzer Signatur:
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 zur Foren Hauptseite
« zurück zur Foren Kategorie AJAX & JavaScript (JS)

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