JsonSQL Demo: Horoskop-Generator

🔮 Horoskop-Generator

Wähle dein Sternzeichen und erhalte dein individuelles Horoskop.

Datei: horoskope.json

[
    {
        "spruch": "Deine Entschlossenheit bringt heute neue T\u00fcren zum \u00d6ffnen \u2013 greif zu, bevor sie sich wieder schlie\u00dfen.",
        "sternzeichen": "Widder"
    },
    {
        "spruch": "Eine impulsive Entscheidung k\u00f6nnte \u00fcberraschend positive Folgen haben.",
        "sternzeichen": "Widder"
    },
    {
        "spruch": "Lass dich nicht von kleinen R\u00fcckschl\u00e4gen entmutigen \u2013 du hast mehr Kraft, als du glaubst.",
        "sternzeichen": "Widder"
    },
    {
        "spruch": "Dein inneres Feuer motiviert auch andere \u2013 teile deine Energie!",
        "sternzeichen": "Widder"
    },
    {
        "spruch": "Ein Gespr\u00e4ch mit einem alten Kontakt bringt heute neuen Schwung in deine Pl\u00e4ne.",
        "sternzeichen": "Widder"
    },
    {
        "spruch": "Best\u00e4ndigkeit ist deine St\u00e4rke \u2013 doch heute zahlt sich ein kleiner Perspektivwechsel aus.",
        "sternzeichen": "Stier"
    },
    {
        "spruch": "Ein Genussmoment heute l\u00e4sst dich wieder zur Ruhe kommen \u2013 g\u00f6nn ihn dir bewusst.",
        "sternzeichen": "Stier"
    },
    {
        "spruch": "Vertraue auf deine Werte \u2013 sie f\u00fchren dich sicher durch Unsicherheiten.",
        "sternzeichen": "Stier"
    },
    {
        "spruch": "Eine finanzielle Entscheidung heute sollte gut durchdacht sein \u2013 bleib realistisch.",
        "sternzeichen": "Stier"
    },
    {
        "spruch": "Dein Bed\u00fcrfnis nach Sicherheit wird heute gest\u00e4rkt \u2013 durch jemanden, den du liebst.",
        "sternzeichen": "Stier"
    },
    {
        "spruch": "Neue Informationen warten auf dich \u2013 bleib aufmerksam und nutze deinen Wissensdurst.",
        "sternzeichen": "Zwillinge"
    },
    {
        "spruch": "Ein spontaner Austausch f\u00fchrt heute zu einer \u00fcberraschenden Einsicht.",
        "sternzeichen": "Zwillinge"
    },
    {
        "spruch": "Dein Humor wirkt heute wie ein T\u00fcr\u00f6ffner \u2013 n\u00fctze ihn mit Leichtigkeit.",
        "sternzeichen": "Zwillinge"
    },
    {
        "spruch": "Du jonglierst heute mehrere Dinge zugleich \u2013 vertraue deiner Intuition, was wichtig ist.",
        "sternzeichen": "Zwillinge"
    },
    {
        "spruch": "Ein alter Gedanke bringt heute eine neue L\u00f6sung \u2013 du musst nur zuh\u00f6ren.",
        "sternzeichen": "Zwillinge"
    },
    {
        "spruch": "Ein Gef\u00fchl wird heute zur Entscheidung \u2013 folge deiner inneren Stimme.",
        "sternzeichen": "Krebs"
    },
    {
        "spruch": "Deine Sensibilit\u00e4t ist heute ein Geschenk f\u00fcr dich und deine Mitmenschen.",
        "sternzeichen": "Krebs"
    },
    {
        "spruch": "Familie oder enge Freunde geben dir heute besonders viel Halt.",
        "sternzeichen": "Krebs"
    },
    {
        "spruch": "R\u00fcckzug kann heute genau das sein, was du brauchst \u2013 erlaube dir die Pause.",
        "sternzeichen": "Krebs"
    },
    {
        "spruch": "Ein kleines Zeichen von au\u00dfen best\u00e4tigt, was du innerlich l\u00e4ngst f\u00fchlst.",
        "sternzeichen": "Krebs"
    },
    {
        "spruch": "Dein Auftritt \u00fcberzeugt heute \u2013 selbst wenn du es nicht planst.",
        "sternzeichen": "L\u00f6we"
    },
    {
        "spruch": "Eine kreative Idee verdient heute Applaus \u2013 trau dich, sie zu zeigen.",
        "sternzeichen": "L\u00f6we"
    },
    {
        "spruch": "Du stehst im Mittelpunkt \u2013 nutze die Aufmerksamkeit f\u00fcr etwas Sinnvolles.",
        "sternzeichen": "L\u00f6we"
    },
    {
        "spruch": "Ein Kompliment heute kann T\u00fcren \u00f6ffnen \u2013 gib es weiter.",
        "sternzeichen": "L\u00f6we"
    },
    {
        "spruch": "Mut und W\u00fcrde gehen heute Hand in Hand \u2013 bleib dir treu.",
        "sternzeichen": "L\u00f6we"
    },
    {
        "spruch": "Ein Plan geht auf \u2013 dank deiner Detailgenauigkeit.",
        "sternzeichen": "Jungfrau"
    },
    {
        "spruch": "Du erkennst heute einen Fehler, bevor er passiert \u2013 das zahlt sich aus.",
        "sternzeichen": "Jungfrau"
    },
    {
        "spruch": "Klarheit entsteht, wenn du deine Gedanken sortierst \u2013 nimm dir Zeit daf\u00fcr.",
        "sternzeichen": "Jungfrau"
    },
    {
        "spruch": "Deine Hilfe wird gebraucht \u2013 sei gro\u00dfz\u00fcgig mit deiner Kompetenz.",
        "sternzeichen": "Jungfrau"
    },
    {
        "spruch": "Ein aufger\u00e4umter Moment bringt dir heute inneren Frieden.",
        "sternzeichen": "Jungfrau"
    },
    {
        "spruch": "Heute findest du die Balance zwischen Pflicht und Vergn\u00fcgen.",
        "sternzeichen": "Waage"
    },
    {
        "spruch": "Ein harmonisches Gespr\u00e4ch bringt eine festgefahrene Situation in Bewegung.",
        "sternzeichen": "Waage"
    },
    {
        "spruch": "Sch\u00f6nheit im Alltag f\u00e4llt dir heute besonders auf \u2013 teile diesen Blick.",
        "sternzeichen": "Waage"
    },
    {
        "spruch": "Ein kleiner Kompromiss f\u00fchrt zu einem gro\u00dfen Frieden.",
        "sternzeichen": "Waage"
    },
    {
        "spruch": "Du wirkst heute wie ein Ruhepol \u2013 und das tut anderen gut.",
        "sternzeichen": "Waage"
    },
    {
        "spruch": "Etwas Altes darf heute losgelassen werden \u2013 und macht Platz f\u00fcr Tiefe.",
        "sternzeichen": "Skorpion"
    },
    {
        "spruch": "Du erkennst heute, was hinter den Worten steht \u2013 nutze diese F\u00e4higkeit mit Verantwortung.",
        "sternzeichen": "Skorpion"
    },
    {
        "spruch": "Ein ehrliches Gespr\u00e4ch bringt heute mehr N\u00e4he als erwartet.",
        "sternzeichen": "Skorpion"
    },
    {
        "spruch": "Deine Intuition f\u00fchrt dich genau dahin, wo du gebraucht wirst.",
        "sternzeichen": "Skorpion"
    },
    {
        "spruch": "Ein innerer Wandel k\u00fcndigt sich leise an \u2013 sei offen daf\u00fcr.",
        "sternzeichen": "Skorpion"
    },
    {
        "spruch": "Ein Funke Abenteuerlust bringt heute Farbe in deinen Alltag.",
        "sternzeichen": "Sch\u00fctze"
    },
    {
        "spruch": "Du bist offen f\u00fcr Neues \u2013 und das zieht neue Menschen an.",
        "sternzeichen": "Sch\u00fctze"
    },
    {
        "spruch": "Heute ist ein guter Tag, um gro\u00df zu denken \u2013 und klein anzufangen.",
        "sternzeichen": "Sch\u00fctze"
    },
    {
        "spruch": "Ein Reiseziel oder Gedanke l\u00e4sst dich heute nicht los \u2013 h\u00f6r hin.",
        "sternzeichen": "Sch\u00fctze"
    },
    {
        "spruch": "Eine spontane Idee bringt dir mehr als jede Planung.",
        "sternzeichen": "Sch\u00fctze"
    },
    {
        "spruch": "Deine Ausdauer zeigt heute erste Fr\u00fcchte \u2013 bleib konsequent.",
        "sternzeichen": "Steinbock"
    },
    {
        "spruch": "Du setzt heute klare Grenzen \u2013 und wirst daf\u00fcr respektiert.",
        "sternzeichen": "Steinbock"
    },
    {
        "spruch": "Ein langfristiges Ziel f\u00fchlt sich heute zum Greifen nah an.",
        "sternzeichen": "Steinbock"
    },
    {
        "spruch": "Ein kleiner Schritt ist manchmal gr\u00f6\u00dfer als du denkst.",
        "sternzeichen": "Steinbock"
    },
    {
        "spruch": "Vertrauen in deine F\u00e4higkeiten macht heute den Unterschied.",
        "sternzeichen": "Steinbock"
    },
    {
        "spruch": "Ein ungew\u00f6hnlicher Gedanke bringt heute eine geniale L\u00f6sung.",
        "sternzeichen": "Wassermann"
    },
    {
        "spruch": "Du darfst heute anders sein \u2013 genau das macht dich besonders.",
        "sternzeichen": "Wassermann"
    },
    {
        "spruch": "Ein digitales Projekt oder Netzwerk erweist sich heute als wertvoll.",
        "sternzeichen": "Wassermann"
    },
    {
        "spruch": "Neue Ideen brauchen Mut \u2013 heute hast du genug davon.",
        "sternzeichen": "Wassermann"
    },
    {
        "spruch": "Du denkst um die Ecke \u2013 und bringst frischen Wind ins Spiel.",
        "sternzeichen": "Wassermann"
    },
    {
        "spruch": "Ein Tag voller Tr\u00e4ume \u2013 aber auch einer, der dich inspiriert.",
        "sternzeichen": "Fische"
    },
    {
        "spruch": "Du sp\u00fcrst heute feine Stimmungen \u2013 vertraue diesem Gesp\u00fcr.",
        "sternzeichen": "Fische"
    },
    {
        "spruch": "Eine kreative Idee verdient es, festgehalten zu werden.",
        "sternzeichen": "Fische"
    },
    {
        "spruch": "Du f\u00fchlst mehr als andere \u2013 nutze das f\u00fcr etwas Gutes.",
        "sternzeichen": "Fische"
    },
    {
        "spruch": "Ein Moment der Stille bringt heute eine unerwartete Erkenntnis.",
        "sternzeichen": "Fische"
    }
]

