Datenbank-Changelog

Vorwort zum Changelog

Für alle, die meinen 1. Artikel und 2. Artikel zur Online-Verwaltung meiner Sammlung gelesen haben und wissen möchten, wie es weitergeht: Hier dokumentiere ich im Changelog alle Änderungen und Erweiterungen, die ich umgesetzt habe. Die meisten Anpassungen entstehen ganz pragmatisch beim täglichen Erfassen meiner Daten – immer dann, wenn mir neue Ideen kommen oder ich mir Funktionen wünsche, die den Workflow noch besser machen.

Erwartet bitte keine wöchentlichen Updates – manchmal passiert ein paar Monate gar nichts, weil die Anwendung für meine Zwecke bereits auf einem sehr guten Stand ist. Andere Sammler haben natürlich andere Anforderungen an Felder, Auswertungen oder die Darstellung; vieles hängt vom jeweiligen Sammelgebiet und den persönlichen Vorlieben ab.

Viele der Anpassungen setze ich mit Unterstützung von Claude um. Deshalb lasse ich mir die Changelog-Texte auch gleich von der KI zusammenfassen – wer, wenn nicht sie, weiß am besten, was unter der Haube passiert ist? 😉


2026-08-23 · v2026.08.23 – Verkaufsstatus, Testerfassung, Zustand/Vollständigkeit-Trennung & modernisiertes Formular

Kurzfassung: Ein größeres Update mit mehreren neuen Feldern, einer grundlegenden Überarbeitung von edit.php/view.php (Karten-Layout statt langer Zeilenliste) sowie diversen Workflow- und Bugfix-Verbesserungen.

✅ Neu: Testerfassung

Getestete Geräte/Spiele lassen sich jetzt direkt festhalten.

  • Neue Felder „Getestet am“ (Datum) und „Getestet Status“ (— ungetestet — / ✅ OK / ❌ Defekt).
  • Integriert in edit.php, index.php (sortierbare Spalte), view.php und den CSV-Export.
🔀 Zustand & Vollständigkeit sauber getrennt

Das Feld „Zustand“ vermischte bisher Erhaltungszustand (Neu/Gebraucht) und Vollständigkeit (z. B. „nur Cartridge“, „Gebr. mit Verpackung“) – das führte zu Widersprüchen und ließ sich nicht sauber auswerten.

  • „Zustand“ ist jetzt eine reine Erhaltungsskala (Neu, Eingeschweisst, Gebraucht, perspektivisch auch Sehr gut/Gut/Defekt).
  • Vollständigkeit läuft über eigene Felder: „Verpackung Status“, „Datenträger Status“ und „Anleitung Status“ – jeweils dreistufig: — nicht vorhanden — / Original / Nachdruck/Repro. Damit lässt sich z. B. eine nachgedruckte Verpackung von einer fehlenden klar unterscheiden.
  • „Sonstiges“ (Extras wie Poster, Sticker) hat jetzt ein eigenes Freitextfeld „Sonstiges Beschreibung“, das nur erscheint, wenn die Checkbox angehakt ist.
  • Migration der ca. 1300 Bestandsdatensätze inkl. Bereinigung mehrerer gefundener Dateninkonsistenzen (z. B. „Gebr. komplett“ ohne gesetzten Verpackungs-Haken).
🎨 edit.php & view.php: Karten-Layout statt langer Liste

Die reine Zeilenliste wurde durch thematisch gruppierte Karten ersetzt: Grunddaten · Zustand & Vollständigkeit · Standort & Kennung · Kauf & Test · Links & Notizen. Kurze Felder (Selects, Zahlen, Datum) stehen dabei im 2-Spalten-Raster nebeneinander statt einzeln in voller Breite.

  • Buttonleiste in edit.php bleibt jetzt beim Scrollen oben sichtbar (sticky) – kein Zurückscrollen mehr zum Speichern nötig.
  • Nebenbei einen hartnäckigen CSS-Bug behoben (body { height:100% } statt min-height), der die Sticky-Leiste am Seitenende verschwinden ließ.
🔗 „Gehört zu“ statt „Verbaut in“

