JSON - Hardcodierung [ Abfrage von ID's ohne name-Value ]

djinfinity

Grünschnabel
Liebe Boardies
Nachdem mir bereits schon einmal geholfen werden konnte,
habe ich nun ein erneutes [ denke mal kleines ] Problem - Oder zumindest einen "Knoten" im Kopf :rolleyes:

Problem :

PHP:
// Sender Zahl eintragen
$url = "https://hier die json url";
// Inhalte holen
$daten = file_get_contents($url);
// Dekodieren der Inhalte
$inhalte = json_decode($daten, true);
// Bilder der Moderatoren
// IDs der Moderatoren
// 146 = Moderator 1
// 353 = Moderator 2
// 339 = Moderator 3
//  92 = Moderator 4
//////////////////////////
$moderator = $inhalte ['live_show'] ['presenter_array'] ['146'];
//$moderator_a = $inhalte ['live_show'] ['presenter_array'] ['353'];
//$moderator_b = $inhalte ['live_show'] ['presenter_array'] ['339'];
//$moderator_c = $inhalte ['live_show'] ['presenter_array'] ['92'];
// Festlegen des Bildpfades
$a_pic = "./img/rmn.png";
$b_pic = "./img/wege.png";
// Titel festlegen
$title = "Dein Moderator";
$ftitle = "Moderator 1";
?>
<?php
if ($moderator== "Moderator")
{
 echo "<img src=\"".$a_pic."\" title=\"".$ftitle."\" class=\"picture\">";
}
else if ($moderator_a== "Moderator 1")
{
 echo "<img src=\"".$b_pic."\" title=\"".$ftitle."\" class=\"picture\">";
}
?>

Entweder denke ich falsch, oder ich habe keine Ahnung - denke mal 2.tes.

Was soll das Script ?
Das Script soll prüfen, was in den Klammern steht. Wenn zum Beispiel ['146'] steht, zeigt er das Bild auch ohne Probleme an.
Er soll es aber ständig prüfen, welche Zahl in den eckigen Klammern steht. Wenn sich die Zahl ändert, dann soll er die nächste eckige Klammer nehmen, und das Bild anzeigen.
Kann mir bitte jemand dabei helfen ? Danke
 
Wenn Du nicht weißt, was in den eckigen Klammern steht, musst Du mit for in über das Objekt iterieren, siehe z. B. hier:
https://www.mediaevent.de/javascript/for-in-foreach.html(nach for in suchen).
Code:
for (key in $inhalte['live_show']['presenter_array']) {
    // an dieser Stelle hast Du den Schlüssel (die Zahl in den eckigen Klammern)
    console.log('key=' + key + ' value=' + $inhalte['live_show']['presenter_array'][key]);
}
Darüber hinaus verstehe ich nicht, was Du da vor hast.
 
sendeplan_bild.png
Das soll dann so aussehen ....
das in den eckigen Klammern sind die jeweiligen ID´s der Moderatoren.

Folgendes soll dann umgesetzt werden :
Moderator A ist von 18.00 - 20.00 Uhr auf Sendung - Anzeige des Bildes von Moderator A
Moderator B ist von 20.00 - 22.00 Uhr auf Sendung - Anzeige des Bildes von Moderator B
for (key in $inhalte['live_show']['presenter_array']) { // an dieser Stelle hast Du den Schlüssel (die Zahl in den eckigen Klammern) console.log('key=' + key + ' value=' + $inhalte['live_show']['presenter_array'][key]); }
Wie kann ich das dann in das
PHP:
<? php

 echo "<img src=\"".$variable."\" title=\"".$variabletitle."\" class=\"picture\">";
 ?>
einsetzen ???
Für mich ist der Json Kram absolutes "NEULAND" :(
 
Was ich jetzt verstehe ist, dass es da ein Array bzw. ein Objekt mit den IDs der Moderatoren gibt. Und dass Du, abhängig davon, welcher Mod. gerade auf Sendung ist, ein Bild des Mod. anzeigen möchtest, das Du selber zur Verfügung stellst. Große Frage: Woran kann man erkennen, welcher Mod. gerade auf Sendung ist? Es würde helfen, wenn man sich das Ergebnis der API ansehen könnte. Möglicher Weise ist sie ja öffentlich, dann poste die URL. Oder das JSON, das sie zurück liefert.

Ich hatte übrigens übersehen, dass das PHP ist. Müsste man dann statt dessen mit foreach machen.
 
Woran kann man erkennen, welcher Mod. gerade auf Sendung ist? Es würde helfen, wenn man sich das Ergebnis der API ansehen könnte.
Hier der "Json - String"
Code:
{"req_unique_id":"5ebbc401a67da","req_timestamp":"Wed, 13 May 2020 11:55:13 +0200","listcount_24h":188,"prg_name":"RMNradio","live_show":{"key":{"id":"807","named":"RMN@work"},"type":{"id":"2","named":"Livesendung","id_possible":["Auto-DJ (Musikautomation)","Vorproduktion","Livesendung","Aussenuebertragung","Livesendung (Simulcast)","Wiederholung"]},"epg":{"description":"n\/a","starttime_hour_minute":"9:00","stoptime_hour_minute":"12:00"},"presenter_array":{"69":"Volker Schommer"},"wishbox":{"routing":{"id":"2","named_modinterface":"Routing der Wunschbox auf das Moderatoreninterface","id_possible":["Ausgeschaltet","Sendeautomation","Sendestudio"]},"wish_count_max":"2"}},"meta":{"artist":"Him","title":"Join Me","starttime":"Wed, 13 May 2020 11:52:46 +0200","amazon":{"asin":"B009P2PSL0","manufacturer":"RCA Records Label","images_url":{"std":"https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/61qryC8DmbL.jpg","mini":"https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/61qryC8DmbL._SL30_.jpg","med":"https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/61qryC8DmbL._SL75_.jpg","large":"https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/61qryC8DmbL._SL110_.jpg","big":"https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/61qryC8DmbL._SL160_.jpg"},"cache":{"inserted":"Sun, 17 Nov 2019 08:11:28 +0100"}}}}
Umwandeln geht hier : Online Converter

Es geht dabei um den "presenter_array"
presenter_array.png
die Zahl als auch der Name sind zusammen verbunden. Heisst, bei einer anderen Zahl ist auch ein anderer Name.

Alles andere geht problemlos auszulesen, nur beim Array habe ich meine Probleme.
Danke für die Hilfe.

PS .: ein Anfangscode Schnipsel mit der entsprechenden Erklärung würde mir sehr weiter helfen.
 
Weil ich nichts falsches posten wollte, habe ich es mit deinem JSON getestet:
Code:
$json = '{"req_unique_id":"5ebbc401a67da","req_timestamp":"Wed, 13 May 2020 11:55:13 +0200","listcount_24h":188,"prg_name":"RMNradio","live_show":{"key":{"id":"807","named":"RMN@work"},"type":{"id":"2","named":"Livesendung","id_possible":["Auto-DJ (Musikautomation)","Vorproduktion","Livesendung","Aussenuebertragung","Livesendung (Simulcast)","Wiederholung"]},"epg":{"description":"n\/a","starttime_hour_minute":"9:00","stoptime_hour_minute":"12:00"},"presenter_array":{"69":"Volker Schommer"},"wishbox":{"routing":{"id":"2","named_modinterface":"Routing der Wunschbox auf das Moderatoreninterface","id_possible":["Ausgeschaltet","Sendeautomation","Sendestudio"]},"wish_count_max":"2"}},"meta":{"artist":"Him","title":"Join Me","starttime":"Wed, 13 May 2020 11:52:46 +0200","amazon":{"asin":"B009P2PSL0","manufacturer":"RCA Records Label","images_url":{"std":"https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/61qryC8DmbL.jpg","mini":"https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/61qryC8DmbL._SL30_.jpg","med":"https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/61qryC8DmbL._SL75_.jpg","large":"https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/61qryC8DmbL._SL110_.jpg","big":"https:\/\/images-eu.ssl-images-amazon.com\/images\/I\/61qryC8DmbL._SL160_.jpg"},"cache":{"inserted":"Sun, 17 Nov 2019 08:11:28 +0100"}}}}';
$inhalte = json_decode($json, true);
$images = [
    "69" => "images/dia0.jpg",
    "70" => "images/dia1.jpg",
    "71" => "images/dia2.jpg",
    // dieses Array anpassen und ergänzen
];
var_dump($inhalte);
foreach ($moderator = $inhalte['live_show']['presenter_array'] as $modid => $modname) {
    $imgsrc = $images[$modid];
    $imgtitle = $modname;
    echo "<img src=\"" . $imgsrc . "\" title=\"" . $imgtitle . "\" class=\"picture\">";
    break;
}
Ich nehme mal an, das presenter_array ist deshalb ein Array, weil eine Sendung u. U. von mehreren Personen moderiert werden kann. Bei meinem Code wird nur der erste Eintrag berücksichtigt.
 
Ich nehme mal an, das presenter_array ist deshalb ein Array, weil eine Sendung u. U. von mehreren Personen moderiert werden kann. Bei meinem Code wird nur der erste Eintrag berücksichtigt.
In dem Array ist immer nur ein Key mit dem entsprechenden Moderator.
Im Prinzip wäre es dann egal, ob es auch andere Moderatoren wären [ denke ich mal ], weil der Key nur "mit einem Namen" belegt werden kann.
Kurze Frage noch zu :

PHP:
<?
$images = [
    "69" => "images/dia0.jpg",
    "70" => "images/dia1.jpg",
    "71" => "images/dia2.jpg",
    // dieses Array anpassen und ergänzen
    ]
?>
Wird dann quasi das "Array"nach der entsprechenden "ID" durchforstet, und dann ausgegeben ?
Wenn das so wäre, ist das Problem ja komplett gelöst - Oder ?
 
Wird dann quasi das "Array"nach der entsprechenden "ID" durchforstet, und dann ausgegeben ?
Ja, mit dieser Anweisung:
$imgsrc = $images[$modid];
wird die Bildadresse für den Moderator aus dem Array ausgelesen. Wobei $modid die Zahl aus dem JSON der API ist.
 
okay...
Habe das Script eingebunden :
Hier anzusehen
Hat nun leider auch noch die "Json-Strings" mit drin.
Anbei der komplette Quell - Code ...
PHP:
<title>RMNRadio - der Webplayer | &copy 2020 RMNRadio</title>
<div class = "trackanzeiger">
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
// Aktualisierung einbinden

// Sender Zahl eintragen
$url = "https://api.schlagerparadies.de/get_basic_summary/?ch=0";
// Inhalte holen
$daten = file_get_contents($url);
// Dekodieren der Inhalte
$inhalte = json_decode($daten, true);
// Bilder der Moderatoren
// IDs der Moderatoren
// 146 = Fanny
// 353 = Peter Antony
// 339 = Thomas Fischer
//  92 = Jens Wege
// 406 = DJ Infinity
//  69 = Volker Schommer
//////////////////////////
// Titel festlegen
$title = "Dein Moderator";
$images = [
    "146" => "images/fanny.png",
    "353" => "images/antony.png",
    "339" => "images/fischer.png",
    "92 " => "images/wege.png",
    "406" => "images/infinity.png",
    "69" => "images/schommer.png",
    // dieses Array anpassen und ergänzen
];
var_dump($inhalte);
foreach ($moderator = $inhalte['live_show']['presenter_array'] as $modid => $modname) {
    $imgsrc = $images[$modid];
    $imgtitle = $modname;
    echo "<img src=\"" . $imgsrc . "\" title=\"" . $imgtitle . "\" class=\"picture\">";
    break;
}
?>
Frage hierzu - Was läuft da noch falsch ?
 
Dieses läuft falsch:
var_dump($inhalte);
Das hatte ich eingefügt, um mir über die Daten einen besseren Überblick zu verschaffen. Lösche es und alles ist gut.
 
Zurück