Datei: sternzeichen_info.json

[
    {
        "astrologie": "Energisch, impulsiv, f\u00fchrungsstark",
        "sternzeichen": "Widder",
        "wissenschaft": "Kein Zusammenhang mit Impulsivit\u00e4t durch Geburtszeit belegt."
    },
    {
        "astrologie": "Best\u00e4ndig, genussvoll, sicherheitsliebend",
        "sternzeichen": "Stier",
        "wissenschaft": "Genussorientierung ist kulturell gepr\u00e4gt, nicht kalendarisch bestimmt."
    },
    {
        "astrologie": "Kommunikativ, neugierig, vielseitig",
        "sternzeichen": "Zwillinge",
        "wissenschaft": "Kein nachgewiesener Zusammenhang zwischen Kommunikationsf\u00e4higkeit und Sternzeichen."
    },
    {
        "astrologie": "Sensibel, familienorientiert, zur\u00fcckhaltend",
        "sternzeichen": "Krebs",
        "wissenschaft": "Emotionale Auspr\u00e4gung h\u00e4ngt stark von Bindungserfahrungen ab, nicht vom Sternbild."
    },
    {
        "astrologie": "Kreativ, stolz, f\u00fchrungsfreudig",
        "sternzeichen": "L\u00f6we",
        "wissenschaft": "Sommergeborene haben leicht erh\u00f6hte Gesundheitsrisiken \u2013 aber kein Bezug zu F\u00fchrungsqualit\u00e4ten."
    },
    {
        "astrologie": "Perfektionistisch, analytisch, praktisch",
        "sternzeichen": "Jungfrau",
        "wissenschaft": "Kein wissenschaftlicher Nachweis f\u00fcr erh\u00f6hten Perfektionismus durch Geburtszeit."
    },
    {
        "astrologie": "Harmoniestrebsam, stilvoll, diplomatisch",
        "sternzeichen": "Waage",
        "wissenschaft": "Kein belegbarer Zusammenhang zwischen Harmoniestreben und astrologischem Zeichen."
    },
    {
        "astrologie": "Tiefgr\u00fcndig, intensiv, kontrollierend",
        "sternzeichen": "Skorpion",
        "wissenschaft": "Keine Belege f\u00fcr tiefere Emotionalit\u00e4t oder Kontrollbed\u00fcrfnis bei November-Geborenen."
    },
    {
        "astrologie": "Optimistisch, freiheitsliebend, idealistisch",
        "sternzeichen": "Sch\u00fctze",
        "wissenschaft": "Freiheitsdrang entsteht durch Sozialisierung und Umwelt, nicht Sternbild."
    },
    {
        "astrologie": "Diszipliniert, ehrgeizig, pflichtbewusst",
        "sternzeichen": "Steinbock",
        "wissenschaft": "Einzelne Studien zeigen leichte Effekte durch Einschulungsalter \u2013 aber keine Beweise f\u00fcr mehr Disziplin."
    },
    {
        "astrologie": "Unkonventionell, innovativ, unabh\u00e4ngig",
        "sternzeichen": "Wassermann",
        "wissenschaft": "Keine erh\u00f6hte Innovationsfreude oder Kreativit\u00e4t durch astrologisches Zeichen belegt."
    },
    {
        "astrologie": "Tr\u00e4umerisch, sensibel, mitf\u00fchlend",
        "sternzeichen": "Fische",
        "wissenschaft": "Sensibilit\u00e4t ist ein Pers\u00f6nlichkeitsmerkmal, aber nicht vom Sternzeichen abh\u00e4ngig."
    }
]

