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
 

Sempervivum

Erfahrenes Mitglied
Wenn Du nicht weißt, was in den eckigen Klammern steht, musst Du mit for in über das Objekt iterieren, siehe z. B. hier:
(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.
 

djinfinity

Grünschnabel
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" :(
 

Sempervivum

Erfahrenes Mitglied
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.
 

djinfinity

Grünschnabel
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.
 

Sempervivum

Erfahrenes Mitglied
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.
 

djinfinity

Grünschnabel
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 ?
 

Sempervivum

Erfahrenes Mitglied
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.
 

djinfinity

Grünschnabel
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 ?
 

Sempervivum

Erfahrenes Mitglied
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.
 

djinfinity

Grünschnabel
Danke sehr - Das war mir echt eine Hilfe ...
Mir sind jetzt ganze Berge an "Wackersteinen" runtergefallen ....

Habe das Thema als "GELÖST" markiert ...
Darf, so hoffe ich, gerne wieder kommen, oder ;)
 

djinfinity

Grünschnabel
Im übrigen
Das Endergebnis
Habe noch weitere Funktionen einfügen können, unter anderem, wenn "N/A" angezeigt wird.

Bringt eben doch was, einfach anständig zu fragen, und dann Hilfe zu erhalten.

Fettes DANKESCHÖN
 

Neue Beiträge