webForumDet fria alternativet

Hjälp med dubletter i array

1 svar · 263 visningar · startad av bionic

bionicMedlem sedan sep. 200347 inlägg
#1

Jag håller på med en funktion som skriver ut alla inlägg från databasen efter år och sen månad. Såhär t.ex:

2006: Jan Feb Mar Apr
2005: Feb Apr Sep
osv osv. den skriver alltså ut dom månader och år där det finns inlägg. Problemet jag har nu är att om jag har 3 inlägg i mars 2006 så skriver den Mar tre gånger, så jag skulle behöva lite hjälp med hur jag fixar det. Koden ser ut såhär i dagsläget:

function showarchive() {
	$date = date("Y-m-d H:i:s");
	
	$result = mysql_query("SELECT str_to_date(publish,'%Y') as publish_year,date,publish FROM entries WHERE status_flag=1 AND publish < '$date' ORDER BY publish_year DESC, publish");
	
	while($row = mysql_fetch_assoc($result)) {
		$timestamp = strtotime($row["publish"]);
		$year = date("Y", $timestamp);
		$month = date("M", $timestamp);
		$month_num = date("m", $timestamp);
		$posts[$year][] = array("month" => $month_num, "name" => $month);
		
		$arkiv = "<h2>Arkiv</h2>\n";
		foreach($posts as $yearnum => $yearval) {
			$arkiv .= "<p>\n<b>$yearnum:</b>\n";
			foreach($yearval as $row) {
				$arkiv .= "<a href=\"/new/$yearnum/$row[month]/\">$row[name]</a>\n";
			}
			$arkiv .= "</p>\n";
		}
	}
	print_r($posts);
	return $arkiv;
}
GaskiMedlem sedan juni 2000310 inlägg
#2

Nu vet inte jag riktigt hur din databastabell ser ut men du kan använda dig av DISTINCT i SQL-satsen för att bara plocka saker och ting en gång.

130 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)