<?php

function sanitize_filename($string) {
    $umlaute = ['ä' => 'ae', 'ö' => 'oe', 'ü' => 'ue', 'ß' => 'ss',
                'Ä' => 'Ae', 'Ö' => 'Oe', 'Ü' => 'Ue'];
    return strtr($string, $umlaute);
}


// Seitentitel und Includes
$pageTitle = "JsonSQL Demo: Horoskop-Generator";

$JsonSQLpath = __DIR__ . '/../../src/JsonSQL.php';
if (!file_exists($JsonSQLpath)) {
    die("❌ Datei nicht gefunden!");
}
require_once $JsonSQLpath;
require_once __DIR__ . '/../includes/header.php';

use Src\JsonSQL;

// JsonSQL-Instanz
$db = new JsonSQL(['demo' => __DIR__ . '/../testdb']);
$db->use('demo');

$table = 'horoskope';

// Demo-Daten vorbereiten
if (!file_exists(__DIR__ . '/../testdb/' . $table . '.json')) {
    $db->truncate($table);

    $horoskope = [
        "Widder" => [
            "Deine Entschlossenheit bringt heute neue Türen zum Öffnen – greif zu, bevor sie sich wieder schließen.",
            "Eine impulsive Entscheidung könnte überraschend positive Folgen haben.",
            "Lass dich nicht von kleinen Rückschlägen entmutigen – du hast mehr Kraft, als du glaubst.",
            "Dein inneres Feuer motiviert auch andere – teile deine Energie!",
            "Ein Gespräch mit einem alten Kontakt bringt heute neuen Schwung in deine Pläne."
        ],
        "Stier" => [
            "Beständigkeit ist deine Stärke – doch heute zahlt sich ein kleiner Perspektivwechsel aus.",
            "Ein Genussmoment heute lässt dich wieder zur Ruhe kommen – gönn ihn dir bewusst.",
            "Vertraue auf deine Werte – sie führen dich sicher durch Unsicherheiten.",
            "Eine finanzielle Entscheidung heute sollte gut durchdacht sein – bleib realistisch.",
            "Dein Bedürfnis nach Sicherheit wird heute gestärkt – durch jemanden, den du liebst."
        ],
        "Zwillinge" => [
            "Neue Informationen warten auf dich – bleib aufmerksam und nutze deinen Wissensdurst.",
            "Ein spontaner Austausch führt heute zu einer überraschenden Einsicht.",
            "Dein Humor wirkt heute wie ein Türöffner – nütze ihn mit Leichtigkeit.",
            "Du jonglierst heute mehrere Dinge zugleich – vertraue deiner Intuition, was wichtig ist.",
            "Ein alter Gedanke bringt heute eine neue Lösung – du musst nur zuhören."
        ],
        "Krebs" => [
            "Ein Gefühl wird heute zur Entscheidung – folge deiner inneren Stimme.",
            "Deine Sensibilität ist heute ein Geschenk für dich und deine Mitmenschen.",
            "Familie oder enge Freunde geben dir heute besonders viel Halt.",
            "Rückzug kann heute genau das sein, was du brauchst – erlaube dir die Pause.",
            "Ein kleines Zeichen von außen bestätigt, was du innerlich längst fühlst."
        ],
        "Löwe" => [
            "Dein Auftritt überzeugt heute – selbst wenn du es nicht planst.",
            "Eine kreative Idee verdient heute Applaus – trau dich, sie zu zeigen.",
            "Du stehst im Mittelpunkt – nutze die Aufmerksamkeit für etwas Sinnvolles.",
            "Ein Kompliment heute kann Türen öffnen – gib es weiter.",
            "Mut und Würde gehen heute Hand in Hand – bleib dir treu."
        ],
        "Jungfrau" => [
            "Ein Plan geht auf – dank deiner Detailgenauigkeit.",
            "Du erkennst heute einen Fehler, bevor er passiert – das zahlt sich aus.",
            "Klarheit entsteht, wenn du deine Gedanken sortierst – nimm dir Zeit dafür.",
            "Deine Hilfe wird gebraucht – sei großzügig mit deiner Kompetenz.",
            "Ein aufgeräumter Moment bringt dir heute inneren Frieden."
        ],
        "Waage" => [
            "Heute findest du die Balance zwischen Pflicht und Vergnügen.",
            "Ein harmonisches Gespräch bringt eine festgefahrene Situation in Bewegung.",
            "Schönheit im Alltag fällt dir heute besonders auf – teile diesen Blick.",
            "Ein kleiner Kompromiss führt zu einem großen Frieden.",
            "Du wirkst heute wie ein Ruhepol – und das tut anderen gut."
        ],
        "Skorpion" => [
            "Etwas Altes darf heute losgelassen werden – und macht Platz für Tiefe.",
            "Du erkennst heute, was hinter den Worten steht – nutze diese Fähigkeit mit Verantwortung.",
            "Ein ehrliches Gespräch bringt heute mehr Nähe als erwartet.",
            "Deine Intuition führt dich genau dahin, wo du gebraucht wirst.",
            "Ein innerer Wandel kündigt sich leise an – sei offen dafür."
        ],
        "Schütze" => [
            "Ein Funke Abenteuerlust bringt heute Farbe in deinen Alltag.",
            "Du bist offen für Neues – und das zieht neue Menschen an.",
            "Heute ist ein guter Tag, um groß zu denken – und klein anzufangen.",
            "Ein Reiseziel oder Gedanke lässt dich heute nicht los – hör hin.",
            "Eine spontane Idee bringt dir mehr als jede Planung."
        ],
        "Steinbock" => [
            "Deine Ausdauer zeigt heute erste Früchte – bleib konsequent.",
            "Du setzt heute klare Grenzen – und wirst dafür respektiert.",
            "Ein langfristiges Ziel fühlt sich heute zum Greifen nah an.",
            "Ein kleiner Schritt ist manchmal größer als du denkst.",
            "Vertrauen in deine Fähigkeiten macht heute den Unterschied."
        ],
        "Wassermann" => [
            "Ein ungewöhnlicher Gedanke bringt heute eine geniale Lösung.",
            "Du darfst heute anders sein – genau das macht dich besonders.",
            "Ein digitales Projekt oder Netzwerk erweist sich heute als wertvoll.",
            "Neue Ideen brauchen Mut – heute hast du genug davon.",
            "Du denkst um die Ecke – und bringst frischen Wind ins Spiel."
        ],
        "Fische" => [
            "Ein Tag voller Träume – aber auch einer, der dich inspiriert.",
            "Du spürst heute feine Stimmungen – vertraue diesem Gespür.",
            "Eine kreative Idee verdient es, festgehalten zu werden.",
            "Du fühlst mehr als andere – nutze das für etwas Gutes.",
            "Ein Moment der Stille bringt heute eine unerwartete Erkenntnis."
        ]
    ];

    foreach ($horoskope as $zeichen => $texte) {
        foreach ($texte as $spruch) {
            $db->from($table)->insert([
                'sternzeichen' => $zeichen,
                'spruch' => $spruch
            ]);
        }
    }
}

