Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Sortieren von MySQL-Einträgen





Frage

Hallo, ich habe gestern schonmal eine Anfrage gestellt, bezüglich das Ausrechnen von den vergangenen Sekunden seit dem 1.1.2002. Jetzt habe ich leider ein 2tes Problem. Und zwar sollen nur die News der letzten beiden Monate angezeigt werden, derzeit sieht mein Script so aus: [code] <table Border=0 Cols=0 Width=400 BgColor=C3C3C3> <?php $mysql[host] = "localhost"; $mysql[user] = "user"; $mysql[pw] = "zugriff"; $mysql[db] = "db16070201"; mysql_connect($mysql[host], $mysql[user], $mysql[pw]); mysql_select_db($mysql[db]); $adj = mktime (0,0,0,01,01,2002); $j = time(); $m2 = $j-$adj; $m1 = $m/2592000; $m = floor($m1); $md = m-1; $mn = m+1; $adm = mktime (0,0,0,'$m',01,2002); $anm = mktime (0,0,0,'$mn',01,2002); $alm = mktime (0,0,0,'$md',01,2002); print "<tr><td><font face=arial><b>Dieser Monat:</b></font></td></tr>"; $news1 = mysql_query("SELECT * FROM news WHERE id >= '$adm' and id <= '$anm' ORDER BY id DESC"); WHILE($news = mysql_fetch_array($news1)) { print" <tr><td>$news[topic]:</td></tr> <tr><td><a href=\"newsdetail.php?id=$news[id]\">$news[headline]</a></td></tr> <tr><td align=right>$news[user]:</td></tr> "; } print "<tr><td><font face=arial><b>Letzter Monat:</b></font></td></tr>"; $news1 = mysql_query("SELECT * FROM news WHERE id >= '$alm' and id <= '$adm' ORDER BY id DESC"); WHILE($news = mysql_fetch_array($news1)) { print" <tr><td>$news[topic]:</td></tr> <tr><td><a href=\"newsdetail.php?id=$news[id]\">$news[headline]</a></td></tr> <tr><td align=right>$news[user]:</td></tr> "; } ?> </table> [/code] Es läuft aber nicht so, wie es soll. Kann mir jemand helfen? mfg. Jens

Antwort 1 von Jensd

Nachtrag:
die News wird mit einer ID eingetragen, dabei handelt es sich um die UNIX-Zeit, wie mit <? echo time(); ?> generiert wird.
Bei dem obigen Script kommt es zu keiner Fehlermeldung, nur werden halt keine News angezeigt..

Antwort 2 von semi

Vielleicht
$md = $m-1;
$mn = $m+1;
statt
$md = m-1;
$mn = m+1;
$ fehlt.

Antwort 3 von Jensd

Hallo semi,
danke für die Antwort. Derzeit sind 2 News in der Datenbank mit folgenden ID´s:
1027591083
1027608301
Beide News wurden heute eingetragen, das Script berechnet leider - trotz der Verbesserung die du mir eben genannt hast - irgendwas falsch und der Anzeigebereich bleibt leer...

Antwort 4 von semi

Du gehst davon aus, dass ein Monat 30 Tage hat. 2592000 = 60*60*24*30
Auf welchem Planeten? :-)

Versuche das hier:

$adj   = mktime (0, 0, 0, 1, 1, 2002);

$today = getdate(time());
$year  = $today["year"];
$m1    = $today["mon"];
$m2    = ($m1-1)>0?($m1-1):12; # wegen $m1 = Januar = 1

$r2    = mktime (0, 0, 0, $m1, 1, $year) - $adj; # dieser Monat
$r1    = mktime (0, 0, 0, $m2, 1, ($m1>$m2)?$year:$year-1) - $adj; # Vormonat

$news1 = mysql_query("SELECT * FROM news WHERE id >= '$r1' and id < '$r2' ORDER BY id DESC");
$news2 = mysql_query("SELECT * FROM news WHERE id >= '$r2' ORDER BY id DESC");

Gruß,
Michael

Antwort 5 von Jensd

Wow, es hat geklappt ;-)

Vielen vielen vielen Dank!

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: