Matthias: Sortierbare Tabellen

Hallo!

Ich habe folgendes vor: Ich habe eine kleine Datenbank, die ich im Web zur Verfügung stellen möchte. Im wesentlichen soll der Benutzer eine Tabelle vorgesetzt bekommen, die er nach seinen eigenen Kriterien sortieren und vielleicht auch einschränken kann (nur Einträge, die in Feld X Wert y haben, oder sowas). Der Datenbestand ist relativ fest, das heisst es ist kein ausgefeiltes Frontend zur Dateneinabe/Bearbeitung nötig. Ab und zu würde ich schon gern neue Daten einpflegen können, dass muss aber nicht über-komfortabel sein, ich editiere auch gern Textdateien (wenns sein muss ;-) ). Normale Benutzer hingegen müssen garnichts ändern können. Schön wäre es jedoch, wenn für erfahrene Benutzer auch ausgefeiltere Abfragem/Suchmethoden (Suche mit boolschen Ausdrücken oder sowas?) zur Verfügung stünden, das ist aber kein Muss - die beschriebene dynamische Tabelle tuts auch. Im Moment habe ich die Daten in einer Access-DB, könnte sie aber von dort (relativ) problemlos z.B. nach XML exportieren.

Nebenbedingung: Da es eine rein private Sache ist, wäre es schön wenn ich dafür keinen eigenen Server betreiben müsste (um genau zu sein ist das ausgeschlossen). Also je weniger Serverseitige Anforderungen (Datenbanken, Parser/Interpreter usw), desto besser (weil billiger). Dafür nehme ich auch gern in Kauf, dass es (für mich) etwas unkomfortabler/aufwändiger wird.

Wie kann man so etwas realisieren? Ich habe schon in verschiedene Richtungen geschaut: Abfragen aus einer XML-Datei per PHP/Perl; eine "richtige" Datenbank, per Script abgefragt; direktes Transformieren aus XML per XSLT.. etwas wirklich befriedigendes habe ich aber noch nicht gefunden. Zumal eine Selbstbau-Lösung sicher eine Menge Arbeit macht.. für sowas muss es doch Standardlösungen geben. Andererseits fände ich es aber auch übertrieben, nur wegen so einer Tabelle ein ganzes WCMS aufzusetzen.

Natürlich wäre ich überglücklich, wenn jemand mein Problem mit einem Link auf eine mehr oder weniger fertige Lösung erschlagen könnte. Aber auch für allgemeine Hinweise, in welche Richtung es wohl sinnvoll ist, weiterzusuchen, oder wo die Vor/Nachteile verschiedener Ansätze liegen, wäre ich dankbar. Im Moment steh ich ziemlich auf dem Schlauch, und weiss zwischen XML, MySQL, PHP und Perl nichtmehr, wo ich überhaupt hinsoll. Wenn mir jemand begründet, warum das so wie ichs mir denke  garnicht geht - auch gut, dann hab ich wenigstens was gelernt.

Ach ja, wenn das ganze noch "schönes" Webdesign (relativ barrierefrei, valide, offene Standards/Open Source, für alle möglichen Browser geeignet) wäre, umso besser.. zumindest die gängigen neueren Browser (IE/Mozilla/Opera) sollten auf jeden Fall damit zurechtkommen, also bitte kein ActiveX oder sowas.

Vielen Dank für eure hilfreichen Antworten!

Matthias

