Newsarchiv wie auf QuakeNet.org

Mach einfach in der Datenbank 3 Spalten (Tag, Monat und Jahr) für das Datum:
year, month und day. Zum Beispiel.
UNd dann einfach nur noch sotiert und mit Überschrift ausgeben.
 
Vom Pinzip her, schreibe die News mit time() in die datenbank.
Auf der Archivseite, holst du dir alle Daten sortiert nach Datum...

ein bsp:
PHP:
<?php

  $oldyear = ""; $oldmont = "";
  $res = mysql_query("SELECT spalte1, spalte2, ... FROM tabelle ORDER BY col_datum");
  while ($ref = mysql_fetch_array($res)) {
    $curryear = date("Y",$ref["col_datum"]);
    if ($curryear != $oldyear) { echo $curryear . "<hr>"; }

    $currmonth = date("m",$ref["col_datum"]);
    if ($currmonth != $oldmonth) { echo "<strong>" . $currmonth . "</strong>"; }

    echo date("d",$ref["col_datum"]) . ": " . $ref["newstitle"];

    $oldyear = $curryear;
    $oldmonth = $currmonth;
  }

?>

Vielleicht denk ich grad am thema vorbei, aber ich denke, das sollte ein Lösungsansatz sein!
 
Gutes Beispiel, dennoch leider nicht zum Thema passend. ;)

Ich habe bisher immer drei While-Schleifen genommen die beispielsweise so ausgesehen haben:
PHP:
<?php
// Auflisten der Jahre
//
$jahre = mysql_query("SELECT id,date FROM ".$tabname_news." WHERE date='DASJAHRAUSDEMTIMESTAMP' GROUP BY date ORDER BY date") or die (mysql_error());

while($jahr = mysql_fetch_assoc($jahre))
{
	echo"".date("Y", $jahr['date'])."<br>";
	
	// Auflisten der Monate
	//
	$monate = mysql_query("SELECT id,date FROM ".$tabname_news." WHERE date='".HIERDASJAHR."' GROUP BY date ORDER BY date") or die (mysql_error());

	while($monat = mysql_fetch_assoc($monate))
	{
		echo"".date("m", $monat['date'])."<br>";
		
		// Auflisten der Tage
		//
		$tage = mysql_query("SELECT id,date FROM ".$tabname_news." WHERE date='HIERDASJAHRUNDDERMONAT' GROUP BY date ORDER BY date") or die (mysql_error());
		
		while($tag = mysql_fetch_assoc($tage))
		{
			echo"".date("d", $tag['date'])."<br>";
		}
	}
}
?>
Es hapert nur immer an dem Timetamp. Jeder Newseintrag hat ja einen eigenen für sich. Ich habe es z.B. mal mit der MySQL-Funktion "YEAR()", "MONTH()" usw. ausprobiert und dann z.B. "SELECT id,YEAR(date) AS das_jahr FROM ... WHERE das_jahr..." verwendet. Hat aber leider alles nichts gebracht.

Ich wüsste leider sonst nicht wie ich mein Problem anders lösen könnte. Ich steh leider vor einer unüberwindbaren Blockade.
 
Würde dieses Thema hier gerne nochmal auspacken und neu aufwickeln. Hat jemand eine Idee wie ich das Newsarchiv wie bei Quakenet realisieren kann?
 
Meine Meinung hat sich nicht geändert!
Probier es mal so:
Mach einfach in der Datenbank 3 Spalten (Tag, Monat und Jahr) für das Datum:
year, month und day. Zum Beispiel.
Und dann einfach nur noch sotiert und mit Überschrift ausgeben.

Tobee
 
Meine Meinung hat sich nicht geändert!
Probier es mal so:


Tobee
Bei über 20 News ist das aber ein ziemlicher Aufwand zu jeder News die entsprechenden Daten dann hinzu zu fügen. Ausser Du hast für mich ein Script mit dem ich den timestamp (Feld: date) auslesen, und dann in die entsprechenden Felder einfügen lassen kann. Ich arbeite nämlich mit phpMyAdmin, und das würde eine Menge Zeit kosten. ;)
 
Mach einfach in der Datenbank 3 Spalten (Tag, Monat und Jahr) für das Datum:
year, month und day. Zum Beispiel.
UNd dann einfach nur noch sotiert und mit Überschrift ausgeben.

Geh über phpMyAdmin und füge in deiner tabelle einfach die drei spalten "tag" "monat" "jahr" hinzu.
Danach führst du einmal folgenden code aus, nachdem du tabelle usw angepasst hast...

Code:
<?php
$qry = mysql_query("SELECT timestamp FROM tabelle ORDER BY timestamp");
while($fetch = mysql_fetch_assoc($qry)){
  $tag = date("d",$fetch['timestamp']);
  $monat = date("m",$fetch['timestamp']);
  $jahr = date("Y",$fetch['timestamp']);
  mysql_query("UPDATE tabelle SET tag='$tag', monat='$monat', jahr='$jahr' WHERE timestamp='$fetch[timestamp]'");
}
?>
*ungetestet
 
Zurück