HTTP DLL - Tabellen in GM anzeigen lassen?

    • GM 8

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • HTTP DLL - Tabellen in GM anzeigen lassen?

      Nun leute, ich habe ein kleines Problem dessen Lösung mir nicht so ganz aufgehen will...

      Ich versuche seit kurzer Zeit ein wenig mit der HTTP DLL zu arbeiten. Der Hintergedanke ist eine Online Highscore aus einer Datenbank
      auszulesen (eine Tabelle wenn man so will) und diese über HTTP an den GM zurückschickt.

      Das eintragen, auslesen und formatieren der Datenbank in PHP ist kein Problem. Was aber ein winziges Problem darstellt ist die
      anzeige der Tabelle im GM.
      Wie könnte ich eine gesamte Tabelle an den GM übertragen und diese dann korrekt anzeigen lassen?

      - HTML Unterstützt der GM nicht. Daher fällt die Möglichkeit von HTML formatierten Tabellen schonmal weg.
      - zwischen den einzelnen Elementen irgendwelche sonderzeichen zu packen um diese dann beim GM weiter verarbeiten zu können
      (z.B: ein "-" zwischen den einzelnen Datensatz Elementen) wäre möglich, jedoch würde dies zu generellen Problemen führen falls der User genau
      diese Sonderzeichen in der Tabelle eingetragen hat. (Sehr isntabiles System...)
      - Man könnte jedes einzelne Element mit einer Abfrage aus der Datenbank holen, was mir ermöglichen würde diese korrekt in ein eigenes Array/Grid im GM
      einzuspeisen. Das Problem hierbei ist blos, dass man für jedes einzelne Tabellenelement wirklich jedesmal eine neue Abfrage machen müsste.
      Ich kann mir gut vorstellen dass das nicht gerade die optimalste möglichkeit ist , da das bei größeren Tabellen und mehreren Nutzern die
      das gleichzeitig abfragen schon DDOS Niveau erreichen könnte. (Stark übertrieben, aber so könnte man sich es vorstellen.)

      Hat jemand eine Ahnung wie man ohne größere Probleme eine Tabelle die man aus einer MYSQL/PostgreSQL Datenbank ausliest
      an den GM übertragen könnte?

    • Also ich würde eigentlich die Variante mit dem Zeichen zwischen den einzelnen Elementen bevorzugen denn so instabil ist das ja garantiert nicht. Du knnst einfach eine kurze Zeichenkette (zwi oder drei Zeichen) als Trennung nehmen.. oder das newline-Zeichen welches wohl kaum verwendet wird da du ja keine multi-Zeilen Namen erlaubst, oder?

      Willst du auf diese Drachen und -eier klicken?
      Sie werden sich freuen ;)
    • Quellcode

      1. String-Length:String;String-Length:String;\r\n


      Du könntest so eine Tabellenzeile aufbauen, mit String-Length weißt du wie lang der String ist, ein Trennzeichen oder das Punktkomma brauchst du dann nicht mehr, für reine visuelle Zwecke ist es aber dennoch da.
      wupto.net/ Nicht meine Seite!
      We love Koalas.

      GM-D-Spam-o-Meter: 32%
    • @DragonGamer:
      Ja, ich werde nicht multi-zeilen namen erlauben.

      @henrik1235
      Wäre eine gute möglichkeit.

      Die Frage stellt sich jetzt: Sollte ich für jeden Datensatz (also jeden eintrag der nun z.B: name und Punktezahl beinhaltet) eine eigene HTTP Abfrage machen,
      oder sollte ich doch versuchen so viele einträge wie nur möglich in einer Abfrage zusammenzufassen?

      Im Game Maker müsste ich nähmlich letztendlich sehr viel mit String funktionen arbeiten (spezielle zeichen am ende raussuchen und substrings erstellen,etc...)
      Was nicht gerade die schönste variante ist. Wenn ich jeden Datensatz einzeln versicke, so muss ich die am ende (wenn ich alle gleichzeitig übertragen würde) nicht
      unterteilen (nach trennzeichen suchen). Dafür entstehen aber mehr abfragen.
      Mann, gäbe es doch nur eine Möglichkeit ein Array irgendwie zu übertragen. XD

    • Für jedes einzelne Element eine extra Anfrage zu senden ist utopisch und auf jeden Fall nicht zu empfehlen.

      Wie DragonGamer schon vorgeschlagen hat, ist ein Zeilenumbruch als Trennzeichen sicher am einfachsten. Natürlich müsstest du dennoch garantieren, dass der Benutzer kein Zeilenumbruch als Zeichen eingeben kann. Eine andere Möglichkeit, falls du ein beliebiges Trennzeichen wählen willst, wäre die Daten entsprechend zu kodieren, falls sie das Trennzeichen enthalten. Beispielsweise könntest du vor das Trennzeichen einen Backslash setzen, quasi als escape character. Den Backslash selber müsstest du natürlich auch entsprechend maskieren, indem du einen weiteren Backslash davor setzt.