$table2 = 'sternzeichen_info';

// Tabelle nur initial befüllen, falls noch nicht vorhanden
if (!file_exists(__DIR__ . '/../testdb/' . $table2 . '.json')) {
    $db->truncate($table2);

    $sternzeichenInfos = [
        "Widder" => [
            "astrologie" => "Energisch, impulsiv, führungsstark",
            "wissenschaft" => "Kein Zusammenhang mit Impulsivität durch Geburtszeit belegt."
        ],
        "Stier" => [
            "astrologie" => "Beständig, genussvoll, sicherheitsliebend",
            "wissenschaft" => "Genussorientierung ist kulturell geprägt, nicht kalendarisch bestimmt."
        ],
        "Zwillinge" => [
            "astrologie" => "Kommunikativ, neugierig, vielseitig",
            "wissenschaft" => "Kein nachgewiesener Zusammenhang zwischen Kommunikationsfähigkeit und Sternzeichen."
        ],
        "Krebs" => [
            "astrologie" => "Sensibel, familienorientiert, zurückhaltend",
            "wissenschaft" => "Emotionale Ausprägung hängt stark von Bindungserfahrungen ab, nicht vom Sternbild."
        ],
        "Löwe" => [
            "astrologie" => "Kreativ, stolz, führungsfreudig",
            "wissenschaft" => "Sommergeborene haben leicht erhöhte Gesundheitsrisiken – aber kein Bezug zu Führungsqualitäten."
        ],
        "Jungfrau" => [
            "astrologie" => "Perfektionistisch, analytisch, praktisch",
            "wissenschaft" => "Kein wissenschaftlicher Nachweis für erhöhten Perfektionismus durch Geburtszeit."
        ],
        "Waage" => [
            "astrologie" => "Harmoniestrebsam, stilvoll, diplomatisch",
            "wissenschaft" => "Kein belegbarer Zusammenhang zwischen Harmoniestreben und astrologischem Zeichen."
        ],
        "Skorpion" => [
            "astrologie" => "Tiefgründig, intensiv, kontrollierend",
            "wissenschaft" => "Keine Belege für tiefere Emotionalität oder Kontrollbedürfnis bei November-Geborenen."
        ],
        "Schütze" => [
            "astrologie" => "Optimistisch, freiheitsliebend, idealistisch",
            "wissenschaft" => "Freiheitsdrang entsteht durch Sozialisierung und Umwelt, nicht Sternbild."
        ],
        "Steinbock" => [
            "astrologie" => "Diszipliniert, ehrgeizig, pflichtbewusst",
            "wissenschaft" => "Einzelne Studien zeigen leichte Effekte durch Einschulungsalter – aber keine Beweise für mehr Disziplin."
        ],
        "Wassermann" => [
            "astrologie" => "Unkonventionell, innovativ, unabhängig",
            "wissenschaft" => "Keine erhöhte Innovationsfreude oder Kreativität durch astrologisches Zeichen belegt."
        ],
        "Fische" => [
            "astrologie" => "Träumerisch, sensibel, mitfühlend",
            "wissenschaft" => "Sensibilität ist ein Persönlichkeitsmerkmal, aber nicht vom Sternzeichen abhängig."
        ]
    ];

    foreach ($sternzeichenInfos as $zeichen => $info) {
        $db->from($table2)->insert([
            'sternzeichen' => $zeichen,
            'astrologie'   => $info['astrologie'],
            'wissenschaft' => $info['wissenschaft']
        ]);
    }
}




