Tabelle nach Datum sortieren (keine DB)

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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.

    Comment


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

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

      Comment


      • #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.

        Comment


        • #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???

          Comment


          • #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]

            Comment


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

              Comment


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

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

                Comment


                • #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.

                  Comment

                  Working...
                  X