Files
geograsim/App/php/seed-waypoint-facts.php
Adminator 1e51ef7def Nachtrag: alle bisher untracked Ordner + hängende Änderungen mit-committen
- Konzept/, didaktik_geografie/, didaktik_simulation/, v2-modules/, v2-platform/
- 12 code-workspace-Files
- STATUS-*.md
- viele M/D/R-Änderungen an bereits getrackten Files
- .gitignore verstärkt: **/.humaninput/, **/secret_keys.txt

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-07-08 02:27:02 +02:00

216 lines
11 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Schema-Migration + Seed für geo_waypoint_facts.
* Pro Ort zwei Fakten:
* kind=geo — geografisch/topografisch (Höhe, Lage, Tal, Grenze ...)
* kind=kids — für Sek-I-Zielgruppe: greifbar, überraschend, konkret
*
* Aufruf: http://localhost/geograsim/App/php/seed-waypoint-facts.php
*/
require_once __DIR__ . '/config/app.php';
require_once __DIR__ . '/config/db.php';
header('Content-Type: application/json; charset=utf-8');
$db = getDB();
$db->exec("CREATE TABLE IF NOT EXISTS geo_waypoint_facts (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
wp_key VARCHAR(32) NOT NULL,
kind ENUM('geo','kids') NOT NULL,
text_de VARCHAR(500) NOT NULL,
audio_file VARCHAR(120) DEFAULT NULL,
display_order TINYINT DEFAULT 1,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
INDEX idx_wp_kind (wp_key, kind)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci");
$db->exec("DELETE FROM geo_waypoint_facts");
// Struktur: wp_key => [[kind, text_de], ...]
$facts = [
// --- Vorarlberg: Basen, Städte, Walgau, Walsertal, Laternsertal ---
'nenzing' => [
['geo', 'Nenzing liegt im Walgau, dem breiten Tal der Ill, auf 520 Metern Höhe.'],
['kids', 'Von hier startet der Rettungshubschrauber Christophorus 8 — rund um die Uhr einsatzbereit.'],
],
'hohenems' => [
['geo', 'Der Flugplatz Hohenems-Dornbirn liegt im Rheintal, direkt im Lustenauer Ried.'],
['kids', 'Von diesem Flugplatz starten Fallschirmspringer, die aus 4.000 Metern Höhe abspringen.'],
],
'dornbirn' => [
['geo', 'Größte Stadt Vorarlbergs, über 50.000 Einwohner, im Rheintal auf 437 Metern.'],
['kids', 'In Dornbirn fährt die Karrenseilbahn — eine der steilsten Seilbahnen Österreichs, 45 Grad Neigung.'],
],
'goetzis' => [
['geo', 'Marktgemeinde im Rheintal am Übergang zum Vorderwald, 436 Meter hoch.'],
['kids', 'Jedes Jahr kommen die besten Zehnkämpfer der Welt zum Hypomeeting nach Götzis.'],
],
'rankweil' => [
['geo', 'Liegt am Fuß des Ardetzenbergs, die Basilika thront 80 Meter über dem Rheintal.'],
['kids', 'Vom Liebfrauenberg sieht man bei klarem Wetter bis nach Deutschland zum Bodensee.'],
],
'feldkirch' => [
['geo', 'Grenzstadt zu Liechtenstein und der Schweiz, Ill fließt durch die Altstadt.'],
['kids', 'Die Schattenburg thront über der Stadt — früher wohnten hier die Grafen von Montfort.'],
],
'bregenz' => [
['geo', 'Landeshauptstadt Vorarlbergs am Ostufer des Bodensees, am Fuß des Pfänders.'],
['kids', 'Die Seebühne schwimmt auf dem Wasser — 7.000 Zuschauer sitzen dabei am Ufer und schauen zu.'],
],
'lustenau' => [
['geo', 'Flache Rheintalgemeinde direkt an der Schweizer Grenze, größte Gemeinde Österreichs ohne Stadtrecht.'],
['kids', 'In Lustenau stehen die größten Stick-Maschinen Europas — damit werden Stoffe in Hunderten Farben bestickt.'],
],
'bludenz' => [
['geo', 'Stadt im Walgau — hier münden fünf Täler: Montafon, Klostertal, Brandnertal, Walgau und Großes Walsertal.'],
['kids', 'In Bludenz wird Milka-Schokolade hergestellt — der Duft liegt manchmal über der ganzen Stadt.'],
],
'buers' => [
['geo', 'Kleine Walgau-Gemeinde unterhalb des Vorderälpele, 560 Meter Höhe.'],
['kids', 'An den Bürser Felswänden klettern Menschen aus ganz Europa — die Routen haben Namen wie „Himmelsleiter".'],
],
'nueziders' => [
['geo', 'Walgauer Gemeinde oberhalb von Bludenz auf 519 Metern.'],
['kids', 'Vom Hausberg Davenna sieht man bei klarem Wetter bis zum Bodensee — 50 Kilometer weit.'],
],
'innerbraz' => [
['geo', 'Im Klostertal am Fuß des Arlbergs, 706 Meter Höhe.'],
['kids', 'Direkt neben dem Dorf rauscht der Alfenz-Wasserfall 70 Meter in die Tiefe.'],
],
'thueringen' => [
['geo', 'Walgauer Gemeinde am Eingang zum Großen Walsertal.'],
['kids', 'Hinter Thüringen beginnt das Große Walsertal — ein von der UNESCO geschützter Biosphärenpark.'],
],
'zwischenwasser' => [
['geo', 'Im Laternsertal zwischen Rheintal und Bregenzerwald, drei Ortsteile: Batschuns, Muntlix und Dafins.'],
['kids', 'Zwischenwasser heißt so, weil hier die Bäche aus drei Tälern zusammenfließen.'],
],
'laterns' => [
['geo', 'Laternsertal auf 870 Metern — eines der sonnenreichsten Täler Vorarlbergs.'],
['kids', 'Im Winter gibt es hier mehr Sonnenstunden als in vielen Tallagen — perfekt zum Skifahren und Rodeln.'],
],
'damuels' => [
['geo', 'Höchstgelegene Pfarrei Österreichs, 1.430 Meter, am Übergang WalsertalBregenzerwald.'],
['kids', 'Damüls ist eines der schneereichsten Dörfer Europas — im Winter fallen manchmal über 10 Meter Schnee.'],
],
'fontanella' => [
['geo', 'Im Großen Walsertal auf 1.150 Metern, eine der kleinsten Gemeinden Vorarlbergs.'],
['kids', 'Die Leute sprechen hier einen alten Walserdialekt — eine Sprache, die vor 700 Jahren aus dem Wallis mitkam.'],
],
'sonntag' => [
['geo', 'Gemeinde im Großen Walsertal, 896 Meter, am Bach Lutz.'],
['kids', 'Der Ort heißt Sonntag, weil die ersten Walser-Siedler im 13. Jahrhundert an einem Sonntag angekommen sind.'],
],
// --- Bregenzerwald ---
'egg' => [
['geo', 'Tor zum Bregenzerwald, wo die Subersach in die Bregenzerach mündet.'],
['kids', 'Hier wird der echte Bregenzerwälder Bergkäse aus Heumilch gemacht — ohne Zusatzstoffe.'],
],
'bezau' => [
['geo', 'Hauptort des Bregenzerwalds, Ausgangspunkt der Käsestraße.'],
['kids', 'Mit der Wälderbahn-Draisine können Kinder selbst auf alten Schienen durch den Wald kurbeln.'],
],
'mellau' => [
['geo', 'Im Bregenzerwald an der Bregenzerach, Skigebiet mit Verbindung nach Damüls.'],
['kids', 'Die Mellauer Schluchten sind ein Canyoning-Paradies — im Neoprenanzug springt man durch Felskessel.'],
],
// --- Montafon / Brandnertal ---
'brand' => [
['geo', 'Im Brandnertal am Fuß der Zimba, 1.037 Meter Höhe.'],
['kids', 'Oberhalb liegt der Lünersee — einer der größten Bergseen Europas, türkis wie im Karibik-Bild.'],
],
'schruns' => [
['geo', 'Hauptort des Montafons, 688 Meter, zwischen Verwallgruppe und Rätikon.'],
['kids', 'Beim „Vieh-Scheiden" im Herbst kommen die Kühe geschmückt von der Alm — mit Blumen und großen Glocken.'],
],
'tschagguns' => [
['geo', 'Direkt gegenüber von Schruns, über der Ill, 687 Meter.'],
['kids', 'Vom Golm sieht man bei klarer Sicht bis zum Säntis in die Schweiz.'],
],
'stgallenk' => [
['geo', 'Im Montafon auf 880 Metern, Zugang zur Silvretta-Hochalpenstraße.'],
['kids', 'Hinter dem Ort beginnt die Silvretta-Hochalpenstraße mit 34 Kehren bis auf 2.032 Meter.'],
],
'gaschurn' => [
['geo', 'Im hinteren Montafon auf 980 Metern, am Übergang zur Silvretta.'],
['kids', 'Hier verbrachte schon Albert Einstein einen Sommer — zusammen mit Physikern aus ganz Europa.'],
],
// --- Tirol: Innsbruck, Inntal, Zillertal ---
'innsbruck' => [
['geo', 'Tiroler Landeshauptstadt im Inntal, 574 Meter, umgeben von Nordkette und Patscherkofel.'],
['kids', 'Innsbruck war dreimal Olympia-Stadt (1964, 1976, 2012) — keine andere Stadt hat das öfter.'],
],
'hall' => [
['geo', 'Inn-Stadt östlich von Innsbruck, durch Salzabbau im Mittelalter reich geworden.'],
['kids', 'In Hall wurde vor über 500 Jahren die erste runde Silbermünze der Welt geprägt.'],
],
'schwaz' => [
['geo', 'Silberbergbau-Stadt im Inntal, im 16. Jahrhundert zweitgrößte Stadt Tirols.'],
['kids', 'Im Silberbergwerk fahren Besucher mit einer Grubenbahn tief in den Berg — in Gänge, die vor 500 Jahren von Bergleuten in den Fels gemeißelt wurden.'],
],
'telfs' => [
['geo', 'Westliche Inntal-Gemeinde am Fuß der Hohen Munde, 634 Meter.'],
['kids', 'Alle fünf Jahre ziehen beim Schleicherlaufen Männer mit riesigen, zentnerschweren Masken durch die Straßen.'],
],
'imst' => [
['geo', 'Am Ausgang des Pitztals, auf der Sonnenterrasse über dem Inntal.'],
['kids', 'Die Imster Alpen-Achterbahn ist 3,5 Kilometer lang und saust mit bis zu 80 km/h den Berg hinunter.'],
],
'landeck' => [
['geo', 'Dort, wo Inn und Sanna zusammenfließen, Tor zum Paznauntal.'],
['kids', 'Die Burg Landeck thront auf einem Felsen über der Stadt — vor 700 Jahren wohnten hier Ritter.'],
],
'jenbach' => [
['geo', 'Am Eingang zum Zillertal, Knotenpunkt von Achenseebahn und Zillertalbahn.'],
['kids', 'Hier fährt die letzte Dampf-Zahnradbahn Europas — mit Zahnrad-Schienen steil bergauf zum Achensee.'],
],
'kufstein' => [
['geo', 'Grenzstadt zu Bayern, 503 Meter, direkt am Inn.'],
['kids', 'Auf der Festung Kufstein spielt die größte Freiluft-Orgel der Welt jeden Mittag 12 Uhr.'],
],
'woergl' => [
['geo', 'Im Unterinntal, großer Eisenbahnknotenpunkt.'],
['kids', 'Durch Wörgl fahren jeden Tag über 200 Güterzüge — mehr als durch jeden anderen Ort Tirols.'],
],
'mayrhofen' => [
['geo', 'Am Ende des Zillertals auf 633 Metern, umgeben von den Zillertaler Alpen.'],
['kids', 'Die „Harakiri"-Piste am Penken hat 78 Prozent Gefälle — die steilste Skipiste der Welt.'],
],
'zell_ziller' => [
['geo', 'Am Eingang zum Zillertal, 575 Meter.'],
['kids', 'Die Pfarrkirche von Zell heißt „Zillertaler Dom" — und ihr Inneres glänzt wie echtes Gold.'],
],
// --- Ötztal ---
'soelden' => [
['geo', 'Im Ötztal auf 1.377 Metern, größter Gletscherskiort Österreichs.'],
['kids', 'Auf dem Rettenbachferner kann man das ganze Jahr Ski fahren — auch mitten im Sommer.'],
],
'oetz' => [
['geo', 'Eingangsgemeinde des Ötztals, 820 Meter, am Fuß des Acherkogels.'],
['kids', 'Das Ötztal ist nach dem Ort benannt — und hier fand man 1991 den 5.300 Jahre alten Eismann Ötzi.'],
],
];
$stmt = $db->prepare("INSERT INTO geo_waypoint_facts (wp_key, kind, text_de, display_order) VALUES (?, ?, ?, ?)");
$inserted = 0;
foreach ($facts as $wp_key => $items) {
$order = 0;
foreach ($items as [$kind, $text]) {
$stmt->execute([$wp_key, $kind, $text, ++$order]);
$inserted++;
}
}
echo json_encode([
'ok' => true,
'schema_created' => true,
'waypoints_covered' => count($facts),
'facts_inserted' => $inserted,
], JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);