Seite 2 von 2

Verfasst: Do 26.Apr, 2007 09:09
von oxpus
Ersetze mal "count(post_id)" durch "count(distinct post_id)".
Vielleicht hilfts schon.

Ausser Du hast in der Anzeige $posts7 und $posts30 verwechselt ;)

Verfasst: Do 26.Apr, 2007 09:33
von Holger
Verwechselt?
Ich habe

Code: Alles auswählen

	<td class="row2"><b>'.$posts7.' / '.$posts30.'</b></td>
und

Code: Alles auswählen

	<th height="25" class="thTop">New posts 7 / 30</th>
Das ist doch die gleiche Reihenfolge?!

Habe mal mit distinct versucht, Ergebnis:
Number of posts :: New posts 7 / 30
4976 :: 4737 / 3707
Irgendwie stimmen die Zahlen überhaput nicht ...

Verfasst: Do 26.Apr, 2007 11:49
von oxpus
Ich bin ja auch blöd!
Die willst ja die "letzten" 7, bzw. 30 Tage, nicht den Zeitraum "vor" 7/30 Tagen!

Daher muss es auch nicht

Code: Alles auswählen

WHERE post_time <= ".$timespan;
sondern

Code: Alles auswählen

WHERE post_time >= ".$timespan;
heissen!

Man man man :wall:

Verfasst: Do 26.Apr, 2007 12:29
von Holger
JAWOLL! Das sieht schon sehr gut aus!
DANKE (erstmal)!

Verfasst: Do 26.Apr, 2007 13:42
von oxpus
Na, logisches Denken hatte dann bei mir am gestrigen Tage wohl nicht mehr geklappt.
Fein, wenn man dann doch noch *stolper* helfen konnte...

Verfasst: Do 26.Apr, 2007 13:49
von Holger
Ist es sehr schwer, das auf "Letzten Monat" / "Diesen Monat" umzubiegen?

Verfasst: Do 26.Apr, 2007 15:54
von oxpus
Schwer nicht, nur komplexer...

Dieser Monat:

Code: Alles auswählen

$current_month = date('m', time() + (date('I') * 3600));
$current_year = date('Y', time() + (date('I') * 3600));
$timespan = mktime(0, 0, 0, $current_month, 1, $current_year, date('I'));
Bedingung dafür:

Code: Alles auswählen

... WHERE post_time >= " . $timespan;
Letzter Monat:

Code: Alles auswählen

$cur_time = time();
$current_day = date('j', $cur_time + (date('I') * 3600));
$current_month = date('m', $cur_time + (date('I') * 3600));
$current_year = date('Y', $cur_time + (date('I') * 3600));
$timespan_till = mktime(0, 0, 0, $current_month, 1, $current_year, date('I'))-1;
$cur_time -= ($current_day + 1) * 86400;
$last_month = date('m', $cur_time + (date('I') * 3600));
$last_year = date('Y', $cur_time + (date('I') * 3600));
$timespan_from = mktime(0, 0, 0, $last_month, 1, $last_year, date('I'));
Bedingung dafür:

Code: Alles auswählen

... WHERE post_time >= " . $timespan_from . " AND post_time <= " . $timespan_till;
Soweit die Theorie.
Ich hatte das ähnlich so schon einmal gemacht, ist aber nie ohne, da man nicht einfach soeben 30*86400 Sekunden anziehen kann. Es gelten eben auch Schaltjahre, Sommer-/Winterzeit, etc. zu beachten ;)

Verfasst: Do 26.Apr, 2007 15:55
von Holger
Werde es morgen testen! DANKE!

Verfasst: Fr 27.Apr, 2007 11:09
von Holger
[quote="oxpus";p="72493"]

Code: Alles auswählen

... WHERE post_time >= " . $timespan_from . " AND post_time <= " . $timespan_till;
[/quote]
Ok, wo wird timespan_from und timespan_till definiert?

Verfasst: Fr 27.Apr, 2007 11:19
von oxpus
Wenn Du Dir meinen letzten Post genauer anschaust, wirst Du das finden ;)

Verfasst: Fr 27.Apr, 2007 11:21
von Holger
Arrrrg, klar! Mensch, mensch, mensch!

Getestet: scheint gut zu klappen! Danke!

Verfasst: Fr 27.Apr, 2007 15:11
von oxpus
Keine Ursache.
Dafür bin ich um einige Hirnwindungen ärmer ;)