fawin2

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
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 3859030996

Url: https://administrator.de/forum/api-mit-datums-variable-aufrufen-3859030996.html

Ausgedruckt am: 03.05.2025 um 01:05 Uhr

em-pie
em-pie 06.09.2022 um 20:47:24 Uhr
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
fawin2
fawin2 06.09.2022 um 21:24:51 Uhr
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
em-pie
Lösung em-pie 06.09.2022 aktualisiert um 21:32:38 Uhr
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 . "\"");  
fawin2
fawin2 06.09.2022 um 23:22:41 Uhr
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
em-pie
em-pie 07.09.2022 um 06:59:00 Uhr
Goto Top
Japp, hab die escaped.

Also läufts jetzt?
Dann: Wie kann ich einen Beitrag als gelöst markieren?

Gruß
em-pie
3803037559
3803037559 07.09.2022 aktualisiert um 08:09:02 Uhr
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
em-pie
em-pie 07.09.2022 um 08:24:04 Uhr
Goto Top
@3803037559
Wieder was gelernt face-smile