stefansvw: array nach datum sortieren

Hallo,

mein Problem ist folgendes:

Ich habe eine While-Schleife in der jede Auftragsnummer durchlaufen wird. In dieser Schleife habe ich folgende if-Bedingung

if( auftragsline == auftr_li[temp] )
         {
           auftragsnr[j] = auftr;
           datum[j]      = datum_auftr ;

j++;
         }

das ergebis dabei ist, das in einer Tabelle alles angezeigt wird nur nicht nach Datum sondern nach Auftragsnummer sortiert.

Am Schluss soll es eigentlich so aussehen:

Beispiel:

Auftragsnummer     Datum

12345              23.12.2006
34567              11.11.2006
68352              10.06.2006
12212              01.01.2006

usw.

die Ausgabe selbst sieht in etwa so aus

...

sHtml += "         <td width='13%' class='textdat'>" + datumq(datum[0]) + " |<br><img src='blank.gif' width='1' height='2'> " + auftragsnr[0] +"</td>";
     sHtml += "         <td width='13%' class='textdat'>" + datumq(datum[1]) + " |<br> " + auftragsnr[1] +"</td>";
     sHtml += "         <td width='13%' class='textdat'>" + datumq(datum[2]) + " |<br> " + auftragsnr[2] +"</td>";
     sHtml += "         <td width='13%' class='textdat'>" + datumq(datum[3]) + " |<br> " + auftragsnr[3] +"</td>";
     sHtml += "         <td width='13%' class='textdat'>" + datumq(datum[4]) + " |<br> " + auftragsnr[4] +"</td>";

...

PS. datumq ist eine funktion welche das Datum das aus einer DB gehohlt wird in deutsch abwandelt.

Könnt Ihr mir einen Tip geben wie ich das alles nach datum sortieren kann?

