fawin2
Goto Top

API mit Datums-Variable aufrufen

Hallo zusammen,
ich habe mich heute hier angemeldet, weil ich trotz einiger Tutorials und stundenlanger Fehlversuche nicht weiterkomme.

Ich würde gerne eine API aufrufen, die das tagesaktuelle Datum in Form von md (z.B. 1231 für Silvester) enthält.

Es geht um eine cloudbasierte Vereinsverwaltungssoftware, ich möchte die API täglich mit einem Cronjob aufrufen, um den Mitgliedern eine Geburtstagsmail zu schicken.

Die URL der API muss folgermaßen aufgebaut sein: https://api.example.org/168698/FQDWTVO?filter=[geburtstagmmdd]="1231"

Der Support des Softwareherstellers schrieb, ich solle file_get_contents nutzen. Hier der originale Post in Englisch:
file_get_contents should work fine here:
$xml = file_get_contents("http://www.example.com/file.xml");
you can then print the xml as a response in php.

Mein Ansatz funktioniert leider nicht:
<?php
	$datum = date("md");  
	$url = file_get_contents("https://api.example.org/168698/FQDWTVO?filter=[geburtstagmmdd]=%22$datum%22");  
	echo "$url"; // print-Befehl funktioniert leider auch nicht  
?>

Ich würde mich sehr Freuen, wenn mir jemand sagen würde, was ich falsch machen.

Vielen Dank und viele Grüße

fawin2

Content-Key: 3859030996

Url: https://administrator.de/contentid/3859030996

Printed on: April 24, 2024 at 08:04 o'clock

Member: em-pie
em-pie Sep 06, 2022 at 18:47:24 (UTC)
Goto Top
Moin,

Du musst das $datum aus dem String ausklammern:
 $url = file_get_contents("https://api.example.org/168698/FQDWTVO?filter=[geburtstagmmdd]=%22" . $datum . "%22");  

Es wird sonst statt des Variableninhaltes der Name der Variablen übermittelt.

Gruß
em-pie
Member: fawin2
fawin2 Sep 06, 2022 at 19:24:51 (UTC)
Goto Top
@em-pie: Vielen Dank für deine schnelle Antwort!

Mein Script sieht nun so aus:

<?php
$datum = date("md");  
$url = file_get_contents("https://api.example.org/168698/FQDWTVO?filter=[geburtstagmmdd]=%22" . $datum . "%22");  
echo $url;
?>

Leider funktioniert es nicht.

Wenn ich aber die URL

https://api.example.org/168698/FQDWTVO?filter=[geburtstagmmdd]="0906"

händisch im Browser aufrufe, wird eine Mail versendet. Es liegt also an meinem Script.


Irgendwo ist noch ein Fehler in meinem Script.

Vielleicht kann es sich ja nochmal jemand ansehen

Vielen Dank und viele Grüße
Member: em-pie
Solution em-pie Sep 06, 2022 updated at 19:32:38 (UTC)
Goto Top
Was steht denn in $datum drin (echo "Datum: " . $datum;)?

Und mach mal anstelle des %22 ein \"

$url = file_get_contents("https://api.example.org/168698/FQDWTVO?filter=[geburtstagmmdd]=\"" . $datum . "\"");  
Member: fawin2
fawin2 Sep 06, 2022 at 21:22:41 (UTC)
Goto Top
@em-pie: Nochmals vielen Dank für deine Hilfe!

Wenn ich
echo "Datum: " . $datum;  
ausführe, wird korrekt
Datum: 0906
ausgegeben.

Du hast die Ausführungszeichen also mittels escape maskiert.

Das funktioniert prima!


Vielen Dank nochmal und viele Grüße

fawin2
Member: em-pie
em-pie Sep 07, 2022 at 04:59:00 (UTC)
Goto Top
Japp, hab die escaped.

Also läufts jetzt?
Dann: How can I mark a post as solved?

Gruß
em-pie
Mitglied: 3803037559
3803037559 Sep 07, 2022 updated at 06:09:02 (UTC)
Goto Top
Moin.
Zitat von @em-pie:

Moin,

Du musst das $datum aus dem String ausklammern:
Nein muss er nicht zwingend, denn Variablen werden in PHP auch innerhalb von Anführungszeichen aufgelöst!
Nur wenn direkt auf den Variablennamen ein Zeichen folgt das auch für Variablen gültig ist muss man es in geschweifte Klammern setzen damit PHP das Zeichen nicht zur Variablen zählt.
echo "Datum: $datum";  
echo "Datum: {$datum}Text";  
Cheers
certguy
Member: em-pie
em-pie Sep 07, 2022 at 06:24:04 (UTC)
Goto Top
@3803037559
Wieder was gelernt face-smile