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..
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...
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:
Gruß,
Michael
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!
Vielen vielen vielen Dank!