Monate auslesen

js-mueller

Erfahrenes Mitglied
Hi

ich möchte gerne ein Newsarchiv bauen. Das oll folgendermaßen aussehn.
Zu erst sind alle Monate aufgelisted in denen News geposted wurden. Also z.B.
Januar2002
Februar2002
...
Januar2003

So und wenn man auf die klickt soll man alle News dieses Monats angezeigt bekommen.
Jetzt stellt sich die Frage wie realisiere ich das? Ich hab keien ahnung wie ich die Monate aus lesen kann. Ich hab mir so gedacht von der ersten News den Timestamp nehmen und von der letzten. Dann daraus irgendwie die monate ausrechnen. Aber ich hab da total keine Ahnung :(
Wenn das geschafft ist, wie kann ich das machen, wenn ich auf einen Monat klicke das ich dann alle News des monats ausgegeben bekomme?
Ist da nicht ein Problem mit dem timestamp? Weil in der News timestamp sind ja tage, stunden usw noch drin, deswegen kann der ja net gleich sein mit dem "standart" monats timestamp. ODer seh ich das falsch?
Ich hoffe ihr versteht was ich meine und könnt mir helfen :)
 
PHP:
<?
$start_monat = 9;
$start_jahr = 2003;

$end_monat = 9;
$end_jahr = 2003;


$start = mktime(0,0,0,$start_monat,1,$start_jahr);
$ende = mktime(23,59,59,($end_monat+1),0,$end_jahr);
$sql = "SELECT * FROM `tabelle` WHERE datum > $start AND datum < $ende";
Damit würdest du alle News aus der Tabelle 'tabelle' auslesen, die vom September 2003 sind. Denk dran, dass du noch das Feld 'datum' anpasst, denn es muss natürlich so heissen, wie dein Feld, in dem die Timestamps sind.
ich hab das Script übrigens nicht getestet :)
 
K thx

noch eine Frage. Wie kann ich mri alle Monate auslesen lassen?

Also ich wollte die Liste mit den monaten aus der Datenbank generieren lassen.
Wollte die nicht vorgeben.
 
k, ich saug mir dann mal was aus den fingern und hoff, dass es geht..

PHP:
//Alle Monate und Jahre in ein Array packen...
$datumme = array(); //Mir ist kein besserer name eingefallen :)

$result = mysql_query("SELECT * FROM `tabelle`");
while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
  foreach($row["datum"] as $datum){ //Bei $row["datum"] muss das "datum" wie dein Feld mit dem Timestamp heißen
    if(!in_array(date("y",$datum),$datumme) && !in_array(date("m",$datum),$datumme[date("y",$datum)])){
      $datumme[date("y",$datum)][date("m",$datum)] = (!$datumme[date("y",$datum)][date("m",$datum)]) ? 1 : $datumme[date("y",$datum)][date("m",$datum)] +1;
    }
  }
}


//Ausgeben

foreach($datumme as $year => $tmp){
  echo "Jahr: $year<br>\n";
  foreach($tmp as $month => $anzahl){
    echo "$nbsp;$nbsp;$month.$year: $anzahl News vorhanden<br>\n";
  }
}
So, ich hoffe das klappt, also wie gesagt, ich habs nicht getestet
 
Ich verstehe die Frage auch nicht so ganz! Aber evtl könnte der SQL-Befehl "GROUP BY" weiterhelfen! Am besten mal angucken. Wenn die Monate als Zahl gespeichert werden und das Jahr dazu lassen sich so ganzt leicht alle Monate auslesen die es gibt!
 
Zurück