An der Stelle hat das doch nichts zu suchen, bist Du überhaupt bei der Sache oder hoffst Du, dass Dir das jemand schnell zurechtbastelt?
Ankündigung
Einklappen
Keine Ankündigung bisher.
Eine Variable mit vielen werten per PUT an JSON-Array/Datenbankfeld übergeben
Einklappen
Neue Werbung 2019
Einklappen
Dieses Thema ist geschlossen.
X
X
-
Competence-Center -> Enjoy the Informatrix
PHProcks! • Einsteiger freundliche Tutorials • PreComposed Packages
-
Hier nochmal der gesamte Code
PHP-Code:<?php
//PHP Infos anzeigen lassen
//phpinfo();
header('Content-type: text/html; charset=utf-8');
// Inhaltstyp und Zeichenkodierung für Skript festlegen
$User_Agent = 'Mozilla/5.0 (Windows NT 6.1; rv:60.0) Gecko/20100101 Firefox/60.0';
$id = $_POST["id"];
// Übernahme Formulareingabe
$url = "http://hub.culturegraph.org/entityfacts/$id";
// URL festlegen
$request_headers[] = 'Accept: application/json';
$request_headers[] = 'Content-Type: application/json; charset=utf-8';
$request_headers[] = 'Accept-Encoding: gzip, deflate, identity';
$request_headers[] = 'Accept-Language: de,en-US;q=0.7,en;q=0.3';
$request_headers[] = 'X-picturemaxx-api-key: key';
$request_headers[] = "Authorization: Bearer token";
// Optionale Anfrageoptimierungen
$ch = curl_init($url);
// Initiate curl
curl_setopt($ch, CURLOPT_USERAGENT, $User_Agent);
curl_setopt($ch, CURLOPT_HTTPHEADER, $request_headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_ENCODING, "");
// Anfrage optimieren
// Execute
$result = curl_exec($ch); // Performs the Request, with specified curl_setopt() options (if any).
curl_close($ch);
// Closing
$data = json_decode($result, true); // Dekodiert eine JSON-Zeichenkette, Übergibt an Variable
foreach($data['variantName'] as $alternativ) {
echo $alternativ . " ; ";
}
$url2 = "https://bpk.bs.picturemaxx.com/api/v1/editing/classifications/42/elements/2156013";
$alternativ_j .= $alternativ;
$dataj = array (
'classification_element_parent_id' => 0,
'classification_element_matchcode' => '',
'classification_element_foreignref' => '',
'localized' =>
array (
'en-us' =>
array (
'classification_element_name' => '',
),
'de-de' =>
array (
'classification_element_name' => $alternativ_j,
),
),
);
$data_json = json_encode($dataj);
$ch = curl_init($url2);
// Set the url
curl_setopt( $ch, CURLOPT_URL, $url2 );
curl_setopt($ch, CURLOPT_USERAGENT, $User_Agent);
curl_setopt($ch, CURLOPT_HTTPHEADER, $request_headers);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_json);
// Execute
$result2 = curl_exec($ch); // Performs the Request, with specified curl_setopt() options (if any).
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// Closing
curl_close($ch);
?>
Kommentar
-
PHP-Code:$alternativ_j .= $alternativ;
Edit: Auch wenn man Anfänger ist, man kann versuchen zu verstehen was da passiert. Wenn du Dir die Sachen ausgeben lässt würdest du da alleine auch das Problem lösen können. Weshalb man aber an API-Projekten rumbasteln muss wenn man nicht mal weiss wie man Strings verkettet entzieht sich meiner Kenntnis. Vielleicht solltest du zuerst mal kleinere Brötchen backen.
- 3 Likes
Kommentar
-
So
PHP-Code:foreach($data['variantName'] as $alternativ) {
echo $alternativ . " ; ";
$alternativ_j .= $alternativ;
}
Das Backen der Brötchen liegt nicht an mir Ist einfach ein Auftrag. Ich bin auch kein Informatiker und hab nur rudimentäre PHP Kenntnisse und bin stolz wie weit ich überheupt schon gekommen bin^^ Zudem versuche ich tatsächlich zu verstehen was da passiert, was mir bisher auch sehr gut gelungen ist (als nicht informatiker) aber in dem Fall gerade hat kein Versuch gefruchtet bis jetzt. [COLOR=inherit !important]
[/COLOR]
Kommentar
-
Eigeninitiative und Bereitschaft sind vorhanden schließlich habe ich soweit alles schon alleine auf die Beine gestellt angefangen bei 0 und das finde ich schon gut. Mir ist es schon gelungen die Daten der GND zu beziehen und diese über die Schnittstelle in die eigene Datenbank zu übertragen. Mein Vorgesetzter ist bis jetzt auch sehr zufrieden. Also Spekulation und Vermutungen bringen mich jedenfalls auch nicht weiter Jonas. Ich versuche mich schon lange an dem Problem und frage auch nur wenn ich gar nicht mehr weiterweis trotz Eigeninitiative und Bereitschaft.
Ich bin den Hinweisen ja nachgegangen und habe meine Ergebnisse hier dargelegt. Aber wenn es dann weiterhin nicht geht kann man doch seine Ergebnisse teilen und weiterfragen
Kommentar
-
Zitat von SIB Beitrag anzeigenleider kann ich den Code nicht testbar hinterlegen da ich mit Admin-Token an der API arbeite.
PHP-Code:<?php
//testjson erzeugen
$array = array("variantName"=>array("Johann Wolfgang Goethe", "Johan Wolfgang von Goethe", "Johan Wolphgang Goethe", "Johan W. von Goethe", "Joh. Wolfg. v. Goethe", "J. Wolfgang Goethe", "J. W. v. Goethe", "J. W. Goethe", "Jan Wolfgang Goethe", "Jean Wolfgang von Goethe", "Juan Wolfgang von Goethe", "Juan Wolfgang Goethe", "Juan W. Goethe", "João Wolfgang von Goethe", "Iohann Wolfgang Goethe", "Iohan Wolphgang Goethe", "Ioannes W. Goethe", "I. W. Goethe", "Wolfgango Goethe", "Wolfango Goethe", "W. von Goethe", "Volfgango Goethe"));
$json = json_encode($array);
// json verwenden, ab hier ist es dein Code
$data = json_decode($json, true);
$name_alias = null;
foreach($data['variantName'] as $value) {
$name_alias .= $value . '; ';
}
// Testausgabe
var_dump($name_alias);
echo "<br><hr>";
// besser wäre es so
$alias = implode("; ", $data['variantName']);
// Testausgabe
var_dump($alias);
?>
Kommentar
-
Wenn ich mir alternativ_j mit "print_r( $alternativ_j );" anschaue erhalte ich die gewünschte Zeichenkette die wie folgt aussieht "Johann Wolfgang GoetheJohan Wolfgang von GoetheJohan Wolphgang GoetheJohan W. von GoetheJoh. Wolfg. v. GoetheJ. Wolfgang Goethe". Nur wird diese leider nicht in das Datenbankfeld per PUT übernommen bzw. nur der letzte Wert.
Kommentar
-
Wie man richtig debuggt findest du hier: https://php-de.github.io/jumpto/leitfaden/
Wir können auch nicht mehr sagen, als das was du bereits gehört hast. Lass Dir das Zeugs ausgeben. lass Dir $data_json ausgeben. Wenn das korrekt ist schau Dir die Antowrt des API-Requests an. Grenz das Problem weiter ein. Wenn du entweder meine Hinweise richtig einbindest oder die Version von protestix nimmst müsste es klappen. Ansonsten hat die API einen Bug drin.
Kommentar
-
protestix der Admin-Token ist auf die zweite Hälfte des Codes (url2) bezogen. Mit der ersten Hälfte sollte es ohne apikey oder token funzen. Ich habe nur den Code von dir in meinen Code eingebaut. Per var_dump erhalte ich "
string(3246) "Johann Wolfgang Goethe; Johan Wolfgang von Goethe; Johan Wolphgang Goethe; Johan W. von Goethe; Joh. Wolfg. v. Goethe; J. Wolfgang Goethe; J. W. v. Goethe; J. W. Goethe; Jan Wolfgang Goethe; Jean Wolfgang von Goethe;" usw Jedoch bleibt das Datenbankfeld weiterhin leer.
PHP-Code:<?php
header('Content-type: text/html; charset=utf-8');
$User_Agent = 'Mozilla/5.0 (Windows NT 6.1; rv:60.0) Gecko/20100101 Firefox/60.0';
$id = $_POST["id"];
$url = "http://hub.culturegraph.org/entityfacts/$id";
$request_headers[] = 'Accept: application/json';
$request_headers[] = 'Content-Type: application/json; charset=utf-8';
$request_headers[] = 'Accept-Encoding: gzip, deflate, identity';
$request_headers[] = 'Accept-Language: de,en-US;q=0.7,en;q=0.3';
$request_headers[] = 'X-picturemaxx-api-key: key';
$request_headers[] = "Authorization: Bearer token";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_USERAGENT, $User_Agent);
curl_setopt($ch, CURLOPT_HTTPHEADER, $request_headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_ENCODING, "");
$result = curl_exec($ch); // Performs the Request, with specified curl_setopt() options (if any).
curl_close($ch);
$data = json_decode($result, true);
$name_alias = null;
foreach($data['variantName'] as $value) {
$name_alias .= $value . '; ';
}
$url2 = "https://bpk.bs.picturemaxx.com/api/v1/editing/classifications/42/elements/2156013";
$dataj = array (
'classification_element_parent_id' => 0, 'classification_element_matchcode' => '', 'classification_element_foreignref' => '', 'localized' => array ( 'en-us' => array ( 'classification_element_name' => '', ), 'de-de' => array ( 'classification_element_name' => $name_alias, ), ), );
$data_json = json_encode($dataj);
$ch = curl_init($url2);
// Set the url curl_setopt( $ch, CURLOPT_URL, $url2 );
curl_setopt($ch, CURLOPT_USERAGENT, $User_Agent);
curl_setopt($ch, CURLOPT_HTTPHEADER, $request_headers);
curl_setopt($ch, CURLOPT_ENCODING, "");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_json);
$result2 = curl_exec($ch); // Performs the Request, with specified curl_setopt() options (if any).
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// Closing curl_close($ch);
echo "<br><br>"; var_dump($name_alias); ?>
[/COLOR]
Kommentar
-
Das ist nicht bös' gemeint, aber Dir fehlen zu viele Grundlagen, um so einen Auftrag umzusetzen.
Bitte lerne Grundlagen und übe an kleineren Projekten, die Dich dann Stück für Stück weiter bringen.
Eine Lösung hast Du ja bereits erhalten, daher...
[MOD: geschlossen]Competence-Center -> Enjoy the Informatrix
PHProcks! • Einsteiger freundliche Tutorials • PreComposed Packages
Kommentar
Kommentar