// Sternzeichen aus GET
$selected = isset($_GET['zeichen']) ? trim($_GET['zeichen']) : null;
$horoskop = null;

if ($selected) {
    $db->setTable($table);  
    $alle = $db->select('*')->from($table)->where([['sternzeichen', '=', $selected]])->get();
    $flat = array_values($alle);
    $horoskop = $flat[random_int(0, count($flat) - 1)];	

    $db->setTable($table2);    
    $data = $db->select('*')->from($table2)->where([['sternzeichen', '=', $selected]])->firstRecord();
  }

?>

<div class="container">
  <h1 class="my-4">🔮 Horoskop-Generator</h1>
  <p class="text-muted">
    Wähle dein Sternzeichen und erhalte dein individuelles Horoskop.
  </p>
  <form method="get" class="mb-4">
    <div class="row g-2 align-items-center">
      <div class="col-md-4">
        <select name="zeichen" class="form-select">
          <option value="">-- bitte wählen --</option>
          <?php foreach (["Widder","Stier","Zwillinge","Krebs","Löwe","Jungfrau","Waage","Skorpion","Schütze","Steinbock","Wassermann","Fische"] as $z): ?>
            <option value="<?= $z ?>" <?= $selected == $z ? 'selected' : '' ?>><?= $z ?></option>
          <?php endforeach; ?>
        </select>
      </div>
      <div class="col-md-auto">
        <button type="submit" class="btn btn-primary">✨ anzeigen</button>
      </div>
    </div>
  </form>




