FSCash/html/update_kurse.php

101 lines
2.3 KiB
PHP

<?php
require 'config.php';
require 'get_symbol.php';
try {
// Jetzt auch symbol mit abrufen!
$stmt = $pdo->prepare("
SELECT id, WKNISIN, symbol
FROM aktien
WHERE WKNISIN IS NOT NULL
");
$stmt->execute();
$aktien = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($aktien as $aktie) {
$id = $aktie['id'];
$isin = trim($aktie['WKNISIN']);
$symbol = $aktie['symbol'];
// 🔹 Wenn noch kein Symbol vorhanden → über OpenFIGI holen
if (empty($symbol)) {
echo "Hole Symbol für ISIN $isin...\n";
$symbol = get2symbol($isin, $openFigiApiKey);
if ($symbol) {
// Symbol in DB speichern
$symbolUpdate = $pdo->prepare("
UPDATE aktien
SET symbol = :symbol
WHERE id = :id
");
$symbolUpdate->bindParam(':symbol', $symbol);
$symbolUpdate->bindParam(':id', $id);
$symbolUpdate->execute();
echo "Symbol $symbol gespeichert.\n";
// OpenFIGI Limit beachten
sleep(1);
} else {
echo "Kein Symbol für ISIN $isin gefunden. Überspringe...\n";
continue;
}
}
// 🔹 Kurs über Alpha Vantage abrufen
$url = "https://www.alphavantage.co/query?function=GLOBAL_QUOTE&symbol=$symbol&apikey=$alphaApiKey";
// echo " rufe: $url";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$json = curl_exec($ch);
curl_close($ch);
$data = json_decode($json, true);
if (isset($data['Global Quote']['05. price'])) {
$kurs = (float)$data['Global Quote']['05. price'];
$kursdatum = date('Y-m-d');
// 🔹 Kurs UND Symbol speichern
$updateStmt = $pdo->prepare("
UPDATE aktien
SET kurs = :kurs,
kursdatum = :kursdatum,
symbol = :symbol
WHERE id = :id
");
$updateStmt->bindParam(':kurs', $kurs);
$updateStmt->bindParam(':kursdatum', $kursdatum);
$updateStmt->bindParam(':symbol', $symbol);
$updateStmt->bindParam(':id', $id);
$updateStmt->execute();
echo "Aktie ID $id ($isin / $symbol): Kurs auf $kurs aktualisiert.\n";
} else {
echo "Kurs für $symbol konnte nicht abgerufen werden.\n";
}
// Alpha Vantage Limit: 5 Anfragen / Minute
sleep(13);
}
echo "Kursaktualisierung abgeschlossen.\n";
} catch (PDOException $e) {
echo "Datenbankfehler: " . $e->getMessage() . "\n";
} catch (Exception $e) {
echo "Fehler: " . $e->getMessage() . "\n";
}
?>