FSCash
diff --git a/html/new_aktie.php b/html/new_aktie.php
new file mode 100644
index 0000000..9bf85ae
--- /dev/null
+++ b/html/new_aktie.php
@@ -0,0 +1,119 @@
+
+
+
+
+
+
+
Neue Aktie erfassen
+
+
+
+
+prepare("
+ INSERT INTO aktien (WKNISIN, user_id, Aktie, kaufdatum, kaufpreis, anzahl)
+ VALUES (:WKNISIN, :user_id, :Aktie, :kaufdatum, :kaufpreis, :anzahl)
+ ");
+ $stmt->bindParam(':WKNISIN', $WKNISIN);
+ $stmt->bindParam(':Aktie', $Aktie);
+ $stmt->bindParam(':kaufdatum', $kaufdatum);
+ $stmt->bindParam(':kaufpreis', $kaufpreis);
+ $stmt->bindParam(':anzahl', $anzahl);
+ $stmt->bindParam(':user_id', $_SESSION['user_id']);
+
+ $stmt->execute();
+ $data_saved = "true";
+ } catch (PDOException $e) {
+ $data_saved = "Fehler: " . $e->getMessage();
+ }
+}
+?>
+
+
+
+Aktie erfolgreich gespeichert! Sie werden in 5 Sekunden weitergeleitet ...
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/html/register.php b/html/register.php
index 6494b08..f6260bd 100644
--- a/html/register.php
+++ b/html/register.php
@@ -8,6 +8,15 @@ if (!isset($_SESSION['user_id'])) {
// echo $_SESSION['user_id'];
error_log($_SESSION['user_id']);
+// Prüfen, ob die user_id im Admin-Array ist
+if (in_array($_SESSION['user_id'], $admin_ids, true)) {
+ $is_admin = "true";
+}
+// Prüfen, ob die user_id im Aktien-Array ist
+if (in_array($_SESSION['user_id'], $aktien_ids, true)) {
+ $is_aktien = "true";
+}
+
// Verbindung herstellen
$conn = new mysqli($host, $user, $pass, $db);
@@ -53,7 +62,7 @@ $conn->close();
☰
Start
- Neue User
+ Aktien '; ?>
Report Monat
Report Personen
Menüpunkt 5
diff --git a/html/rep-month.php b/html/rep-month.php
index 028aa7d..9efe683 100644
--- a/html/rep-month.php
+++ b/html/rep-month.php
@@ -9,6 +9,10 @@ if (!isset($_SESSION['user_id'])) {
if (in_array($_SESSION['user_id'], $admin_ids, true)) {
$is_admin = "true";
}
+// Prüfen, ob die user_id im Aktien-Array ist
+if (in_array($_SESSION['user_id'], $aktien_ids, true)) {
+ $is_aktien = "true";
+}
// Aktuelles Jahr und Monat ermitteln, ggf. aus GET-Parametern
$year = isset($_GET['year']) ? (int)$_GET['year'] : (int)date('Y');
@@ -120,6 +124,7 @@ if (isset($_GET['export']) && $_GET['export'] === 'csv') {
☰
Start
+Aktien '; ?>
Neue User '; ?>
Report Personen
Menüpunkt 5
diff --git a/html/rep-person.php b/html/rep-person.php
index 77c5d5d..a60e138 100644
--- a/html/rep-person.php
+++ b/html/rep-person.php
@@ -9,6 +9,10 @@ if (!isset($_SESSION['user_id'])) {
if (in_array($_SESSION['user_id'], $admin_ids, true)) {
$is_admin = "true";
}
+// Prüfen, ob die user_id im Aktien-Array ist
+if (in_array($_SESSION['user_id'], $aktien_ids, true)) {
+ $is_aktien = "true";
+}
// Aktuelles Jahr und Monat ermitteln, ggf. aus GET-Parametern
$year = isset($_GET['year']) ? (int)$_GET['year'] : (int)date('Y');
@@ -72,6 +76,7 @@ $entries = $stmt->fetchAll();
☰
Start
+Aktien '; ?>
Neue User '; ?>
Report Monat
Menüpunkt 5
diff --git a/html/save_symbol.php b/html/save_symbol.php
new file mode 100644
index 0000000..09267b9
--- /dev/null
+++ b/html/save_symbol.php
@@ -0,0 +1,45 @@
+ false,
+ 'message' => 'Ungültige Eingabedaten.'
+ ]);
+ exit;
+}
+
+try {
+ $stmt = $pdo->prepare("UPDATE aktien SET Symbol = :symbol WHERE id = :id AND user_id = :userid");
+ $stmt->execute([
+ 'symbol' => $symbol,
+ 'id' => $id,
+ 'userid' => $_SESSION['user_id']
+ ]);
+
+ // Prüfen, ob ein Datensatz tatsächlich aktualisiert wurde
+ if ($stmt->rowCount() > 0) {
+ echo json_encode([
+ 'success' => true,
+ 'symbol' => $symbol,
+ 'message' => "Symbol erfolgreich gespeichert: $symbol"
+ ]);
+ } else {
+ echo json_encode([
+ 'success' => false,
+ 'message' => 'Keine Änderung – evtl. ID existiert nicht oder gehört nicht zum Benutzer.'
+ ]);
+ }
+} catch (PDOException $e) {
+ echo json_encode([
+ 'success' => false,
+ 'message' => 'Datenbankfehler: ' . $e->getMessage()
+ ]);
+}
diff --git a/html/search_symbol.php b/html/search_symbol.php
new file mode 100644
index 0000000..d4c7954
--- /dev/null
+++ b/html/search_symbol.php
@@ -0,0 +1,32 @@
+ $match['1. symbol'],
+ 'name' => $match['2. name'],
+ 'region' => $match['4. region']
+ ];
+}
+
+echo json_encode($result);
diff --git a/html/update_kurse.php b/html/update_kurse.php
new file mode 100644
index 0000000..a4325c3
--- /dev/null
+++ b/html/update_kurse.php
@@ -0,0 +1,101 @@
+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";
+}
+?>
diff --git a/init.sql b/init.sql
index b6cb13a..ef41be6 100644
--- a/init.sql
+++ b/init.sql
@@ -56,3 +56,18 @@ INSERT INTO payment_methods (name) VALUES
('Bar'),
('Karte'),
('Paypal');
+
+CREATE TABLE aktien (
+ id INT NOT NULL AUTO_INCREMENT,
+ user_id INT NOT NULL,
+ WKNISIN VARCHAR(20) NOT NULL,
+ Symbol VARCHAR(20) NULL,
+ Aktie VARCHAR(100) NOT NULL,
+ kaufdatum DATE NOT NULL,
+ kaufpreis DECIMAL(10, 2) NOT NULL,
+ anzahl DECIMAL(10, 4) NOT NULL,
+ kursdatum DATE NULL,
+ kurs DECIMAL(10, 2) NULL,
+ PRIMARY KEY (id)
+);
+
diff --git a/update.sql b/update.sql
index e69de29..786f7ce 100644
--- a/update.sql
+++ b/update.sql
@@ -0,0 +1,13 @@
+CREATE TABLE aktien (
+ id INT NOT NULL AUTO_INCREMENT,
+ user_id INT NOT NULL,
+ WKNISIN VARCHAR(20) NOT NULL,
+ Symbol VARCHAR(20) NULL,
+ Aktie VARCHAR(100) NOT NULL,
+ kaufdatum DATE NOT NULL,
+ kaufpreis DECIMAL(10, 2) NOT NULL,
+ anzahl DECIMAL(10, 4) NOT NULL,
+ kursdatum DATE NULL,
+ kurs DECIMAL(10, 2) NULL,
+ PRIMARY KEY (id)
+);