Frage

Bevor ich id beginnen wie ive zu sagen, diese Frage gestellt eher als eine Diskussion statt Problem Frage.

In meiner Datenbank i Nachrichten Beiträge haben kann mit 3 Spalten sagen (Id, Titel, Datum). Wher Id und Titel sind Selbstexplanitory das Datum in Mktime gespeichert () Werte, also die Anzahl der Sekunden vergangen, seit 1. Januar 1970.

Jetzt will ich tun, was ist ein Archiv-Link zu erstellen, die als solche

angezeigt werden
  • Juli 2009
  • Juni 2009
  • März 2009
  • Feburar 2009
  • Dezember 2008

Beachten Sie die Monate, auf dem es noch keine Kommentare waren, werden nicht angezeigt.

Jetzt als erster Gedanke ich dachte

  1. Starten Sie mit dem letzten Tag des laufenden Monats
  2. und nutzen Sie den Wert des ersten Tages des laufenden Monats
  3. Führen Sie eine MySQL-COUNT Query / mysql_num_rows für Beiträge, die Datum waren> = First_Day_Seconds und Datum <= Last_Day_Seconds
  4. Display oder legen Sie die Werte in einem Array
  5. eine weitere Abfrage tun, um zu prüfen, ob weitere Werte gefunden werden WHERE Datum

Jetzt über das ist nur etwas an der Spitze von meinem Kopf. Aber wenn Sie irgendwelche Ideen bekommen diesen Prozess bitte Aktie zu beschleunigen.

Wird im Voraus sagen, Datum Bedürfnisse in Mktime Format sein

War es hilfreich?

Lösung

Ich würde vorschlagen, eine Datenbank „native“ Zeit-Format, aber es funktioniert mit UNIX als auch Zeitstempel.

Sie können einfach tun:

SELECT DISTINCT FROM_UNIXTIME(date, '%M %Y') FROM posts;

Optional mit einer WHERE Klausel die Daten auf vergangene oder zukünftige Termine zu begrenzen. Möglicherweise eine ORDER Klausel für eine gute Maßnahme geworfen. Das sollte alles ziemlich viel sein, die gebraucht wird, lassen Sie die Datenbank tun so viel Arbeit wie möglich.

Wenn Sie mehr Formatierungsoptionen benötigen, wählen Sie das Datum mit "%Y-%m" statt und formatiert sie in PHP:

date($myCustomFormat, strtotime("$date-01"));

Andere Tipps

können Sie diese Abfrage benutzen Sie Jahre

"SELECT *,content_id,COUNT(content_id) AS itemCount FROM content_mast GROUP BY DATE_FORMAT(date_upload,'%Y') DESC";

Jetzt kann die Verwendung dieser Abfrage verwenden Monat dieses Jahres zu erhalten

$tday = date("Y", $datetime);
$s1="select * from content_mast where DATE_FORMAT(date_upload,'%Y')=$tday";
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top