php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2006

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.03.2006, 16:04  
Gast
 
Beiträge: n/a
Standard 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
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 23.03.2006, 17:04  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.235
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Erste Frage, bevor es weitergeht. In welchem Format liegt das Datum in der Datenbank vor? Als Timestamp oder als String? Wenn das ein Timestamp o.ä. ist, kann man es geschickt mit MySQL-Funktionen einschränken.

Wenn nicht, dann solltest du es in MySQL umwandeln und dann einschränken, wobei ich dir aber eher (wenn du die Wahl hast) empfehle, das Datum in einem "vernünftigen" Format zu speichern, also entweder als Zahl (Unix-Timestamp) oder als MySQL-Datums-Datentyp...
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline  
Alt 23.03.2006, 17:41  
Gast
 
Beiträge: n/a
Standard

Das Datum liegt als String vor und das ist mein Problem. Ich kann das auch nicht ändern, da das vom Forum so vorgegeben ist.
 
Alt 23.03.2006, 17:49  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.235
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

OK. Ums in SQL zu machen, kannst du es erst in ein Unix-Timestamp umwandeln und dann entsprechend XX Sekunden zum Vergleich aufschlagen. Beispiele hierfür findest du hier:
http://dev.mysql.com/doc/refman/4.1/...functions.html

Bei grossen Tabellen empfiehlt sich das aufgrund der Performance jedoch nicht, da du keinerlei Indices verwenden könntest. Wenn du es aber nicht ändern kannst... Naja...
mepeisen ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Termine mit und ohne einen Zeitraum ausgeben Datenbanken 2 18.10.2005 13:24
Die letzten 7 Tage ausgeben lassen PHP Tipps 2005-2 11 04.07.2005 13:21
[Erledigt] Termine der nächsten X Tage anzeigen Datenbanken 4 14.04.2005 20:04

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php nächsten 7 tage ausgeben, if($event[\'dateline to\'] == 0 ), mybb datum umwandeln dateline, mybb dateline in datum umwandeln

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:23 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.