PS: Vor diesem Posting habe ich nochmal gegooglesucht, und das hier gefunden: http://www.kryogenix.org/code/browser/sorttable
Sieht auf den ersten Blick gut aus: Einfach anzuwenden und elegant. Aber leider: Javascript. Was meint ihr dazu? Ausserdem fehlt natürlich die Möglichkeit, die Tabelle zu begrenzen, und z.B. nur Mitarbeiter mit einem bestimmten Gehalt oder Vornamen anzeigen zu lassen. Ich schätze, wenn ich sowas will, komme ich um eine Datenbank nicht drumherum, oder?

  1. Hmm.. Was ist los? Zu schwierig? Zu einfach? Unmöglich? Zu dumme Frage?

  2. Hallo Matthias,

    Hmm.. Was ist los?

    Zu schwierig?

    Nein.

    Zu einfach?

    Nein.

    Unmöglich?

    Nein.

    Zu dumme Frage?

    Nein.

    Aber schwammig, widersprüchlich, vielleicht auch im falschen Themenbereich eingeordnet, ...

    Nebenbedingung: Da es eine rein private Sache ist, wäre es schön wenn ich dafür keinen eigenen Server betreiben müsste (um genau zu sein ist das ausgeschlossen). Also je weniger Serverseitige Anforderungen (Datenbanken, Parser/Interpreter usw), desto besser (weil billiger). Dafür nehme ich auch gern in Kauf, dass es (für mich) etwas unkomfortabler/aufwändiger wird.

    Wozu solltest Du einen eigenen Server für so etwas betreiben müssen? Wie kommst Du auf die Idee? Es gibt Hostingangebote in Hülle und Fülle. Zugriff auf serverseitige Techniken und Datenbanken ist kein Luxus mehr, das gibt es inzwischen sogar bei Gratishostern. Je mehr serverseitige Techniken Dir zur Verfügung stehen, um so besser, weil der Aufwand und die Fehlerträchtigkeit sinkt.

    PS: Vor diesem Posting habe ich nochmal gegooglesucht, und das hier gefunden: http://www.kryogenix.org/code/browser/sorttable
    Sieht auf den ersten Blick gut aus: Einfach anzuwenden und elegant. Aber leider: Javascript. Was meint ihr dazu? Ausserdem fehlt natürlich die Möglichkeit, die Tabelle zu begrenzen, und z.B. nur Mitarbeiter mit einem bestimmten Gehalt oder Vornamen anzeigen zu lassen. Ich schätze, wenn ich sowas will, komme ich um eine Datenbank nicht drumherum, oder?

    Für Aufgaben, wie die von Dir ins Auge gefasste, bietet sich die Kombination von server- und clientseitigen Techniken an. Bereits für die Ausgabe Deiner Tabelle ist eine serverseitige Technik sinnvoll, denn Du willst ganz bestimmt nicht im HTML-Quelltext weitere Zeilen anfügen oder Werte editieren. Du überlässt dies lieber einem serverseitigen Skript, das seine Daten aus einer Textdatei, einer XML-Datei oder einer Datenbank bezieht.

    Der Datenbestand ist relativ fest,

    und wie umfangreich ungefähr? Anzahl Spalten, Anzahl Datensätze? Je umfangreicher, um so mehr spricht für den Einsatz eines DBMS.

    Ich habe folgendes vor: Ich habe eine kleine Datenbank, die ich im Web zur Verfügung stellen möchte. Im wesentlichen soll der Benutzer eine Tabelle vorgesetzt bekommen, die er nach seinen eigenen Kriterien sortieren und vielleicht auch einschränken kann (nur Einträge, die in Feld X Wert y haben, oder sowas).

    Was XML in Kombination mit XSLT hier bietet, weiss ich leider nicht. Deine Anforderungen werden von einem DBMS ausgezeichnet bedient, also setze eines ein.

    Schön wäre es jedoch, wenn für erfahrene Benutzer auch ausgefeiltere Abfragem/Suchmethoden (Suche mit boolschen Ausdrücken oder sowas?) zur Verfügung stünden, das ist aber kein Muss - die beschriebene dynamische Tabelle tuts auch.

    Wie kann man so etwas realisieren? Ich habe schon in verschiedene Richtungen geschaut: Abfragen aus einer XML-Datei per PHP/Perl; eine "richtige" Datenbank, per Script abgefragt; direktes Transformieren aus XML per XSLT.. etwas wirklich befriedigendes habe ich aber noch nicht gefunden.

    Und da ist ein Punkt, warum Du vielleicht noch keine Antworten bekommen hast. Wenn ich mir die Techniken anschaue, die Du abgecheckt haben willst, so finde ich dabei Techniken, mit denen sich Deine Problemstellung wunderbar und sehr befriedigend lösen lässt. Wenn Du hier nichts gefunden hast, was kann ein potentieller Helfer Dir noch anbieten?

    Zumal eine Selbstbau-Lösung sicher eine Menge Arbeit macht..

    soviel auch wieder nicht.

    für sowas muss es doch Standardlösungen geben.

    Was verstehst Du in diesem Zusammenhang unter einer "Standardlösung"?

    Andererseits fände ich es aber auch übertrieben, nur wegen so einer Tabelle ein ganzes WCMS aufzusetzen.

    Wie kommst Du auf die Idee, dass Du ein CMS für diese Aufgabe benötigst?

    Natürlich wäre ich überglücklich, wenn jemand mein Problem mit einem Link auf eine mehr oder weniger fertige Lösung erschlagen könnte.

    Ah ja, jemand kennt zufälligerweise genau Deine Tabelle(n) und war so nett und vorausschauend, etwas zu programmieren, das Du dann einsetzen kannst :-) Aber immerhin haben die Entwickler von Datenbankmanagementsystemen die Möglichkeiten zum Sortieren und Filtern bereits eingebaut. Warum willst Du diese nicht nutzen?

    Aber auch für allgemeine Hinweise, in welche Richtung es wohl sinnvoll ist, weiterzusuchen, oder wo die Vor/Nachteile verschiedener Ansätze liegen, wäre ich dankbar. Im Moment steh ich ziemlich auf dem Schlauch, und weiss zwischen XML, MySQL, PHP und Perl nichtmehr, wo ich überhaupt hinsoll. Wenn mir jemand begründet, warum das so wie ichs mir denke  garnicht geht - auch gut, dann hab ich wenigstens was gelernt.

    Setze von den serverseitigen Techniken diejenige ein, die Du am besten beherrschst.

    Ach ja, wenn das ganze noch "schönes" Webdesign (relativ barrierefrei, valide, offene Standards/Open Source, für alle möglichen Browser geeignet) wäre, umso besser.. zumindest die gängigen neueren Browser (IE/Mozilla/Opera) sollten auf jeden Fall damit zurechtkommen, also bitte kein ActiveX oder sowas.

    Hä? Was hat das mit Deinem Problem zu tun?
    Lass Dein Skript sauberes HTML schreiben, realisiere die grundlegende Funktionalität serverseitig; in dem von Dir angeführten Artikel steht ja, wie es geht. Decke clientseitig soviel ab, wie möglich (schneller, spart Traffic, entlastet den Server). Steht die clientseitig benötigte Funktionalität (aus welchen Gründen auch immer) nicht zur Verfügung, so greife auf die serverseitige Funktionalität zurück (Stichwort "graceful degradation").

    Eine Frage zum Abschluss: Was hat das ganze mit Design zu tun?

    Freundliche Grüße

    Vinzenz

    1. Erstmal Danke für Deine Antwort, ich hatte die Hoffnung schon aufgegeben...

      Aber schwammig, widersprüchlich, vielleicht auch im falschen Themenbereich eingeordnet, ...

      Und dabei hab ich mir extra Mühe gegeben, mein Problem möglichst detailliert zu beschreiben.. vielleicht hab ichs ja übertrieben.

      Wozu solltest Du einen eigenen Server für so etwas betreiben müssen? Wie kommst Du auf die Idee? Es gibt Hostingangebote in Hülle und Fülle. Zugriff auf serverseitige Techniken und Datenbanken ist kein Luxus mehr, das gibt es inzwischen sogar bei Gratishostern. Je mehr serverseitige Techniken Dir zur Verfügung stehen, um so besser, weil der Aufwand und die Fehlerträchtigkeit sinkt.

      Nun ja.. im Moment habe ich zwar 100 MB Webspace und eine Domain, kann dort aber eben kein Perl oder PHP ausführen und keine Datenbank betreiben. Einen XML/XSLT-Parser scheint es nach ersten Tests leider auch nicht zu geben. Dann wird halt doch mal ein Upgrade fällig werden müssen..

      Für Aufgaben, wie die von Dir ins Auge gefasste, bietet sich die Kombination von server- und clientseitigen Techniken an. Bereits für die Ausgabe Deiner Tabelle ist eine serverseitige Technik sinnvoll, denn Du willst ganz bestimmt nicht im HTML-Quelltext weitere Zeilen anfügen oder Werte editieren. Du überlässt dies lieber einem serverseitigen Skript, das seine Daten aus einer Textdatei, einer XML-Datei oder einer Datenbank bezieht.

      und wie umfangreich ungefähr? Anzahl Spalten, Anzahl Datensätze? Je umfangreicher, um so mehr spricht für den Einsatz eines DBMS.

      Eine "Haupttabelle" (14 Spalten, momenttan knapp 150 Datensätze (im "Endzustand" wohl nicht mehr als 300). Drei Nebentabellen (4, 5 und 8 Spalten, max. um die 50 Datensätze pro Tabelle), und ein paar kleine Tabellen für Schlagwörter, Eigenschaften und sowas uns sowas(2 oder 3 Spalten), sowie ein paar Verbindungstabellen (2 Spalten) um m*n-Beziehungen zwischen den Datensätzen der Haupttabelle und denen der Nebentabellen zu realisieren.
      Riecht das nach Datenbank?

      Was XML in Kombination mit XSLT hier bietet, weiss ich leider nicht. Deine Anforderungen werden von einem DBMS ausgezeichnet bedient, also setze eines ein.

      Hmm.. schade, ich mag XML. Aber wenn ich meine eigene Beschreibung oben so lese, hast Du wohl recht.

      Und da ist ein Punkt, warum Du vielleicht noch keine Antworten bekommen hast. Wenn ich mir die Techniken anschaue, die Du abgecheckt haben willst, so finde ich dabei Techniken, mit denen sich Deine Problemstellung wunderbar und sehr befriedigend lösen lässt. Wenn Du hier nichts gefunden hast, was kann ein potentieller Helfer Dir noch anbieten?

      Einen Rat, welche Technik am ehesten in Frage kommt.

      Was verstehst Du in diesem Zusammenhang unter einer "Standardlösung"?

      Ein Ding (z.B. Script), dass ich runterladen und an meine Bedürfnisse anpasen kann, ohne "from the scratch" neu programmieren zu müssen.. zumal ich (bis jetzt) weder PHP noch Perl kann.

      Wie kommst Du auf die Idee, dass Du ein CMS für diese Aufgabe benötigst?

      War nur eine Nebenbemerkung...

      Natürlich wäre ich überglücklich, wenn jemand mein Problem mit einem Link auf eine mehr oder weniger fertige Lösung erschlagen könnte.
      Ah ja, jemand kennt zufälligerweise genau Deine Tabelle(n) und war so nett und vorausschauend, etwas zu programmieren, das Du dann einsetzen kannst :-)

      Hmm.. da könntest Du aber ein bisschen mehr vom guten Willen meinerseits ausgehen. Ich habe ja gleich im nächsten Satz eingeschränkt, dass ich das nicht für wahrscheinlich halte, also häng mich jetzt nicht an diesem Satz auf..

      Aber immerhin haben die Entwickler von Datenbankmanagementsystemen die Möglichkeiten zum Sortieren und Filtern bereits eingebaut. Warum willst Du diese nicht nutzen?

      Datenbankmanagementsysteme? Ich weiss was das ist, aber ich kenne keine konkreten. Ist aber ein Stichwort nachdem man mal suchen kann, danke. Eine Empfehlung wäre natürlich auch willkommen.

      Setze von den serverseitigen Techniken diejenige ein, die Du am besten beherrschst.

      Bis jetzt, wie oben beschrieben, keine (ausser ein bisschen XML/XSLT, aber wie gesagt hab ich da im Moment keinen serverseitigen Parser zur Verfügung). Gerade darum frage ich mich - bzw. euch - welche ich denn lernen soll.

      Lass Dein Skript sauberes HTML schreiben, realisiere die grundlegende Funktionalität serverseitig; in dem von Dir angeführten Artikel steht ja, wie es geht. Decke clientseitig soviel ab, wie möglich (schneller, spart Traffic, entlastet den Server). Steht die clientseitig benötigte Funktionalität (aus welchen Gründen auch immer) nicht zur Verfügung, so greife auf die serverseitige Funktionalität zurück (Stichwort "graceful degradation").

      Klingt kompliziert ;-)

      Eine Frage zum Abschluss: Was hat das ganze mit Design zu tun?

      Naja, im nachhinein betrachtet war das wohl nicht die optimale Einordnung. Ich dachte dabei mehr an Design im Sinne von "technischer Entwurf", nicht von "künstlerischer Gestaltung". Aber wo hätte es denn sonst hingesollt? Datenbanken? Das ist doch nur EINE Möglichkeit. Programmiertechnik? Es geht ja (noch) nicht um konkretes Programmieren.

      1. Hallo Matthias,

        Erstmal Danke für Deine Antwort, ich hatte die Hoffnung schon aufgegeben...

        hehe, ich hatte anderes zu tun!

        Nun ja.. im Moment habe ich zwar 100 MB Webspace und eine Domain, kann dort aber eben kein Perl oder PHP ausführen und keine Datenbank betreiben. Einen XML/XSLT-Parser scheint es nach ersten Tests leider auch nicht zu geben. Dann wird halt doch mal ein Upgrade fällig werden müssen..

        oder ein Wechsel :-)

        [...] Zugriff auf serverseitige Techniken und Datenbanken ist kein Luxus mehr, das gibt es inzwischen sogar bei Gratishostern. [...]

        und wie umfangreich ungefähr? Anzahl Spalten, Anzahl Datensätze? Je umfangreicher, um so mehr spricht für den Einsatz eines DBMS.

        Eine "Haupttabelle" (14 Spalten, momenttan knapp 150 Datensätze (im "Endzustand" wohl nicht mehr als 300). Drei Nebentabellen (4, 5 und 8 Spalten, max. um die 50 Datensätze pro Tabelle), und ein paar kleine Tabellen für Schlagwörter, Eigenschaften und sowas uns sowas(2 oder 3 Spalten), sowie ein paar Verbindungstabellen (2 Spalten) um m*n-Beziehungen zwischen den Datensätzen der Haupttabelle und denen der Nebentabellen zu realisieren.
        Riecht das nach Datenbank?

        Auf jeden Fall nicht mehr nach Dateihandling. Was XML in dieser Richtung kann, weiß ich - wie bereits erwähnt - nicht. Ich würde in solch einem Fall das einsetzen, wo ich mich auskenne, eine Datenbank.

        Einen Rat, welche Technik am ehesten in Frage kommt.

        Was verstehst Du in diesem Zusammenhang unter einer "Standardlösung"?

        Ein Ding (z.B. Script), dass ich runterladen und an meine Bedürfnisse anpasen kann, ohne "from the scratch" neu programmieren zu müssen.. zumal ich (bis jetzt) weder PHP noch Perl kann.

        Das kannst Du ändern.

        Datenbankmanagementsysteme? Ich weiss was das ist, aber ich kenne keine konkreten. Ist aber ein Stichwort nachdem man mal suchen kann, danke. Eine Empfehlung wäre natürlich auch willkommen.

        Ähemm, im Grunde genommen ist sogar Microsoft Access eines, häufig verfügbar ist MySQL, auf Windows-Servern findest Du z.B. MS SQL Server, weitere Beispiele wären Oracle, DB2, PostgreSQL, Du kannst gern auch mal bei Wikipedia nachsehen :-)

        Setze von den serverseitigen Techniken diejenige ein, die Du am besten beherrschst.
        Bis jetzt, wie oben beschrieben, keine (ausser ein bisschen XML/XSLT, aber wie gesagt hab ich da im Moment keinen serverseitigen Parser zur Verfügung). Gerade darum frage ich mich - bzw. euch - welche ich denn lernen soll.

        Diejenige, die Du bei Deinem (zukünftigen) Hoster bekommst :-) Das könnte Perl oder PHP sein, es könnte aber auch JSP oder ASP (mit C#, VB-Script, ...) sein. Einstiegspakete bieten oft die Kombination von PHP als serverseitige Skriptsprache und MySQL als DBMS an. Wenn Du auf ein solches Paket umsteigst, solltest Du Dich mit PHP beschäftigen. Mit welchen Programmiersprachen hast Du Dich bisher befasst?

        Lass Dein Skript sauberes HTML schreiben, realisiere die grundlegende Funktionalität serverseitig; in dem von Dir angeführten Artikel steht ja, wie es geht. Decke clientseitig soviel ab, wie möglich (schneller, spart Traffic, entlastet den Server). Steht die clientseitig benötigte Funktionalität (aus welchen Gründen auch immer) nicht zur Verfügung, so greife auf die serverseitige Funktionalität zurück (Stichwort "graceful degradation").

        Klingt kompliziert ;-)

        komplizierter als es ist. Stark vereinfacht:

        Baue die Anwendung so auf, dass sie ausschliesslich serverseitig arbeitet.
        Füge Komfortfunktionen mit Javascript, z.B. die Sortierung ein, die nur dann funktionieren, wenn sämtliche Voraussetzungen erfüllt sind: Javascript aktiviert, sämtliche benötigten Objekte Methoden durch den Browser unterstützt.

        Wenn Du eine Programmiersprache erlernen willst, und hast Fragen zu dieser, dann bist Du hier genau an der richtigen Stelle!

        Freundliche Grüße

        Vinzenz

        1. Auf jeden Fall nicht mehr nach Dateihandling. Was XML in dieser Richtung kann, weiß ich - wie bereits erwähnt - nicht. Ich würde in solch einem Fall das einsetzen, wo ich mich auskenne, eine Datenbank.

          zum repräsntieren und abfragen reicht es.. und hat den Vorteil dass es sich direkt in (x)html transferieren lässt. Schwierig wird es allerdings mit den m*n-Beziehungen, weil xml ja rein hirarchisch ist.. das gibt entsprechende Redundanz.

          Das kannst Du ändern.

          Klar, dauert aber seine Zeit, und ich möchte möglichst nicht erst nach ein paar Wochen feststllen, dass ich das falsche gelernt habe.

          Ähemm, im Grunde genommen ist sogar Microsoft Access eines, häufig verfügbar ist MySQL, auf Windows-Servern findest Du z.B. MS SQL Server, weitere Beispiele wären Oracle, DB2, PostgreSQL, Du kannst gern auch mal bei Wikipedia nachsehen :-)

          Dann weiss ich ja wenigstens in welche Richtung ich mich weiterbilde am Wochenende...

          Diejenige, die Du bei Deinem (zukünftigen) Hoster bekommst :-)

          Hmm.. ich wähl lieber den Hoster nach der verfügbaren Scriptsprache, als die Sprache nach dem Hoster...

          Das könnte Perl oder PHP sein, es könnte aber auch JSP oder ASP (mit C#, VB-Script, ...) sein.

          Ehrlich gesagt will ich mir diesen Microsoft-only-Kram wie C# oder VB nicht unbedingt antun.. wenn ich nicht muss.

          Einstiegspakete bieten oft die Kombination von PHP als serverseitige Skriptsprache und MySQL als DBMS an. Wenn Du auf ein solches Paket umsteigst, solltest Du Dich mit PHP beschäftigen. Mit welchen Programmiersprachen hast Du Dich bisher befasst?

          Pascal (sehr lange her), C (etwas frischer), JAVA (am aktuellsten und besten)

          Vielleicht kannst Du mir ja eine Empfehlung geben: Was lernt sich am leichtesten, wenn man C/Java halbwegs beherrscht?

          Viele Grüsse

          Matthias

          1. Hallo Matthias,

            Vielleicht kannst Du mir ja eine Empfehlung geben: Was lernt sich am leichtesten, wenn man C/Java halbwegs beherrscht?

            Wenn Du bereits Programmiersprachen beherrschst, sollte Dir das Erlernen einer weiteren leicht fallen. PHP wäre von der Syntax her der nächste Verwandte. Zwei gute Seiten zu PHP sind http://faq-php.de/index.html und http://www.php.net/manual/de/.

            Installiere Dir doch lokal ein solches System. Du könntest dazu XAMPP nehmen oder die Komponenten von Hand zu Fuß aufsetzen, z.B. anhand http://aktuell.de.selfhtml.org/artikel/server/apacheconf/index.htm.

            Das könnte Perl oder PHP sein, es könnte aber auch JSP oder ASP (mit C#, VB-Script, ...) sein.
            Ehrlich gesagt will ich mir diesen Microsoft-only-Kram wie C# oder VB nicht unbedingt antun.. wenn ich nicht muss.

            Es gibt auch Apache:ASP :-)

            Freundliche Grüße

            Vinzenz