<?php if ($horoskop): ?>
  <?php
		$zeichen = strtolower($horoskop['sternzeichen']);
		$zeichen = sanitize_filename($zeichen); // ersetzt Umlaute
		$imgFile = __DIR__ . "/../assets/images/{$zeichen}.webp";
		$imgPath = "../assets/images/{$zeichen}.webp";
  ?>

<div class="card animate-horo p-4 shadow-sm border-0" style="background: #fff; border-radius: 1rem;">
  <div class="row align-items-center flex-column flex-md-row">
    <div class="col-md-3 text-center mb-3 mb-md-0">
      <div class="img-zoom-wrapper">
        <img src="<?= $imgPath ?>" alt="<?= htmlspecialchars($zeichen) ?>"
            class="img-fluid h_img" style="max-height: 280px;">
      </div>
    </div>
    <div class="col-md-7 text-center text-md-start">
      <h3 class="mb-2 h_head animate-title" style="font-family: 'Georgia', serif; font-weight: 600; color: #333;">
        <?= htmlspecialchars($horoskop['sternzeichen']) ?>
      </h3>
      <blockquote class="blockquote h_text animate-text" style="border-left: 4px solid #ccc; padding-left: 1rem; font-style: italic; color: #555;">
        <?= htmlspecialchars($horoskop['spruch']) ?>
      </blockquote>

      <?php if (!empty($data)): ?>
        <div class="mt-4 p-3 rounded bg-light border">
          <h5 class="mb-2 text-primary">🔍 Astrologische Deutung</h5>
          <p class="mb-2"><?= htmlspecialchars($data['astrologie']) ?></p>
          <h5 class="mt-3 mb-2 text-secondary">🔬 Wissenschaftliche Einschätzung</h5>
          <p class="mb-0"><?= htmlspecialchars($data['wissenschaft']) ?></p>
        </div>
      <?php endif; ?>




    </div>
  </div>
