1e51ef7def
- 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>
216 lines
11 KiB
PHP
216 lines
11 KiB
PHP
<?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 Walsertal–Bregenzerwald.'],
|
||
['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);
|