Das Verknüpfungsfeld wurde verallgemeinert: Es funktioniert jetzt nicht nur für eingebautes Zubehör, sondern z. B. auch für Handbücher, die separat (z. B. in der Bibliothek) aufbewahrt werden, aber zu einem Gerät gehören.

  • Label umbenannt in „Gehört zu“ (Formular) bzw. „Zugehörige Objekte“ (Rückwärts-Liste in der Detailansicht).
  • Auswahl über ein Textfeld mit Autovervollständigung statt eines langen Dropdowns (bei >1300 Objekten spürbar angenehmer).
  • Bei gleichnamigen Objekten (z. B. zwei baugleiche Geräte) wird zur Unterscheidung die Seriennummer mit angezeigt.
🏷️ Neu: „Zum Verkauf“-Markierung

Für Duplikate, die abgegeben werden sollen.

  • Einfache Checkbox „Zum Verkauf“ in edit.php/view.php.
  • Neuer Schnellfilter in index.php plus kleines 🏷️-Symbol direkt in der Liste, auch ohne aktiven Filter sichtbar.
  • Wird beim Duplizieren eines Eintrags automatisch nicht mitkopiert.
🛒 einkauf.php → Sammlung: Direktübernahme
  • Neuer Button „➡️ Sammlung“ übergibt Bezeichnung, Kategorie, Verkäufer, Menge, Lieferdatum (→ Einkaufsdatum) und Preis (→ Wert) direkt an ein neues edit.php-Formular – öffnet in einem neuen Tab, damit die Einkaufsliste offen bleiben kann.
  • Neuer Filter „In Sammlung übernommen“ (offen/erfasst), um am Monatsende gezielt zu sehen, was noch übertragen werden muss.
  • Bugfix: Der Status-Filter „geliefert“ warf einen SQL-Fehler (Incorrect DATE value), weil eine echte DATE-Spalte fälschlich mit einem leeren String verglichen wurde.
🔍 Weitere Verbesserungen
  • Löschen-Button (mit Rückfrage inkl. Objektname) jetzt auch direkt in edit.php verfügbar, nicht mehr nur in der Listenansicht.
  • Suche durchsucht jetzt zusätzlich das Feld „Bemerkung“ – praktisch z. B. für plattformübergreifende Themen/Reihen wie „Perry Rhodan“.
  • Bildpfade-Korrektur: Ein Einmal-Werkzeug hat versehentlich verlinkte WordPress-Vorschaubilder (z. B. …-225x300.jpg) auf die volle Original-Auflösung zurückgesetzt (mit Vorschau vor der Änderung).

2026-07-27 · v2026.07.27 – Rückwärts-Verknüpfung „Verbautes Zubehör” & Kamera-Barcode-Scan

🧩 Rückwärts-Verknüpfung für „Verbaut in”

Ergänzend zum zuletzt eingeführten Feld „Verbaut in” zeigt die Detailansicht eines übergeordneten Geräts jetzt auch die Gegenrichtung: Unter „Verbautes Zubehör” erscheinen alle Objekte, die genau dieses Gerät als Verbauort angegeben haben – ebenfalls als klickbare Links.

📷 Barcode-Scan per iPad-Kamera

Der bisherige Scan-Button funktionierte nur mit nativer Browser-Unterstützung (Chrome/Android) und blieb auf dem iPad wirkungslos. Jetzt gibt es einen Fallback über die Bibliothek ZXing, der auch in Safari auf iOS zuverlässig eine Live-Kameraerkennung ermöglicht.

  • Höhere Kameraauflösung und kontinuierlicher Autofokus für schärfere Bilder bei Nahaufnahmen.
  • Taschenlampen-Umschalter, sofern vom Gerät unterstützt – hilfreich bei spiegelnden Etiketten.
  • Zusätzliche Funktion „Foto aufnehmen & auswerten”: Ein Einzelbild wird in mehreren Zoomstufen ausgewertet, was bei kleinen oder unscharfen Barcodes bessere Ergebnisse liefert als die reine Live-Erkennung.

