Beiträge von Nuffin

    Worauf ich hinaus will, ist, dass Tabellen- und Spaltennamen keine Parameter sein können und deshalb dein Ansatz mit INSERT INTO ? (?,?,?) so nicht funktionieren kann.


    Außerdem kannst du nicht einfach zwei egal wie formatierte Strings an bind_param übergeben und hoffen, dass er daraus etwas anderes macht als zwei String-Argumente. Du musst jedes Argument einzeln übergeben. Und String-Interpolation int PHP funktioniert nur mit doppelten Anführungszeichen, Strings mit einfachen Anführungszeichen werden so verwendet wie sie da stehen. ("$foo" enthält den Inhalt von $foo, '$foo' bleibt wie es ist).

    Das Problem ist, dass AFAIK INSERT INTO ? (?,?,?) nicht geht, weil MySQL an der Stelle überall konkrete Namen erwartet. Nur deshalb fügt meine Version da die Namen direkt ein (und ist damit in sachen Tabellenname und Spaltennamen anfällig für SQL-Injection).


    Und während DU mit der Ausgabe im Fehlerfall wissen wirst, dass etwas schiefgegangen ist, kann das Programm nicht darauf reagieren (und zum Beispiel darauf verzichten, von dem fehlgeschlagenen Datensatz abhängige weitere Datensätze einzufügen).

    Tabellen- und Spaltennamen können keine Variablen sein, deshalb wirst du zumindest diese direkt in den Query hineinbasteln müssen.


    Mein Ansatz würde in etwa so aussehen. Die Funktion setzt voraus, dass sowohl der Tabellenname als auch die Spaltennamen entweder nicht von Benutzern angefasst werden können oder vorher entsprechend bereinigt wurden. Wenn das nicht der Fall sein sollte, fehlt hier Code um SQL Injections zu vermeiden (nichts hindert mich daran, in die tabelle Users` VALUES (); DROP TABLE Users; -- etwas einzufügen und damit "aus Versehen" die Users Tabelle zu löschen).

    Wer Syntax- oder Logikfehler findet, darf sie behalten. Disclaimer: Komplett ungetestet, weil keine PHP-Umgebung zur Hand.

    4 Bugs:

    • Wenn der Browser beendet wird, indem man das Fenster schließt, läuft der Prozess im Hintergrund weiter
    • Das 2. Maze-Level beendet einfach das Programm (und irgendwann knallts auch mal mit "Die Datei maze1.config gibt's nicht.", zumindest laut der Exception Logdatei)
    • Wenn ich das erste mal versuche, einen Zählerstand zu speichern, bekomme ich eine sehr unhübsche .NET Fehlermeldung, dass die Speicherdatei nicht existiert (FileNotFoundException -> "cs1n.config"). Beim zweiten mal speichern knallt es nur noch. Die gleiche Fehlermeldung kommt auch beim Laden.
    • Wenn ich einen neuen Zähler Speicherstand anlege, fragt er mich trotzdem, ob ich ihn "überschreiben" will.

    Klingt für mich ganz danach, als würde dein Timer irgendwann zwischendurch vom Garbage Collector gefressen, weil dein Programm nirgends mehr Referenzen darauf hat (beziehungsweise auf die Objekte, die Referenzen auf ihn haben und so weiter).

    So viel Auswahl gibt's ja bei Slice of Life/Comedy mit ausschließlich weiblichen Hauptcharakteren nicht, insofern dürfte das relativ einfach sein. /ironie off


    A-Channel?

    Versuchen wir es doch nochmal mit dem ominösen Flugzeug, das bisher niemand erraten hat (mit einem überarbeiteten und zwei neuen Tipps):


    Tipps:
    – Alle Hauptcharaktere sind weiblich
    - Der Anime ist sehr kurz (unter 60 Minuten Gesamtspieldauer), es handelt sich aber nicht um einen Film
    – Mindestens ein Charakter hat eine oder mehrere übersinnliche Fähigkeiten (Telekinese/Teleportation um genau zu sein)
    – Es gibt nur eine handvoll Charaktere, die überhaupt irgendeinen Beitrag zur Handlung leisten
    – Im Mittelpunkt der Handlung steht eine lesbische Beziehung
    – Inzest ist ebenfalls ein Thema
    – Es handelt sich bei diesem Anime um eine Indie-Produktion
    – Der Anime hat keinerlei Relation zu irgendwelchen Franchises oder Fandoms
    – Die erste Episode erschien 2010, die letzte 2012


    Falsch:
    – Detektiv Conan
    – Puchimas! Petit Idolmaster
    – Puni Puni Poemi
    – Touhou Niji Sousaku Doujin Anime: Musou Kakyou

    Alrighty, weiter gehts:


    Tipps:
    – Alle Hauptcharaktere sind weiblich
    - Die „Serie“ ist sehr kurz (unter 3 Stunden Gesamtspieldauer)
    – Mindestens ein Charakter hat eine oder mehrere übersinnliche Fähigkeiten
    – Es gibt nur eine handvoll Charaktere, die überhaupt irgendeinen Beitrag zur Handlung leisten


    Falsch:
    – Detektiv Conan
    – Puchimas! Petit Idolmaster

    Die Implementationsdetails waren dabei nicht das Problem. Es ging mir eher darum, dass ich keine sinnvolle Idee hatte, wie ich das in die UI hätte integrieren können, ohne dass es irgendwie fehl am Platz wirkt.


    Und zu dem "neuen" Format: <Entry ID=... ist das neue Format, das ich dafür angedacht hatte, was wohl bei irgendeinem Update zwischendurch versehentlich mit reingerutscht ist, obwohl das Feature noch nicht fertig ist. Das, das die Datei jetzt hat, ist wieder das alte ;)

    Filter in Dex und Habitatsliste (persistent beim Editionswechsel)

    Ist notiert.

    Sortierung Umschalten (numerisch/alphabetisch)

    Siehe oben.

    Status "gesehen" (neben gefangen)

    Die Idee hatte ich auch schon, aber keine Ahnung, wie ich es umsetzen sollte.

    Editionen deaktivieren

    Ja, zumindest für Version 2 ist sowas in der Richung auch schon geplant.

    Speicherort wählen (zum einfacheren Synchronisieren zwischen Rechnern)

    Siehe Punkt 1 ;)

    Hilfemenü (Link zum Forenthread, Versionsinfo, evtl. Changelog)

    Kann ich machen, ja.

    Vorschläge? Immer her damit. Ich kann allerdings nicht versprechen, ob und wann ich sie umsetze, da ich zum einen im Moment sehr wenig Zeit habe und zum anderen, wenn ich denn mal die Zeit finde, an einer cooleren Version 2 bastle, die awesome wird.^^


    (Freut mich, dass wir uns verstehen :p )

    Fix'd. Bei allen, die gestern nicht aktualisiert haben, sollte das Problem nicht auftauchen.


    Zum Glück ist das jemandem aufgefallen, der zumindest ein bisschen Ahnung von allem hat, sonst hätte das echt böse ins Auge gehen können (so böse wie's halt ist, wenn ne App, die man nicht unbedingt braucht, aber doch ganz gerne mal benutzt, plötzlich alle Daten wegwirft, die sie eigentlich gespeichert haben sollte).

    Das ist in der Tat ein Bug. Und falls du nach dem Starten irgendetwas getan hast, was Speichern auslöst (Spiel wechseln, zur Habitatsliste oder zurück wechseln, ausgewählten Pokedex ändern, Filter ändern, Dexter normal beenden), sind die Daten leider weg, so leid mir das tut.


    Ich werde mir das Problem aber trotzdem mal angucken, auf dass es nicht allen passiert und vor allem mir so ein Fehler nicht noch einmal unterläuft.


    Update: WTF? Ich habe (laut meiner Versionsverwaltung) nichts geändert, was auf irgendeine Art und Weise die Speicherdatei corrupten können sollte o.O
    Noch ein Update: Ich begreif's nicht. Der Code ist zwar ein bisschen konfus, stellenweise, sieht aber richtig aus. Und reproduzieren konnte ich das Problem leider auch nicht, weil es offenbar nur mit einer älteren Speicherdatei auftritt (auch wenn ich nicht begreife warum, weil meine einzige Änderung beim Laden ist, dass die zuletzt ausgewählte Sprache nicht nur verwendet wird, sondern auch im Sprachauswahlmenü korrekt selektiert ist). Und die ist mir beim Testen leider bereits abhanden gekommen.


    Memo an mich selbst: Einbauen, dass beim Start ein Backup der Speicherdatei angelegt wird, und die etwa 5 neusten dieser Backups vorgehalten werden, um in Zukunft solchen Problemen besser auf die Schliche kommen zu können.