Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] dataTable Sortierung nach Datum

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] dataTable Sortierung nach Datum

    Sers,

    ich habe das Plugin dataTable (http://www.datatables.net/) auf meiner Seite eingebunden und stoße auf einen ungewöhnlichen Fehler bei der Sortierung nach dem Datum.

    Zur Veranschaulichung habe ich hier mal zwei Screen Shots im Anhang, wie das Datum beginnend mit dem Neusten aktuell aussieht. Eingestellt habe ich, dass der neuste Eintrag ganz oben steht durch Klicken auf den th. Dem ist schonmal nicht so.
    Zusätzlich kommt die Sortierung auf den nächsten Seiten komplett durcheinander.. Naja schaut euch einfach mal die Bilder an vllt. könnt ihr mir da weiterhelfen. Ich vermute es liegt an dem deutschen Datumformat ?..

    page1.jpg

    page2.jpg

    Ich hoffe das ist verständlich genug erklärt.

    edit:
    Andersrum sortiert sieht das auf der letzten Seite auch durcheinander aus, dafür dass dort Neuste eig ganz zum Schluss stehen sollte..
    page11.jpg

    Greetz.
    Sakron
    No Sacrifice , no Glory--


  • #2
    Also sortieren tut er schonmal richtig. Unabhängig jetzt mal ob ASC oder DESC.

    Wenn es am Datum liegt (gb/de), was ich mir auch gut vorstellen kann, dann sollte dir folgender Link helfen: http://www.datatables.net/plug-ins/i18n/

    Kommentar


    • #3
      wo sortiert er richtig? Das ist alles durcheinander ab page 2. Die Version auf deren Homepage sortiert richtig. Meine nicht.. Den Link gucke ich mir mal an.

      Das hier müsste es sein:
      date-de Sort date / time in the format `dd.mm.YYYY HH:mm`.
      No Sacrifice , no Glory--

      Kommentar


      • #4
        Tut mir leid. Wenn ich mir deinen zweiten Screenshot anschaue, dann sehe ich dort sortierte Einträge. Das einzige was sich ändert sind die Sekunden. Und es stehen alle älteren Einträge vor den neuen.

        EDIT: Ich glaube die Screenshots sind nur etwas ungünstig. Du meinst bestimmt die Sortierung über die ganze Tabelle. Also spricht, dass erst Einträge von 12. kommen, dann Einträge vom 29. und ganz hinten wieder Einträge vom 12.. Oder?

        EDIT#2: Unter folgenden Link ist beschrieben wie man die Sortierung der Spalten beeinfluss kann: http://www.datatables.net/plug-ins/sorting/
        (Ich glaub das hattes du schon selbst gefunden. Sorry! )

        Kommentar


        • #5
          Hi,
          Danke für deine Hilfe.
          Ja die Screenshots sind nicht ganz eindeutig, ist nur schwer zu beschreiben weil die Sortierung erst ab der zweiten Seite offensichtlich zerschossen wird.
          Auf stackoverflow gab es ein ähnliches Problem , allerdings von 2011.
          von daher denke ich dass die das nun unter deinem Link über die Jahre verbessert haben.

          Die ersten beiden Screenshots gehören zusammen zur Sortierung nach 'dem neusten am Anfang.'
          Ja , meine die Sortierung über die ganze Tabelle nicht nur eine Page.

          Greetz
          No Sacrifice , no Glory--

          Kommentar


          • #6
            Ich weiß, dass ich auch mal so ein Problem hatte. Und wenn ich mich recht erinnere musste man nur eine Option des Plugins ändern. (Wie oben schon vermutet das Datumsformat) Ich weiß aber nicht mehr ob es auch das Plugin war was du benutzt.

            EDIT: Unter folgenden Link gibt es auch eine Diskussion darüber. Die Leute dort lösen das mit selbst geschriebene Funktionen. Ich hab dir da mal eine rausgesucht. (nicht getestet) http://www.datatables.net/forums/dis...#Comment_43824

            Kommentar


            • #7
              Alles klar.
              Ich kenn mich mit dem dataTable Plugin noch nicht so gut aus, wird aber sicher einen Weg geben. Zur "Not" eben was selbstgeschriebenes als Ergänzung. Ich denke aber, dass es da nun eine option gibt da dieses Problem ja anscheinend sehr häufig vorgekommen ist.

              Kennst du denn noch ein anderes gutes Plugin für Tabellen ?
              Wie sieht es mit der Performance aus, ab wievielen Einträgen wird das paging und die jquery dataTable unperformant (lädt lange).

              Ich habe zuvor die Daten aus meiner db Tabelle über ein array_multisort nach dem Datum sortiert. Sobald die Sortierung mit DataTable geht kann ich den Schritt ja raus lassen, dann geht das da schonmal etwas schneller .. oder ?

              Greetz.
              No Sacrifice , no Glory--

              Kommentar


              • #8
                Was möchtest du denn machen? Vielleicht kann ich dir einen anderen Ansatz empfehlen...
                Standards - Best Practices - AwesomePHP - Guideline für WebApps

                Kommentar


                • #9
                  Aktuell kenne ich mich da nicht so mit den verfügbaren Plugins aus. Sorry. Performance sollte mit JS ja nicht so gravierend sein, da es ja Client-Seitig ausgeführt wird und er keine Daten laden muss.

                  Kommentar


                  • #10
                    Neue Daten per js laden nicht, aber er kriegt eine durch php erzeugte große Tabelle mit und muss die dann mit dem Plugin "umbauen" bevor die Seite fertig geladen hat.

                    @rkr:
                    Ich lese mit php Daten aus db Tabellen und baue die in einem langen String zusammen, der dann in Form von einer Tabelle ausgegeben wird:

                    PHP-Code:
                    $str "<table><tr><td>.../td></tr></table> 
                    so nach dem Schema.

                    Ich möchte einfach eine Tabelle haben mit Sortier, Filter, Such und Paging Möglichkeit. Auf der Suche danach bin ich auf dataTables gestoßen. Beim Sortieren nach dem deutschen Datumformat kam es dann zu dem Fehler, wobei der sich ja nun geklärt hat. Jetzt gehts mir um die Performance und ob es da nicht noch ne bessere Lösung zu gibt.

                    Greetz
                    No Sacrifice , no Glory--

                    Kommentar


                    • #11
                      Der Ansatz ist verbesserungsbedürftig. Du hast etwas in HTML mit möchtest das mit serverseitig liegernden Daten befüllen. Für die Ausgabe von HTML kannst du ja eine Templateengine (wie beispielsweise PHP selbst) verwenden. Die Daten lädst du dann in Form von JSON via Ajax vom Server nach und renderst die Tabelle einfach neu. Da gibt es dann viele Ansätze. Die bekanntesten aktuell sind Handlebars oder ExtJS. Natürlich kann man auch dein Plugin verwenden. Allerdings musst du es dann natürlich auch so verwenden, wie es dokumentiert ist: http://www.datatables.net/manual/data#Data-source-types
                      Standards - Best Practices - AwesomePHP - Guideline für WebApps

                      Kommentar


                      • #12
                        Da geb ich rkr recht. Eleganter ist es wenn Daten nur geladen werden wenn sie auch gebracuht werden. Sprich, erst wenn du auf die zweite Seite gehst werden auch die Daten geladen.

                        Kommentar


                        • #13
                          Ok. Das klingt plausibel. Nehm ich mir auf jedenfall zu Herzen und gucke mir das an. Wie gesagt habe erstmal nur die Basic Version von dem dataTable eingebunden und bin da noch am lernen wie genau das funktioniert.
                          Ich werde das Plugin beibehalten, allerdings das ganze dann umschreiben über den von dir geposteten Link.

                          Ich lasse den Thread mal offen, da ich evtl. nochmal beim umschreiben ne Frage haben werde (natürlich dann mit Code Ausschnitten hier).
                          Danke euch!
                          No Sacrifice , no Glory--

                          Kommentar


                          • #14
                            EDIT: Ich verzichte auf die template engine und lade das mit dataTable nach pro Seite. Sonst müsste ich mein ganzes Projekt auf die template Engine umbauen.
                            No Sacrifice , no Glory--

                            Kommentar


                            • #15
                              So, ein letztes mal hoffe ich.

                              Nach folgendem Link http://datatables.net/examples/ajax/simple.html habe ich das nun so verstanden, dass man die Daten die angezeigt werden sollen einfach in eine .txt Datei auslagert und diese dann beim Paging entsprechend eingelesen werden?

                              D.h. ich hole mir alle Daten in meinem php script, schreibe die in eine txt Datei und stelle die dann mit ajax zur Verfügung?

                              Wäre nett, wenn mir das jmd nochmals erklären könnte / bestätigen könnte.
                              Tausend Dank.

                              Sakron.
                              No Sacrifice , no Glory--

                              Kommentar

                              Lädt...
                              X