JSON Zeichenkette

Hallöchen.
Ich hab ein kleines Problem und kenne mich nicht wirklich mit JSON aus.
Ich möchte bestimmte daten von http://mymovieapi.com/ abrufen und anzeigen. Klappt soweit auch.

$imdb_json=file_get_contents(„http://mymovieapi.com/?id=tt0499549&aka=full");
$imdb_info=json_decode(“[".$imdb_json."]");
echo $imdb_info[0]->title;

Mein Problem ist das ich auch den Deutschen Titel anzeigen lassen will.
Wie mache ich das?

http://mymovieapi.com/?id=tt0499549&aka=full&lang=de-DE

Doku lesen hilft, siehe http://mymovieapi.com/

Wenn du mir verraten könntest wo genau ich die finde, gerne.

btw, das de-DE bringt nichts.

Pardon, ich versteh erst jetzt was du meinst.

Zum einen: de-DE geht nicht weil die seite nur auf Englisch und Tschechisch verfügbar ist. Siehe Doku :wink:

Die Doku hatte mir nicht im geringsten weiter geholfen, weil da nicht drin steht wie ich irgendwas abrufe. Mittlerweile hab ich das Problem selber gelöst.

$imdb_json=file_get_contents(„http://mymovieapi.com/?id=".$imdb_id."&aka=full");
$imdb_info=json_decode(“[".$imdb_json."]");
$imdb_info_array=json_decode($imdb_json,true);

foreach ($imdb_info_array[„also_known_as“] as $key => $value) {
if($value[„country“] == ‚Germany‘) {
$german_title = $value[„title“] ;
break;
}
else{
$german_title = $imdb_info_array[„title“] ;
}
}

Stimmt, hab jetzt auch verstanden was du meintest - ich habe die Doku dann falsch verstanden weil ich dort im Ergebnis den deutschen Titel gesehen hatte :smile:

Das Lösung war dann wohl, dass du das Ergebnis als Array brauchst, mit dem du besser in php arbeiten kannst als ohne…

Naja, nicht ganz. Ich wusste einfach nicht wie ich an die Info für den deutschen Titel ran komme.

d.h. ich wusste nicht das der befehl in diesem fall $imdb_info_array[„also_known_as“][2][title]
war :wink:

Mal eine andere frage:
Wenn ich einen Text in meine Datenbank eintrage und danach abrufe, werden alle umlaute durch ein � ersetzt.
Sehe ich in die datenbank steht dort ganz normal Ä Ü Ö oder ß.
Wenn ich mit meinem script zum bearbeiten der texte einen text bearbeite, wird er mir danach richtig angezeigt.

mysql_connect(„localhost“,"****","****");
mysql_select_db(„fadesocke“);
mysql_query(„SET MOVIES ‚utf8‘“);

$resu = mysql_query(„select * from movies“);
$nume = mysql_num_rows($resu);

if (isset($_POST[„gesendet“]))
{

$sqla = „Select password FROM movies_user“;
$res = mysql_query($sqla);
$dsat =mysql_fetch_assoc($res);

$result = mysql_query(„SELECT COUNT(*) FROM movies“);
$row = mysql_fetch_assoc($result);
$size = $row[‚COUNT(*)‘];
$sizeREAL = $size+1;

$imdb_json=file_get_contents(„http://mymovieapi.com/?id=".$_POST[„imdb_id“]."&aka=…);
$imdb_info=json_decode(“[".$imdb_json."]");
$imdb_info_array=json_decode($imdb_json,true);

foreach ($imdb_info_array[„also_known_as“] as $key => $value) {
if($value[„country“] == ‚Germany‘) {
$german_title = $value[„title“] ;
break;
}
else{
$german_title = $imdb_info_array[„title“] ;
}
}

$sqlab = „INSERT INTO movies (film, original, year, directors, youtubeid, actors, runtime, plot, rating, id, liste, genre, imdb_rating, imdb_url)
VALUES(’“. mysql_real_escape_string($german_title) ."’, ‚". mysql_real_escape_string($imdb_info[0]->title) ."‘, ‚". $imdb_info[0]->year ."‘, ‚". mysql_real_escape_string(implode(",",$imdb_info[0]->directors)) ."‘, ‚". $_POST[„youtubeid“] ."‘, ‚". mysql_real_escape_string(implode(",",$imdb_info[0]->actors)) . "‘, ‚". $imdb_info[0]->runtime[0] . "‘, ‚". mysql_real_escape_string($_POST[„plot“]) . "‘, ‚". $_POST[„bewertung“] . "‘, ‚".$sizeREAL."‘, ‚". $_POST[„db“] . "‘, ‚". mysql_real_escape_string(implode(",",$imdb_info[0]->genres)) ."‘, ‚". $imdb_info[0]->rating ."‘, ‚". $_POST[„imdb_id“] ."‘)";

@mysql_query($sqlab) or die (mysql_error());
@mysql_query(„SELECT * FROM movies ORDER BY film ASC“);

Sorry, da bin ich der falsche Ansprechpartner. Leider kann ich Dir dabei nicht weiterhelfen

Liegt entweder an der Codierung deiner Skripte oder am falschen HTML-Tag.

Du solltest konsequent UTF8 verwenden, d.h. auch deine Skripte in dieser Codierung speichern, wie das geht steht zB hier: http://docs.moodle.org/24/en/Converting_files_to_UTF-8

Das HTML-Tag ist

...

In deiner Datenbank hast du es ja schon eingestellt:

mysql\_query("SET MOVIES 'utf8'"); 

ggf müsstest du da nochmal schauen, wie du die Datenbank angelegt hast.

Wie gesagt, wichtig ist, dass du alle deine Files konsequent im gleichen Format speicherst und überall die gleiche Formatierung verwendest.

Hallo fadesocke,

leider habe ich von JSON keine Ahnung.

Viel Glück!
Markus Seifert

Hallo!

Die Frage ist eigentlich keine JSON-Frage, sondern eine Frage über die spzielle API, die Du hier ansprichst.

Auf http://mymovieapi.com/ findet man eine Anleitung. Mir scheint, der Parameter lang wählt die Sprache aus. Allerdings sind dort als Optionen nur en-US und zh-CN aufgeführt, also US-englisch und chinesisch. Ich vermute, dass man dort keinen deutschen Titel bekommen kann. Du könntest es natürlich mal mit lang=„de-DE“ probieren.

Grüße

Hi,

Auf die Schnelle würde ich es so lösen :

$imdb\_json=file\_get\_contents("http://mymovieapi.com/?id=tt1270798&aka=full");
$imdb\_info=json\_decode("[".$imdb\_json."]");
echo $imdb\_info[0]-\>title; 
echo "
";
$temp = $imdb\_info[0]-\>also\_known\_as;
for($i=0;$icountry=="Germany") echo $temp[$i]-\>title."
";
 if($temp[$i]-\>country=="West Germany") echo $temp[$i]-\>title."
";
}

?\>

MfG

Hallo,

da kann ich dir leider nicht helfen, da ich mich bei JSON überhaupt nicht auskenne.

sorry, da kann ich dir leider auch nicht weiterhelfen.

cu
harald

Hallo,

habe leider keinen Plan, was JSON ist. Eventuell hilft dir http://www.json.org/ weiter.

Grüße