Tabelle nach Datum sortieren (keine DB)

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

  • Tabelle nach Datum sortieren (keine DB)

    Huhu

    Ich müßte eine Tabelle (wird dynamisch erzeugt) nach Datum sortieren.
    Die Daten werden aus textdateien ausgelesen.
    Unteranderem gibt es da ne Zeile mit dem Einstellungsdatum (01.01.2005 - das Format)

    Wenn ich jetzt mit sort / resort arbeitet, sortiert er nur nach den ersten zwei Zahlen, aber nicht nach dem ganzen Datum.

    Muß ich das denn erst exploden oder was?

    Bitte um Hilfe.

  • #2
    Re: Tabelle nach Datum sortieren (keine DB)

    Original geschrieben von Max_04
    Muß ich das denn erst exploden oder was?
    ja, und in ein sortierfähiges format bringen.

    YYYYMMDD o.ä.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      PHP-Code:
      $datum_sortiert explode ("."$useingestellt
      ist das so richtig?

      Und wi geb ich es jetzt wieder aus (ddmmYYYY)?

      Kommentar


      • #4
        Original geschrieben von Max_04
        Und wi geb ich es jetzt wieder aus
        im array abgelegte teile jetzt wieder zusammenfügen ...
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Ich arbeite immer noch an diesem blöden Datumsproblem.
          ich habs mal mit "mktime" probiert

          PHP-Code:
          <?php
          require ('config.php');

          $dateianzahl=fopen("anza.hlm","r");
          $anzahl=intval(fgets($dateianzahl,10000));

          $readin=array();

          $x=0;
          for(
          $i=$anzahl;$i>-1;$i--) {
              
          $k=0;
              if(
          file_exists("../daten/m".$i.".atk")){
                  for(
          $y=$anzahly;$y>-1;$y--) {
                  }
          $datumsort explode(".",$useingestellt); // split time
          $d $datumsort[0];
          $m $datumsort[1];
          $y $datumsort[2];
          $enddate mktime($d,$m,$y);
          $enddate date("d.m.Y"$enddate); // the enddate

                  //$commentanzahl=$k;
                  
          include "../daten/m".$i.".atk";
                  
          $readin[$x][]=stripslashes($enddate);
                  
          $readin[$x][]=stripslashes($usinfos);
                  
          $readin[$x][]=stripslashes($usname);
                  
          $readin[$x][]=stripslashes($usbildname);
                  
          $readin[$x][]=stripslashes($ustext);
                  
          $readin[$x][]=$i;
                  
          $x++;
              }
          }

          if(isset(
          $_GET['page'])) $page=intval($_GET['page']);
          else 
          $page=0;
          rsort($readin); 

          ...
          wenn ich das jetzt so mache, wird immer nur das aktuelle Datum in der Spalte
          "eingestellt" ausgegeben und nicht das Datum, was in der Datei abgelegt ist.

          Wo liegt der Fehler???

          Kommentar


          • #6
            Ich würde es mit preg_replace machen ... :
            PHP-Code:
            $datum preg_replace("/^(\\d{1,2})\\.(\\d{1,2})\\.(19|20)(\\d{2})$/""$3$4\\.$2\\.$1"$useingestellt); 
            ... beispielsweise ... !
            carpe noctem

            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

            Kommentar


            • #7
              Ganz andere Frage:
              Kannst du das Datum nicht schon anders formatiert JJJJMMTT in den Dateien ablegen?

              Kommentar


              • #8
                Die innere FOR-Schleife ist völlig sinnfrei.

                $useingestellt ist leer, deswegen gibt mktime() oder date() vielleicht das aktuelle Datum zurück.

                Kommentar


                • #9
                  habs

                  Für die, die ein ähnliches Problem haben, hier meine Lösung:

                  PHP-Code:
                  $dateianzahl=fopen("../daten/anza.hlm","r");
                  $anzahl=intval(fgets($dateianzahl,10000));

                  $readin=array();

                  $x=0;
                  for(
                  $i=$anzahl;$i>-1;$i--) {
                      
                  $k=0;
                      if(
                  file_exists("../daten/m".$i.".atk")){
                          for(
                  $y=$anzahly;$y>-1;$y--) {
                          }

                  // hier wird das Datum umgestellt in Jah,Monat und Tag
                  $datum preg_replace("/^(\d{1,2})\.(\d{1,2})\.(19|20)(\d{2})$/""$3$4\.$2\.$1"$useingestellt);

                          
                  //$commentanzahl=$k;
                          
                  include "../daten/m".$i.".atk";
                          
                  $readin[$x][]=stripslashes($datum);
                          
                  $readin[$x][]=stripslashes($usinfos);
                          
                  $readin[$x][]=stripslashes($usname);
                          
                  $readin[$x][]=stripslashes($usbildname);
                          
                  $readin[$x][]=stripslashes($ustext);
                          
                  $readin[$x][]=$i;
                          
                  $x++;
                      }
                  }

                  if(isset(
                  $_GET['page'])) $page=intval($_GET['page']);
                  else 
                  $page=0;
                  rsort($readin); // Tabelle wird nach Datum sortiert

                  $last=""// erster Buchstabe
                  for($x=($page)*$perpage;$x<(($page)*$perpage+$perpage) && $x<sizeof($readin);$x++){
                  // ab hier wird es wieder in das Format (Tag.Monat.Jahr) umgestellt
                  $d_neu explode ("."$readin[$x][0]);
                  $year $d_neu[0];
                  $month $d_neu[1];
                  $day $d_neu[2];
                  $datum_sort = ("$day.$month.$year");
                  //...
                      
                  $useingestellt=$datum_sort;
                      
                  $usinfos=$readin[$x][8];
                      
                  $usname=$readin[$x][9];
                      
                  $usbildname=$readin[$x][10];
                      
                  $ustext=$readin[$x][11]; 
                  Ich weiß, die Profis unter Euch hätten das anders gelöst, aber so gehts auch.

                  Kommentar

                  Lädt...
                  X