Tom: Datenbank per html oder javascript auslesen

hallo an alle,

heute mal etwas komplexer. ich erstelle momentan eine datenbank mit allen flaggen der welt. diese hat min. als inhalt:

z.b.:

Deutsch. Name   Engl. Name     Olymp.Kürzel  FlagName(intern)
Afghanistan     Afghanistan    AFG           afg

nun meine frage. diese liste hat in etwa 200 zeilen, da so viele länder in frage kommen. ich brauche eine page, wo alle länder mit ihrem vollen namen alfabetisch geordnet untereinander aufgelistet sind, eine page auf der diese länder alfabetisch nach ihrem olympischen kürzel aufgelistet sind und eine index, die auf beide seiten verweist (kann ich auch selbst). beide pages sollten in der lage sein, das flaggenkürzel auszulesen und unter anderem die flagge aus einem unterverzeichnis (z.b. /pics) anzuzeigen. alle flaggen sind gifs. für den fall, dass weitere spalten hinzukommen, müsste das unkomplizierte einbinden möglich sein.

ist so etwas mit html oder javascript möglich ???
(momentan habe ich 200 erstellte länderpages muss sie aber wieder ändern, deshalb meine frage, ob das alle unkomplizierter und automatischer geht.)

  1. Hallo Tom,

    nun meine frage. diese liste hat in etwa 200 zeilen, da so viele länder in frage kommen. ich brauche eine page, wo alle länder mit ihrem vollen namen alfabetisch geordnet untereinander aufgelistet sind, eine page auf der diese länder alfabetisch nach ihrem olympischen kürzel aufgelistet sind und eine index, die auf beide seiten verweist (kann ich auch selbst). beide pages sollten in der lage sein, das flaggenkürzel auszulesen und unter anderem die flagge aus einem unterverzeichnis (z.b. /pics) anzuzeigen. alle flaggen sind gifs. für den fall, dass weitere spalten hinzukommen, müsste das unkomplizierte einbinden möglich sein.
    ist so etwas mit html oder javascript möglich ???

    Ja, das ist mit JavaScript moeglich. Ideal ist diese Aufgabe eigentlich sogar fuer die Anwendung des Document Object Models DOM. Dann brauchst du im Prinzip die Tabelle nur einmal notieren und kannst sie dann nach verschiedenen Spalten auf Knopfdruck sortieren lassen. In einer Anwendung, die sich auf eine einfache Liste bezieht, kannst du das Prinzip im Beispiel von http://selfhtml.teamone.de/dhtml/modelle/dom.htm#elementinhalte sehen. Da du nicht nur eine einfache Liste hast, sondern eine Tabelle, ist die Sache zwar etwas komplexer, aber das Prinzip ist aehnlich.

    Die GIFs wuerde ich dagegen statisch notieren. Aber wenn die GIFs die gleichen Vornamen haben wie die Kuerzel, dann kann man natuerlich so was machen wie <script>document.write('<img src="pics/'+kuerzel+'.gif">')</script>, wobei die Variable kuerzel zuvor noch - z.B. via document.getElementById().node.data - den Inhalt des Elements ausliest, in dem das zugehoerige Kuerzel steht. Aber das alles finde ich wie gesagt ziemlich ueberfluessig. Wenn die Tabelle nur einmal notiert werden muss, kann man es auch gleich statisch in HTML notieren. Den Rest sollte eben die Sortierfunktion leisten, die die Tabelle nach jeder Spalte sortieren kann und alle Zellen entsprechend neu beschreibt.

    viele Gruesse
      Stefan Muenz

    1. erst einmal meinen dank, ich habe mir nun diese von dir vorgeschlagenen page ausgedruckt und werde versuchen es zu verstehen. eine frage habe ich trotzdem noch.

      soll ich nun diese datenbank extern als csv anlegen oder in die seite die tabelle selbst als db einbinden und dann sortieren lassen !=???

      dank dir im voraus

      1. Hallo Tom

        soll ich nun diese datenbank extern als csv anlegen oder in die seite die tabelle selbst als db einbinden und dann sortieren lassen !=???

        Befrei dich mal von der Vorstellung, wegen 200 Zeilen alles moegliche "auslagern" zu wollen. Schreib einfach alles in eine saubere HTML-Tabelle und versuche dann Links anzubieten, bei deren Anklicken JavaScript-Funktionen aufgerufen werden, die den Inhalt der Tabelle nach einer bestimmten Spalte sortieren. Das ist sicherlich etwas knifflig, und ich hab es neulich schon mal als Feature-Artikel vorgeschlagen. Aber es ist machbar, funktioniert ohne weitere Serverkommunikation und ist eigentlich wirklich eine typische und schoene DHTML-Anwendung. Aber wie gesagt - leider nix, was man voellig ohne Programmierkenntnisse in einer Stunde mal eben dahin schreibt.

        viele Gruesse
          Stefan Muenz

      2. Hi,

        soll ich nun diese datenbank extern als csv anlegen oder
        in die seite die tabelle selbst als db einbinden und dann
        sortieren lassen !=???

        Wenn Du Deine Tabelle ohnehin via DOM elementweise ansteuern mußt und das
        ggf. noch über eine Indirektion (wegen der Sortierung), dann brauchst Du
        ohnehin zusätzlich zu der visualisierten Tabelle eine separate Hintergrund-
        Datenstruktur, welche die Netto-Informationen der Tabelle im Urzustand
        enthält.
        Und von JavaScript ist Deine Anwendung in diesem Falle ohnehin abhängig.

        Unter diesen speziellen Randbedingungen würde ich sagen:
        Ob Du die Hintergrund-Struktur durch DOM-Zugriffe einer fertigen HTML-
        Tabelle erstellst oder ob Du erst mal die Netto-Inhalte als CSV überträgst,
        per regular expressions parst und die Tabelle mit document.write on the fly
        generierst, das ist intellektuell nicht mehr arg unterschiedlich schwer.

        Die Lösung mit dem CSV-Format hätte den Vorteil, daß Du die gesamte "Ver-
        packung", also etwa 200 HTML-Tags, nicht über die Leitung jagen mußt, son-
        dern sie durch ein sehr viel kleineres JavaScript-Programm mit zwei inein-
        ander geschachtelten Schleifen auf dem Client generieren kannst.
        Du gewinnst also wahrscheinlich eine ganze Menge Download-Geschwindigkeit
        (je kürzer Deine Feldinhalte sind, um so mehr - selbst wenn Du zusätzlich
        mod_gzip einsetzen würdest, macht sich das immer noch bemerkbar); dafür muß
        der Client ein bißchen mehr arbeiten, um die erste Tabelle auszugeben.

        Intellektuell spannender fände ich daher die CSV-Version.
        In einem Intranet würde ich wahrscheinlich die HTML-Tabelle übertragen.

        Viele Grüße
              Michael