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
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    An der Stelle hat das doch nichts zu suchen, bist Du überhaupt bei der Sache oder hoffst Du, dass Dir das jemand schnell zurechtbastelt?
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #17
      Natürlich bin ich bei der Sache aber eben auch noch Anfänger auf dem Gebiet

      Kommentar


      • #18
        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($chCURLOPT_USERAGENT$User_Agent);
                        
        curl_setopt($chCURLOPT_HTTPHEADER$request_headers);
                
        curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
                
        curl_setopt($chCURLOPT_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($resulttrue); // 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$chCURLOPT_URL$url2 );
                
        curl_setopt($chCURLOPT_USERAGENT$User_Agent);
                        
        curl_setopt($chCURLOPT_HTTPHEADER$request_headers);
                
        curl_setopt($chCURLOPT_ENCODING"");
                
        curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
                
        curl_setopt($chCURLOPT_CUSTOMREQUEST'PUT');
                        
        curl_setopt($chCURLOPT_POSTFIELDS$data_json);

                        
        // Execute
                        
        $result2 curl_exec($ch); // Performs the Request, with specified curl_setopt() options (if any).
                        
        $code curl_getinfo($chCURLINFO_HTTP_CODE);
                        
        // Closing
                
        curl_close($ch);



        ?>

        Kommentar


        • #19
          PHP-Code:
          $alternativ_j .= $alternativ
          Das gehört in die foreach-Schleife.

          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.

          Kommentar


          • #20
            So

            PHP-Code:
                    foreach($data['variantName'] as $alternativ) {
                    echo 
            $alternativ " ; ";
                    
            $alternativ_j .= $alternativ;

            bekomme ich ebenfalls keine Ausgabe.

            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


            • #21
              Ich würde behaupten der Auftrag ist an der falschen Stelle gelandet. Ohne Eigeninitiative und Bereitschaft selbst zu den Hinweisen zu recherchieren dürfte das hier nix werden.

              Kommentar


              • #22
                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


                • #23
                  Zitat von SIB Beitrag anzeigen
                  leider kann ich den Code nicht testbar hinterlegen da ich mit Admin-Token an der API arbeite.
                  Was hiermit widerlegt wird, zudem auch gleich die Lösung, sonst sitzen wir hier noch das Wochenende dran
                  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($jsontrue);

                  $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


                  • #24
                    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


                    • #25
                      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


                      • #26
                        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($chCURLOPT_USERAGENT$User_Agent);  
                        curl_setopt($chCURLOPT_HTTPHEADER$request_headers);
                        curl_setopt($chCURLOPT_RETURNTRANSFERtrue);      
                        curl_setopt($chCURLOPT_ENCODING"");
                        $result curl_exec($ch); // Performs the Request, with specified curl_setopt() options (if any).        
                        curl_close($ch);
                        $data json_decode($resulttrue);

                        $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($chCURLOPT_USERAGENT$User_Agent);
                        curl_setopt($chCURLOPT_HTTPHEADER$request_headers);
                        curl_setopt($chCURLOPT_ENCODING"");
                        curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
                        curl_setopt($chCURLOPT_CUSTOMREQUEST'PUT');
                        curl_setopt($chCURLOPT_POSTFIELDS$data_json);
                        $result2 curl_exec($ch); // Performs the Request, with specified curl_setopt() options (if any).
                        $code curl_getinfo($chCURLINFO_HTTP_CODE);
                        // Closing         curl_close($ch);
                        echo "<br><br>"var_dump($name_alias);   ?>
                        [COLOR=inherit !important]


                        [/COLOR]

                        Kommentar


                        • #27
                          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 TutorialsPreComposed Packages

                          Kommentar

                          Lädt...
                          X