Zur Navigation

Textdatei nach Datum (erstes Feld) sortieren

1 webuser

Hallo,
in einer Textdatei stehen Daten von einem Veranstaltungskalender.
In dem ersten Feld ist das Startdatum.
Die Tabelle soll nach dem Datum sortiert werden.


<?php
$file="daten.txt";
$f=fopen($file,r);
$event=unserialize(fread($f,filesize($file)));
fclose($f);
foreach($event as $key=>$element)
{
foreach($element as $key2=>$elem2)
{
if($key2>0 and $elem2["ende"]>0)
{
if(date("d.m.Y",$key)== date("d.m.Y",time())){$hl="<font color=red>";$hl2="</font>";}
if($key<= time() and $elem2["ende"]>=time()){$hl="<font color=red>";$hl2="</font>";}
if($elem2["zeit"]!=$standart_time)$elem2["zeit"]="<b>".$elem2["zeit"]."</b>";
echo "<tr><td>$hl".date("d.m.Y",$key)."$hl2</td><td>";
echo $elem2["zeit"]."&nbsp;</td><td>";
echo $elem2["veranstalter"]."&nbsp;</td><td>";
echo $elem2["thema"]."&nbsp;</td></tr>";
$hl="";
$hl2="";
}

}
?>

Gruss
Uwe

05.01.2014 09:16

2 Jörg

Ich empfehle, den Code vernünftig einzurücken, denn dann ist er lesbarer, und man erkennt leichter, dass am Ende noch eine Klammer geschlossen werden muss:

<?php
$file="daten.txt";
$f=fopen($file,r);
$event=unserialize(fread($f,filesize($file)));
fclose($f);
foreach($event as $key=>$element)
{
    foreach($element as $key2=>$elem2)
    {   
        if($key2>0 and $elem2["ende"]>0)
        {   
            if(date("d.m.Y",$key)== date("d.m.Y",time()))
            {   
                $hl="<font color=red>";
                $hl2="</font>";
            }   
            if($key<= time() and $elem2["ende"]>=time())
            {   
                $hl="<font color=red>";
                $hl2="</font>";
            }   
            if($elem2["zeit"]!=$standart_time)
            {   
                $elem2["zeit"]="<b>".$elem2["zeit"]."</b>";
            }   
            echo "<tr><td>$hl".date("d.m.Y",$key)."$hl2</td><td>";
            echo $elem2["zeit"]."&nbsp;</td><td>";
            echo $elem2["veranstalter"]."&nbsp;</td><td>";
            echo $elem2["thema"]."&nbsp;</td></tr>";
            $hl="";
            $hl2="";
        }   
    }   
}
?>

In dem ersten Feld ist das Startdatum.

Gemeint ist damit das $key der äußeren Schleife, nehme ich an? und gespeichert ist es im Unix Timestamp Format?

05.01.2014 14:47 | geändert: 05.01.2014 14:48

3 webuser

Hallo Jörg,
ok, sieht eingerückt schon besser aus....

$key ist richtig, und im unix Format.

Gruss
Uwe

05.01.2014 14:57

4 Jörg

Wenn es um Sortiuerung nach $key geht, sollte ksort() hier weiterhelfen:

$event=unserialize(fread($f,filesize($file)));
ksort($event);

... oder soll nach $elem2["zeit"] sortiert werden? das wäre etwas schwierig, da es sich um ein mehrdimensionales Array handelt - dabei könnte man wohl (mit array_multisort()) allenfalls innerhalb $element sortieren, aber nicht innerhalb von $event.

05.01.2014 15:23

5 webuser

Danke Jörg,
einfach gelöst... wenn man weiß wie es geht.

Schönen Tag noch
Gruss
Uwe

05.01.2014 18:53

6 AndreasK

Genau das habe ich gerade gesucht ; ) Dank Google; )

19.01.2014 16:08

Beitrag schreiben (als Gast)

Beim Verfassen des Beitrages bitte die Forenregeln beachten.





[BBCode-Hilfe]