Gruß
stefan

  1. Hallo stefansvw,

    hilft Dir vieleicht http://www.j-berkemeier.de/TableSort.html weiter. Kann auch nach Datum sortieren.

    Gruß, Jürgen

    1. Hallo stefansvw,

      hilft Dir vieleicht http://www.j-berkemeier.de/TableSort.html weiter. Kann auch nach Datum sortieren.

      Gruß, Jürgen

      habe ein vergessen. Es sind ca. 1000 Auftragsnummern und die letzten fünf sollen automatisch geordnet angezeigt werden.

      würde am liebsten ein Array erstellen das so ausschaut:

      array[0][0] 12345
      array[0][1] 23.12.2006
      array[1][0] 68352
      array[1][1] 10.06.2006

      usw.

      dann müsste es mit sort() doch gehen.

      Nur mein Problem ist das ich weiß nicht wie ich es in der if-Bedingung

      if( auftragsline == auftr_li[temp] )
               {
                 auftragsnr[j] = auftr;
                 datum[j]      = datum_auftr ;

      j++;
               }

      umsetzen kann

      1. würde am liebsten ein Array erstellen das so ausschaut:

        array[0][0] 12345
        array[0][1] 23.12.2006
        array[1][0] 68352
        array[1][1] 10.06.2006

        Und das Problem es zu tun?

        dann müsste es mit sort() doch gehen.

        stimmt.

        Nur mein Problem ist das ich weiß nicht wie ich es in der if-Bedingung

        if( auftragsline == auftr_li[temp] )
                 {
                   auftragsnr[j] = auftr;
                   datum[j]      = datum_auftr ;

        j++;
                 }

        umsetzen kann

        if( auftragsline == auftr_li[temp] )  
                  {  
                    array[j][0] = auftr;  
                    array[j][1] = datum_auftr ;  
          
                    j++;  
                  }  
        
        

        Struppi.

        --
        Javascript ist toll (Perl auch!)
        1. würde am liebsten ein Array erstellen das so ausschaut:

          array[0][0] 12345
          array[0][1] 23.12.2006
          array[1][0] 68352
          array[1][1] 10.06.2006

          Und das Problem es zu tun?

          dann müsste es mit sort() doch gehen.

          stimmt.

          Nur mein Problem ist das ich weiß nicht wie ich es in der if-Bedingung

          if( auftragsline == auftr_li[temp] )
                   {
                     auftragsnr[j] = auftr;
                     datum[j]      = datum_auftr ;

          j++;
                   }

          umsetzen kann

          if( auftragsline == auftr_li[temp] )

          {
                      array[j][0] = auftr;
                      array[j][1] = datum_auftr ;

          j++;
                    }

          
          >   
          > Struppi.  
            
          Das habe ich nun versucht:  
            
           function Array2D(x,y)  
            {  
              this.items = new Array(x);  
              for(i=0;i<y;i++){this.items[i] = new Array(y);}  
            }  
            
            
           var auftragsnr   = new Array2D(5,5);  
            
             auftragsnr.items[0][0] = "";  
             auftragsnr.items[1][0] = "";  
             auftragsnr.items[2][0] = "";  
             auftragsnr.items[3][0] = "";  
             auftragsnr.items[4][0] = "";  
            
             var datum       = new Array2D(5,5);  
            
             datum.items[0][1]    = "";  
             datum.items[1][1]     = "";  
             datum.items[2][1]     = "";  
             datum.items[3][1]     = "";  
             datum.items[4][1]     = "";  
            
              while(rc == 0)  
                 {  
            
                  ....  
            
                  if( auftragsline == auftr\_li[temp] )  
                   {  
                     auftragsnr.items[j][0] = auftr;  
                     datum.items[j][1]      = datum\_auftr;  
            
                     j++;  
                   }  
            
          ...  
          }  
            
            
            
          Ausgabe:  
            
            
           sHtml += "         <td width='13%' class='textdat'>" + datum.items[0][1] + " |<br><img src='blank.gif' width='1' height='2'> " + auftragsnr.items[0][0] +"</td>";  
               sHtml += "         <td width='13%' class='textdat'>" + datum.items[1][1] + " |<br> " + auftragsnr.items[1][0] +"</td>";  
               sHtml += "         <td width='13%' class='textdat'>" + datum.items[2][1] + " |<br> " + auftragsnr.items[2][0] +"</td>";  
               sHtml += "         <td width='13%' class='textdat'>" + datum.items[3][1] + " |<br> " + auftragsnr.items[3][0] +"</td>";  
               sHtml += "         <td width='13%' class='textdat'>" + datum.items[4][1] + " |<br> " + auftragsnr.items[4][0] +"</td>";  
            
            
          Ergebnis:  
            
          Überall ist nun kein Wert drin.  
            
          Was mache ich den hier noch falsch. Warum wird das Array nicht gefüllt?
          
          1. Hallo stefansvw,

            ich glaube, Du solltest Dir erst mal in der Doku ansehen, wie man mit 2D-Arrays umgeht und wie man diese Sortieren kann. Ohne Basics hat das wenig Sinn.

            Gruß, Jürgen

      2. Hallo stefansvw,

        habe ein vergessen. Es sind ca. 1000 Auftragsnummern und die letzten fünf sollen automatisch geordnet angezeigt werden.

        gut, mein Sortierer sortiert das ganze Array. Aber 1000 Zeilen sind kein Problem.

        dann müsste es mit sort() doch gehen.

        Du musst nur die richtige Vergleichsfunktion wählen, die die richtige Spalte im richtigen Format interpretiert. Mein Beispiel macht u.A. genau das.

        Nur mein Problem ist das ich weiß nicht wie ich es in der if-Bedingung

        if( auftragsline == auftr_li[temp] )
                 {
                   auftragsnr[j] = auftr;
                   datum[j]      = datum_auftr ;

        j++;
                 }

        umsetzen kann

        siehe Struppis Antwort.

        Gruß, Jürgen

  2. hi,

    Könnt Ihr mir einen Tip geben wie ich das alles nach datum sortieren kann?

    Array.sort() nimmt eine Vergleichsfunktion als Parameter entgegen.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. hi,

      Könnt Ihr mir einen Tip geben wie ich das alles nach datum sortieren kann?

      Array.sort() nimmt eine Vergleichsfunktion als Parameter entgegen.

      gruß,
      wahsaga

      mit dem habe ich es schon probiert doch leider ohne Erfolg

      1. hi,

        mit dem habe ich es schon probiert doch leider ohne Erfolg

        Dann probiere es mit einer vernünftigen Problembeschreibung.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. hi,

          mit dem habe ich es schon probiert doch leider ohne Erfolg

          Dann probiere es mit einer vernünftigen Problembeschreibung.

          gruß,
          wahsaga

          in dieser if-Bedingung

          if( auftragsline == auftr_li[temp] )
                   {
                     auftragsnr[j] = auftr;
                     datum[j]      = datum_auftr ;

          j++;
                   }

          wird es ja nach dem sort() nicht so aussschauen

          Auftragsnummer     Datum

          12345              23.12.2006
          34567              11.11.2006
          68352              10.06.2006
          12212              01.01.2006

          sondern eher so

          12212              23.12.2006
          12345              11.11.2006
          34567              10.06.2006
          68352              01.01.2006

          dann stimmen ja die Auftragsnummer nicht mehr mit dem datum überein.

          1. hi,

            in dieser if-Bedingung [...]
            wird es ja nach dem sort() nicht so aussschauen

            Auftragsnummer     Datum

            12345              23.12.2006
            34567              11.11.2006
            68352              10.06.2006
            12212              01.01.2006

            sondern eher so

            12212              23.12.2006
            12345              11.11.2006
            34567              10.06.2006
            68352              01.01.2006

            dann stimmen ja die Auftragsnummer nicht mehr mit dem datum überein.

            Dann hast du nicht sortiert, sondern die Daten lediglich vermurkst.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
            1. hi,

              in dieser if-Bedingung [...]
              wird es ja nach dem sort() nicht so aussschauen

              Auftragsnummer     Datum

              12345              23.12.2006
              34567              11.11.2006
              68352              10.06.2006
              12212              01.01.2006

              sondern eher so

              12212              23.12.2006
              12345              11.11.2006
              34567              10.06.2006
              68352              01.01.2006

              dann stimmen ja die Auftragsnummer nicht mehr mit dem datum überein.

              Dann hast du nicht sortiert, sondern die Daten lediglich vermurkst.

              gruß,
              wahsaga

              Wie würdest Du das machen ? So ?

              if( auftragsline == auftr_li[temp] )
                       {
                         auftragsnr[j].sort() = auftr;
                         datum[j].sort()      = datum_auftr ;

              j++;
                       }

              1. hi,

                Wie würdest Du das machen ?

                Ich würde erst mal das Fullquoting einstellen, denn TOFU wird auch nicht leckerer, wenn du's umdrehst.

                So ?

                if( auftragsline == auftr_li[temp] )
                         {
                           auftragsnr[j].sort() = auftr;
                           datum[j].sort()      = datum_auftr ;

                j++;
                         }

                Nein.

                Wert in Array packen, Array anschliessend sortieren.
                Um "mehrdimensionales" Array nach bestimmten "Spalten" zu sortieren, Hilfsfunktion benutzen, wie im Beispiel zu Array.sort() erklärt.

                gruß,
                wahsaga

                --
                /voodoo.css:
                #GeorgeWBush { position:absolute; bottom:-6ft; }