Bekannte Einschränkung: Bei einigen japanischen Spieleverpackungen (Barcode direkt auf dunklem Cover ohne umlaufenden weißen Rand) fehlt die für Barcode-Scanner nötige „Ruhezone”. Diese Codes lassen sich derzeit zuverlässig nur per USB-Scanner oder manueller Eingabe erfassen.

2026-07-05 · v2026.07.05 – Zubehör-Verknüpfung & neue Statistikseite

🔗 Neues Feld: „Verbaut in”

Für Hardware, die als Erweiterung oder Zubehör physisch in einem anderen Gerät steckt (z. B. eine RAM-Erweiterung im Amiga 600), gibt es jetzt ein eigenes Feld. Damit lassen sich Objekte direkt miteinander verknüpfen.

  • Datenbank: Neues Feld VerbautIn in der Tabelle Sammlung (Verweis auf einen anderen Datensatz).
  • edit.php: Autocomplete-Eingabefeld – beim Tippen werden passende Geräte aus der Sammlung vorgeschlagen, Auswahl per Klick.
  • view.php: Zwei neue Anzeigen, die jeweils nur erscheinen, wenn sie befüllt sind:
    • „Verbaut in” – zeigt das übergeordnete Gerät mit direktem Link zur Detailansicht.
    • „Verbautes Zubehör” – zeigt beim übergeordneten Gerät alle verknüpften Zubehörteile ebenfalls als klickbare Links.

📈 Statistikseite überarbeitet

Die statistik.php wurde vollständig neu aufgebaut.

  • Bugfix: Die Summe des Felds „Wert” wurde bisher falsch berechnet, weil das Feld als Text mit deutschem Dezimalkomma gespeichert ist. Das gilt jetzt auch für „Einkaufspreis”.
  • Neue Kennzahlen: Objekte mit/ohne Bild, Anzahl als Zubehör verbauter Objekte, Einkäufe nach Jahr (Feld „Einkaufsdatum”, getrennt vom Erscheinungsjahr), Standortverteilung.
  • Datentransparenz: Bei Wert und Einkaufspreis wird jetzt angezeigt, wie viel Prozent der Datensätze überhaupt befüllt sind – damit ist sofort klar, wie repräsentativ die Gesamtsumme ist.
  • Balkendiagramme für alle Verteilungen (Material, Standort, Kategorien, Jahre) – ohne externe Bibliotheken, reines CSS.
  • Design angepasst: Die Seite bindet jetzt wie alle anderen Seiten die zentrale app.css ein und hat eine einheitliche Toolbar.
2026-02-17

Die Datei einkauf.php wurde um zusätzliche Filter für Lieferjahr und Liefermonat erweitert.

Damit können die Einkäufe nun gezielter nach dem tatsächlichen Lieferzeitraum ausgewertet werden. Die Filter werden über die Parameter lyear und lmonth verarbeitet, zum Beispiel für Auswertungen wie Januar 2024.

2026-02-01· v2026.02.01
  • edit.php: Syntaxfehler behoben (fehlendes Komma in der Sortier-Map), dadurch kein HTTP-500 mehr.
  • Feld ergänzt: Neues Eingabefeld „Link zu YouTube“ in edit.php integriert (Speichern/Übernahme im Formular).
  • Sortierung/Mapping: „Link zu YouTube“ in die Sortier-Logik ($sort_map) aufgenommen.
  • Unsaved-Changes-Warnung: Speichern-/Duplizieren-Buttons als echte Submit-Buttons umgesetzt (inkl. form="f"), damit beim Speichern keine unnötige Warnung erscheint.
  • Navigation & Warnlogik: Warnung bei ungespeicherten Änderungen für „Zurück“ sowie Datensatz-Navigation (Erster/Vorheriger/Nächster/Letzter) sauber aktiviert.
  • JS-Fix: Click-Handler angepasst, sodass Klicks in Formularfelder keine wiederholten Warn-Dialoge mehr auslösen (nur noch Links/Buttons werden abgefangen).

2025-11-28 · v2025.11.28
Admin-Update für die Sammlung – kompakt zusammengefasst

In den letzten Tagen hat der Admin-Bereich der Sammlung einige sinnvolle Upgrades bekommen: Export, bessere Navigation, saubere Optik – und kleine Komfortfunktionen, die Zeit sparen. Hier der Überblick:

Neu
  • CSV-Export der aktuell gefilterten/sortierten Liste (nur Desktop) mit sprechendem Dateinamen.
  • Feld „ISBN“ für Bücher: Eingabe in edit.php, Anzeige in view.php (jeweils direkt nach „Standort“).
  • „Original/Homebrew“ jetzt als Drop-down (Standard: Original).
Verbesserungen
  • Zentrale Styles über /sammlung/assets/admin.css + inc_head_admin.php.
  • Einheitliche Top-Bar: „Zurück zu Einstellungen“ als farbiger, zentrierter Button; Suche rechts.
  • Tabellen mit Zebra/Hover/Kompakt/Sticky-Header; auf Desktop standardmäßig 50 % Breite, mobil 100 %.
  • Formulare in den Verwaltungsseiten zentriert; Eingabefeld und „Hinzufügen/Speichern“ in einer Zeile.
  • Pagination der Admin-Listen wie in index.php („Erste/Zurück/Weiter/Letzte“).
  • In der Hauptliste öffnet ein Klick auf die Bild-Spalte direkt die Detailansicht (view.php).
Korrekturen
  • Navigation in view.php/edit.php (Erster/Zurück/Nächster/Letzter) übernimmt jetzt zuverlässig alle aktiven Filter & Sortierungen.
  • Bezeichnungen/Links bereinigt (z. B. manage_publisher.php statt manage_Publisher.php; saubere Verwendung von Datentraeger/Datentrager).
  • Löschen-Funktionen auf Prepared Statements umgestellt; klare Meldungen bei FK-Sperren.
  • CSV-Export: UTF-8-BOM + Semikolon; Gast sieht keine vertraulichen Spalten (z. B. „Wert“).
Technik
  • Konsistente Typografie & Buttons, saubere Includes, stabilere SQL-Order-By-Logik.

2025-11-02 · v2025.11.02

Kurz & knackig: Viel Feinschliff bei Navigation, Sichtbarkeit und Sicherheit – plus ein reparierter IGDB-Import.

Neue Funktionen & Verbesserungen
  • Sortiertes Blättern in der Bearbeitung: In edit.php springen „Vorheriger/Nächster“ jetzt gemäß aktueller Sortierung & Richtung (statt nur alphabetisch nach Bezeichnung).
  • IGDB-Import wieder aktiv: Der Button „🔎 IGDB holen“ lädt Beschreibungen erneut zuverlässig und zeigt danach eine Statusmeldung an.
  • Detailansicht mit Komfort:
    • Lightbox fürs Bild (Klick zum Vergrößern).
    • Toolbar mit Zurück, Bearbeiten sowie Erster/Vorheriger/Nächster/Letzter.
    • Schnellfilter: „Alle vom Hersteller / Publisher / Verkäufer“.
Sichtbarkeiten (Gast vs. Admin)
  • Gäste dürfen view.php sehen, jedoch ohne: Standort, Box, Einkaufspreis, Wert.
  • Admins: In view.php wird „Box“ automatisch ausgeblendet, wenn Standort ≠ „Lager“ – weniger Ballast, mehr Fokus.
Stabilität & Fehlerbehebungen
  • HTTP-500 & Login-Schleifen behoben: klare Regeln (Gast erlaubt in view.php, Admin-Pflicht in edit.php).
  • Konstanten-Warnungen entfernt: config.php definiert Werte nur, wenn noch nicht vorhanden.
  • Saubere Parameter-Übergabe: sort und dir werden in Links/Buttons konsequent mitgegeben.
Sicherheit & Hosting-Hygiene
  • Strengere Dateirechte: config.php restriktiv gesetzt.
  • Aufgeräumte .htaccess unter /sammlung: Rewrite für die App, Schutz vor Direktzugriff auf sensible Dateien.
  • .user.ini ergänzt (keine verbotenen OPcache-Overrides): Fehlerlog in php-error.log, display_errors=Off, härtere Session-Settings.
  • OPcache-Warnung beseitigt: fehlerhafte runtime-Overrides entfernt.
  • phpinfo-Check durchgeführt und Basiskonfiguration geprüft.