</div>

<style>

  .h_head {
    font-size: 2.55rem;    
    font-family: 'Georgia', serif;
    font-weight: 600;
    color: var(--bs-pink) !important;
  }

  .h_text {
    font-size: 1.65rem;
    line-height: 1.6;
    position: relative;
    color: var(--main-color) !important;
  }

  .animate-horo:hover {
    transform: translateY(-4px);
    box-shadow: 0 12px 24px rgba(0,0,0,0.1);
    transition: all 0.3s ease-in-out;
  }  

  @keyframes fadeUp {
    0% {
      opacity: 0;
      transform: translateY(20px);
    }
    100% {
      opacity: 1;
      transform: translateY(0);
    }
  }

  .animate-horo {
    animation: fadeUp 0.8s ease-out both;
  }

.img-zoom-wrapper {
  overflow: hidden;
  display: inline-block;
  border-radius: 0.5rem;
}

.h_img {
  transition: transform 0.6s ease;
}

.img-zoom-wrapper:hover .h_img {
  transform: scale(1.08);
}  

@keyframes zoomIn {
  0% {
    opacity: 0;
    transform: scale(0.9);
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}

.h_img {
  animation: zoomIn 0.8s ease-out both;
}


@keyframes fadeUp {
  0% {
    opacity: 0;
    transform: translateY(20px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes slideInRight {
  0% {
    opacity: 0;
    transform: translateX(60px);
  }
  100% {
    opacity: 1;
    transform: translateX(0);
  }
}

/* gesamte Karte */
.animate-horo {
  animation: fadeUp 0.8s ease-out both;
}

/* Bild animiert rein (z. B. zoomen) */
.h_img {
  animation: zoomIn 0.8s ease-out both;
}
@keyframes zoomIn {
  0% {
    opacity: 0;
    transform: scale(0.9);
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}

/* Titel rein von rechts */
.animate-title {
  animation: slideInRight 0.7s ease-out 0.6s both;
}

/* Text rein von rechts mit Verzögerung */
.animate-text {
  animation: slideInRight 0.7s ease-out 0.9s both;
}



</style>


<?php elseif ($selected): ?>
  <div class="alert alert-warning">Kein Horoskop gefunden.</div>
<?php endif; ?>
  
  
  
</div>

<?php
$jsonData = htmlspecialchars(file_get_contents(__DIR__ . '/../testdb/' . $table . '.json'));
$jsonData2 = htmlspecialchars(file_get_contents(__DIR__ . '/../testdb/' . $table2 . '.json'));
$scriptContent = htmlspecialchars(file_get_contents(__FILE__));
$scriptName = basename(__FILE__);
?>

<!-- Exclude Begin -->
<div class="container mt-5 mb-3">
  <div class="accordion" id="jsonAccordion">
    <div class="accordion-item">
      <h2 class="accordion-header" id="headingJson">
        <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseJson" aria-expanded="false" aria-controls="collapseJson">
          📄 JSON-Datein anzeigen
        </button>
      </h2>
      <div id="collapseJson" class="accordion-collapse collapse" aria-labelledby="headingJson" data-bs-parent="#jsonAccordion">
        <div class="accordion-body">
          <h4>Datei: <?= $table ?>.json</h4>
          <pre class="line-numbers"><code class="language-json"><?= $jsonData ?></code></pre>
        </div>
      </div>      
      <div id="collapseJson" class="accordion-collapse collapse" aria-labelledby="headingJson" data-bs-parent="#jsonAccordion">
        <div class="accordion-body">
          <h4>Datei: <?= $table2 ?>.json</h4>
          <pre class="line-numbers"><code class="language-json"><?= $jsonData2 ?></code></pre>
        </div>
      </div>
    </div>
  </div>
</div>

<div class="container mt-5 mb-3">
  <div class="accordion" id="codeAccordion">
    <div class="accordion-item">
      <h2 class="accordion-header" id="headingCode">
        <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseCode" aria-expanded="false" aria-controls="collapseCode">
          📄 Quellcode dieser Demo anzeigen (<?= htmlspecialchars($scriptName) ?>)
        </button>
      </h2>
      <div id="collapseCode" class="accordion-collapse collapse" aria-labelledby="headingCode" data-bs-parent="#codeAccordion">
        <div class="accordion-body">
          <pre class="line-numbers"><code class="language-php"><?= $scriptContent ?></code></pre>
        </div>
      </div>
    </div>
  </div>
</div>
<!-- Exclude End -->

<?php require_once __DIR__ . '/../includes/footer.php'; ?>