Termine der nächsten x Tage aus Forenkalender ausgeben

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

  • Termine der nächsten x Tage aus Forenkalender ausgeben

    Hallo alle zusammen,

    ich hoffe, dass ihr mir bei folgendem Problem helfen könnt.

    Das Ziel: Auf der Startseite eines Forums sollen die Termine der nächsten x Tage aus dem Kalender angezeigt werden.

    Das Problem: Ich kann die Daten bei der Datenbankabfrage nicht sortieren, weil das Datum im Format 23-3-2006 gespeichert ist.

    Der erste Versuch funktionierte deshalb nicht:
    PHP-Code:
        $futuredays "7";
        
    $date mktime(000date("m"), date("d") + $futuredaysdate("Y"));
        
    $futuredate date("j-n-Y" $date);
        
    $today date("j-n-Y");
        
    $query $db->query("SELECT * FROM ".TABLE_PREFIX."events WHERE private = 'no' 
    AND date <= '"
    .$futuredate."' AND date >= '".$today."' ORDER BY date ASC");
        
    $comma "";
        while(
    $events $db->fetch_array($query))
        {
        
    $eventdate explode("-"$events['date']);
        
    $dateline mktime(000$eventdate['1'], $eventdate['0'], $eventdate['2'], 0);
        
    $nextevents .= $comma."<a href=\"calendar.php?action=event&amp;eid=".$events['eid']."\">
    "
    .htmlentities($events['subject'])." (".mydate($mybb->settings['dateformat'], $dateline).")</a>";
        
    $comma ", ";
        }
        echo 
    $nextevents
    Jetzt hatte ich die Idee (wer weiß obs Sinn macht!?), die Daten erstmal ein ein Array zu packen und dabei die Daten in Unix-Zeit zu konvertieren, so dass ich eine Sortierung vornehmen kann:
    PHP-Code:
        $query $db->query("SELECT * FROM ".TABLE_PREFIX."events WHERE private = 'no'");
        
        
    $i "1";
        while(
    $events $db->fetch_array($query))
        {
            
    $eventdate explode("-"$events['date']);
            
    $dateline mktime(000$eventdate['1'], $eventdate['0'], $eventdate['2'], 0);
            
    $event[$i] = array($events['eid'], $events['subject'], $dateline);
            
    $i++;
        } 
    Nur jetzt habe ich ein Brett vorm Kopf und weiß nicht weiter. Ist das der richtige Weg? Wie bekomme ich die Termine aufsteigend sortiert und dannach die Termine der nächsten x Tage ausgegeben?

    Vielen Dank vorab!

    Michael
    Zuletzt geändert von Schlechti; 23.03.2006, 16:39.

  • #2
    http://php-resource.de/forum/showthr...threadid=50454
    erst code umbrechen

    Kommentar


    • #3
      Erledigt.

      Kommentar


      • #4
        von welchem typ ist das feld in der db-tabelle, in dem du das datum speicherst?

        Kommentar


        • #5
          Der Typ ist varchar(50), das ist vom Forum so vorgegeben.

          Kommentar


          • #6
            das erste funktioniert nicht, weil du bei einem solchen string mit < und > nicht viel anfangen kannst.

            dass das forum das datum auf diese weise speichert, zeugt nicht gerade von seiner qualität.

            der zweite versuch ist schon mal sehr gut. du kannst nun folgendes versuchen:

            1. füge den datensatz nur dem array $event hinzu, wenn seine $dateline in den nächsten x tagen liegt (die grenze lässt sich einfach mit strtotime() ermitteln).

            2. sortiere $event nach der letzten "spalte" (schaue in den user notes zu array_multisort() oder bastel dir was mit usort() - es ist nicht schwer).

            p.s. die array-nummerierung beginnt i.d.r. bei 0
            p.p.s. was soll das $i = "1"; bewirken? wozu brauchst du einen string, der eine eins enthält?

            Kommentar

            Lädt...
            X