2025-10-31 · v2025.10.31
🆕 Zeitstempel: „Erstellt am“ & „Geändert am“
  • Neue Felder in der Datenbank angelegt und automatisch befüllt (bei Anlage bzw. Update).
  • edit.php: Beide Felder werden nur lesbar angezeigt (formatiert TT.MM.JJJJ HH:MM:SS).
  • view.php: Zeitstempel in der Tabelle sowie zusätzlich als kompakte Statuszeile unter der Beschreibung.
Zeitstempel eingebaut
🗂️ index.php
  • Paginierung oben wieder aktiv (ellipsiert, mit „Erste/Letzte“).
  • Material-Filter in der Dropdown-Zeile (neben Hersteller/Publisher/Verkäufer/Standort) ergänzt; inkl. Einzeln-Zurücksetzen.
  • Alle Navigations-/Filterlinks übernehmen konsequent die aktuellen Parameter (Sortierung, Richtung, Filter, Suchbegriff).
Anzeige aktiver Filter mit der Möglichkeit zu löschen
🔎 view.php
  • Bunte Toolbar oben (unten entfernt) mit:
    • ← Zurück zur Liste (rot)
    • 📝 Bearbeiten (grün)
    • ◀️ Vorheriger / Nächster ▶️ (blau) sowie ⏮️ Erster / Letzter ⏭️ (violett)
  • Direktsuche per Buttons:
    • „Alle von Hersteller …“, „Alle vom Publisher …“, „Alle vom Verkäufer …“
  • Beschreibung: Führende Leerzeilen und bis zu drei führende Spaces werden automatisch entfernt → saubere Anzeige.
Leiste angepasst
✏️ edit.php
  • 👁️ „Anzeigen“-Button in der oberen Buttonzeile für den schnellen Wechsel zur Detailansicht.
  • Vor/Nächster weiterhin vorhanden; Farb-/Stilabstimmung mit der view-Toolbar.
  • Zeitstempel wie oben read-only eingebunden.

2025-10-23 · v2025.10.23

Neu: Aktiver Filter & Trefferanzahl

  • Oberhalb der Tabellenansicht werden aktive Filter jetzt deutlich angezeigt (inkl. „Zurücksetzen“-Link).
  • Zusätzlich wird die Anzahl der Datensätze der aktuellen Ansicht eingeblendet (z. B. „127 Einträge“).
  • Erleichtert die Orientierung bei komplexen Filterkombinationen.

Verbessert: Tabellenlayout nutzt volle Breite

  • Die Liste verwendet nun ein fixes Tabellenlayout und definierte Spaltenbreiten.
  • Lange Inhalte werden sauber umbrochen/ellipsis, Datum & Icon-Spalten bleiben kompakt.
  • Ergebnis: bessere Lesbarkeit, keine „springenden“ Spalten mehr und optimale Nutzung der Bildschirmbreite.

2025-10-20 · v2025.10.20 – Neu: Sortierung in der Listenansicht

Neu

Es wird automatisch nach dem Feld Bezeichnung sortiert – es ist auch eine aufsteigende Sortierung mit anderen Feldern möglich. Bisher gab es aber keine Möglichkeit absteigend zu sortieren, was in manchen Situationen hilfreich sein kann.

  • Klickbare Spaltenköpfe mit Sortier-Toggle: Ein Klick sortiert aufsteigend, ein weiterer absteigend.
  • Pfeilsymbole (▲/▼) zeigen die aktuelle Sortierrichtung je Spalte.

2025-10-19 · v2025.10.19 – Neu: IGDB-Import – Anpassung Anzeige Feld Bemerkung

Neu

  • IGDB-Import direkt aus edit.php
    Button „🔎 IGDB holen“ importiert die Spielbeschreibung (Summary/Storyline) anhand der Bezeichnung – optional gefiltert nach Plattform.
  • Automatische Übersetzung nach Deutsch
    Integrierte translate_to_de() nutzt DeepL (Free, per DEEPL_API_KEY) und optional LibreTranslate als Fallback.
    Inklusive Mini-Cache zur Schonung des Kontingents und Force-Retranslate via &retranslate=1.
  • nach dem Import und der Übersetzung wird der Text in das Feld Beschreibung eingefügt.
Button “IGDB” holen hinzugefügt

Verbesserung

Die Anzeige des Felds Bemerkung wurde angepasst, damit keine Leerzeilen und Leerzeichen angezeigt werden. Damit wird das Feld passend zum Label angezeigt.


2025-10-12 · v2025.10.12 – Verbesserungen bei Login, Rollen & Filter-Shortcuts

Kurzfassung: Der Zugang ist komfortabler, Gäste sehen ausgewählte Listen schreibgeschützt, und es gibt praktische QR-Shortcuts/Kurzcodes zu gefilterten Ansichten.

Gast-Ansicht (Read-only)

Besucher können definierte Listen schreibgeschützt ansehen. Preis/Wert-Felder und Bearbeitungsfunktionen bleiben ausgeblendet.

Klar getrennte Bereiche

Bereiche zum Bearbeiten, Duplizieren und Einstellen sind deutlich als Admin vorbehalten. Für Gäste ändert sich hier nichts sichtbar – sie bleiben in der Leseperspektive.

Stabilerer Anmeldefluss

Anmeldungen und Rücksprünge zur gewünschten Ansicht wurden verbessert, sodass man schneller bei der Ziel-Liste landet.

Generierung von QR-Shortcuts & Kurzcodes

Dies wurde für die begehbare Sammlung bzw. das Museum hinzugefügt. Damit ist es möglich, bei den Regalen mit Spielen per QR-Code die Liste mit den Spielen online aufzurufen und Hinweise dazu, die in der Datenbank gespeichert sind, abzurufen.

Für häufig genutzte Filter gibt es jetzt QR-Shortcuts und Kurzcodes.
Beispiel:

  • Mega-Drive-SpieleKurzcode: 10005123
    Beim Scannen/Code-Eingeben landet ihr direkt in der passenden Liste, read-only.
QR-Shortcut Mega-Drive-Spiele (read-only)
Scan & go – Kurzcode: 10005123
Hinweis zum Datenschutz & zur Sicherheit

Gäste erhalten grundsätzlich nur Lesezugriff auf ausgewählte Ansichten. Schreibfunktionen bleiben ausschließlich dem Admin vorbehalten.


2025-10-06 · v2025.10.06 — Edit-Seite: Lesbarkeit & Workflow verbessert
Die Seite zum Bearbeiten der Einträge hat die Möglichkeit erhalten einen neuen (leeren) Datensatz zu erstellen oder einen neuen Datensatz mit gleichen Werten zu generieren – entweder mit oder ohne die Felder “Datum, Preis und Wert”

Bereich: UI/UX, Formularlogik
Änderungen (kurz):

  • Button-Kontraste erhöht (bessere Lesbarkeit gegenüber grauem Hintergrund mit weißer Schrift).
  • Neuer Button „Neu anlegen“: öffnet ein leeres Formular für einen komplett neuen Datensatz (keine Feldübernahmen).
  • Button-Layout neu gruppiert:
    1. Zeile = Zurück · Speichern · Vorheriger · Nächster
    2. Zeile = weitere Aktionen (z. B. Neu anlegen, ggf. Extras)

Details:

  • Farb-/Kontrastanpassungen für die zwei neuen Buttons (Text bleibt weiß, Hintergrund jetzt deutlich dunkler/heller mit ausreichendem Kontrast nach WCAG-Empfehlung).
  • „Neu anlegen“ führt zu einem Blank-Formular; es werden keine Werte aus dem aktuell geöffneten Datensatz übernommen (reduziert versehentliche Duplikate).
  • Responsives Button-Wrapping: Die zwei Funktionsgruppen sind visuell getrennt, wirken auf schmalen Ansichten (Tablet/Phone) übersichtlicher.

Hinweise:

  • Keine Breaking Changes für bestehende Links/Funktionen.
  • Falls individuelle CSS-Overrides vorhanden sind, bitte prüfen, ob sie die neuen Kontrastwerte überschreiben.