MySQL - Abfrage nach Datum

steffb

Mitglied
Ich würde gerne ein kleines News archiv anlegen und würde gerne dies so gestalten, dass ich zum beispiel die abfrage auf alle news, die im april eingegeben wurden beschränken. Der derzeitige Quelltext sieht so aus:

PHP:
<?

include("config.inc.php");
include("datenbank.inc.php");
$abfrage = "SELECT * from $tabelle order by datum desc";

echo "<table width=\"$breitenews\">";

$result = mysql_query($abfrage,$conn);
while ($row = mysql_fetch_array ($result)) 
{
$datum = $row["datum"];
$beitrag = $row["beitrag"];
$beitrag = nl2br($beitrag);
$autor = $row["autor"];
$betreff = $row["betreff"];
$kurztext = $row["kurzform"];
$kurztext1 = nl2br($kurztext);

$datum1 = date("d.m.Y",$datum);

if ($artuebersicht == "1")
{
echo <<<ABC
	<tr>
		<td><center><p class="betreff"><b>$betreff</b><br><small>(Datum: $datum1)</small></center></td>
	</tr>
	<tr>
		<td><p class="beitrag"><center><small>$kurztext1 ... </small></center><a href="details.php?datum=$datum"><center><small>mehr</small></center><br><br></a>
		</td>

	</tr>
ABC;
}
if ($artuebersicht == "2")
{
echo <<<ABC
	<tr>
		<td><p class="betreff">$betreff<small>(am $datum1 geschrieben von $autor)</small></td>
	</tr>
	<tr>
		<td><p class="beitrag">$beitrag<br><br></td>
	</tr>
ABC;
}
}
echo "</table>";

?>



Die Datumsanzeige sieht zum beispiel so aus: 1049886440

Bitte helft mir.

DANKE
 
Zuletzt bearbeitet von einem Moderator:
Hola! So wie das Datum ausschautgehe ich mal davon aus, dass du einen timestamp benutzt! Du musst also nur hingehen und den Timestamp vom ersten Tag 0:00:00 Uhr des Monats und den letzen Tag 23:59:59 Uhr haben und die SQL-Abfrage in der Form schreiben

PHP:
SELECT * FROM tabelle WHERE datum >= '".$datum_anfang."'
AND timestamp <= '".$datum_ende."'

und ferdisch ist das ganze!
 
Zuletzt bearbeitet:
Erstmals danke für die antwort, leider blicke ich aber noch nicht ganz durch, die tabelle sieht folgendermaßen aus:

wie muss ich jetzt die abfrage gestalten, wenn ich zum beispiel die datensätze 2 bis 4 aufgelistet haben möchte und das kriterium das datum sein sollte?
 

Anhänge

  • tabelle.jpg
    tabelle.jpg
    41 KB · Aufrufe: 137
uiuiuiu, grundlegend solltest du erstmal immer als erstes Feld in einer DB einen Primärschlüssel haben - id, Datentyp INT und extra "auto_increment" - sonst gibt es irgedwann mal Probleme! Nicht fragen, einfach machen ;)

Jetzt komme ich nicht genau nach, was du haben möchtest! Wenn du was nach Datum haben möchtest, dann ist die Lösung wie oben immer noch anzuwenden!!!

Wenn du einfach nur so den Datensatz 2-4 haben möchtest würde folgende Abfrage gehen:

PHP:
SELECT * FROM tabelle LIMIT 2,3

Damit würdest du ab Datensatz 2, die nächsten drei bekommen! Also 2,3 und 4. Aber ich denke mal nicht, dass dies das ist was du möchtest!!!

Ich glaube, du solltest dir vorher mal grundlegende Sachen bzgl. SQL-Statements angucken. z.B.little-idiot.de könnte da helfen. Sonst frage noch ein bisschen genauer nach!
 
Interessieren würde mich eine abfrage von zum beispiel 09. April 2003 bis zum 15. April 2003 - nur wie schreibt man das datum in dieser abfrage, die du mir oben geschrieben hast?
 
PHP:
$datum_anfang = mktime(0,0,0,4,9,2003);
$datum_ende = mktime(23,59,59,4,15,2003);

uns schon hast du die timestamp´s für das Anfangs und End-Datum! Somit sollte das Problem gelöst sein, oder?
 
Habs probiert, er schreibt mir aber folgende Fehlermeldung hin:

Parse error: parse error in /home/arionfin/www/www/news/april.php on line 30

Tut mir leid, wenn ich hier den quelltext mit html poste. Vielleicht kann mir jemand des rätsels lösung schreiben.


<html>
<head>
<link rel=stylesheet type="text/css" href="news.css">
<body background="newsbg.jpg"</body>
<style>
body
, textarea {

scrollbar-base-color:#FFFFFF;
scrollbar-3dlight-color:#FFFFFF;
scrollbar-arrow-color:#6493DB;
scrollbar-darkshadow-color:#FFFFFF;
scrollbar-face-color:#EEF2FB;
scrollbar-highlight-color:#FFFFFF;
scrollbar-shadow-color:#FFFFFF;
scrollbar-track-color:#FFFFFF;
}
</style>
</head>

<?

include("config.inc.php");
include("datenbank.inc.php");

$abfrage = "SELECT * from $tabelle WHERE datum >= '".$datum_anfang = mktime(0,0,0,4,9,2003)."'
AND timestamp <= '".$datum_ende = mktime(23,59,59,4,15,2003)."';


echo "<table width=\"$breitenews\">";

$result = mysql_query($abfrage,$conn);
while ($row = mysql_fetch_array ($result))
{
$datum = $row["datum"];
$beitrag = $row["beitrag"];
$beitrag = nl2br($beitrag);
$autor = $row["autor"];
$betreff = $row["betreff"];
$kurztext = $row["kurzform"];
$kurztext1 = nl2br($kurztext);

$datum1 = date("d.m.Y",$datum);

if ($artuebersicht == "1")
{
echo <<<ABC
<tr>
<td><center><p class="betreff"><b>$betreff</b><br><small>(Datum: $datum1)</small></center></td>
</tr>
<tr>
<td><p class="beitrag"><center><small>$kurztext1 ... </small></center><a href="details.php?datum=$datum"><center><small>mehr</small></center><br><br></a>
</td>

</tr>
ABC;
}
if ($artuebersicht == "2")
{
echo <<<ABC
<tr>
<td><p class="betreff">$betreff<small>(am $datum1 geschrieben von $autor)</small></td>
</tr>
<tr>
<td><p class="beitrag">$beitrag<br><br></td>
</tr>
ABC;
}
}
echo "</table>";

?>
</body>
</html>
 
PHP:
$datum_anfang = mktime(0,0,0,4,9,2003);
$datum_ende = mktime(23,59,59,4,15,2003);

$abfrage = "SELECT * from $tabelle WHERE datum >= '".$datum_anfang."'
AND timestamp <= '".$datum_ende."';

Nicht alles im SQL Statement machen lassen! Würde zwar auch irgendwie gehen, doch so kannst du auch später noch mimt den Werten arbeiten!
 
Danke für dein bemühen, allerdings schreibt er jetzt diesen fehler:

Parse error: parse error in /home/arionfin/www/www/news/april.php on line 30



<html>
<head>
<link rel=stylesheet type="text/css" href="news.css">
<body background="newsbg.jpg"</body>
<style>
body
, textarea {
scrollbar-base-color:#FFFFFF;
scrollbar-3dlight-color:#FFFFFF;
scrollbar-arrow-color:#6493DB;
scrollbar-darkshadow-color:#FFFFFF;
scrollbar-face-color:#EEF2FB;
scrollbar-highlight-color:#FFFFFF;
scrollbar-shadow-color:#FFFFFF;
scrollbar-track-color:#FFFFFF;
}
</style>
</head>

<?
include("config.inc.php");
include("datenbank.inc.php");

$datum_anfang = mktime(0,0,0,4,9,2003);
$datum_ende = mktime(23,59,59,4,15,2003);

$abfrage = "SELECT * from $tabelle WHERE datum >= '".$datum_anfang."'
AND timestamp <= '".$datum_ende."';

echo "<table width=\"$breitenews\">";

$result = mysql_query($abfrage,$conn);
while ($row = mysql_fetch_array ($result))
{
$datum = $row["datum"];
$beitrag = $row["beitrag"];
$beitrag = nl2br($beitrag);
$autor = $row["autor"];
$betreff = $row["betreff"];
$kurztext = $row["kurzform"];
$kurztext1 = nl2br($kurztext);

$datum1 = date("d.m.Y",$datum);

if ($artuebersicht == "1")
{
echo <<<ABC
<tr>
<td><center><p class="betreff"><b>$betreff</b><br><small>(Datum: $datum1)</small></center></td>
</tr>
<tr>
<td><p class="beitrag"><center><small>$kurztext1 ... </small></center><a href="details.php?datum=$datum"><center><small>mehr</small></center><br><br></a>
</td>

</tr>
ABC;
}
if ($artuebersicht == "2")
{
echo <<<ABC
<tr>
<td><p class="betreff">$betreff<small>(am $datum1 geschrieben von $autor)</small></td>
</tr>
<tr>
<td><p class="beitrag">$beitrag<br><br></td>
</tr>
ABC;
}
}
echo "</table>";

?>
</body>
</html>
 
Noch was grundlegendes! Wenn in einer Zeile ein Fehler ist, dann braucht man nur diese Zeile und 1-2 Zeilen davor und danach!

So, nun zur Fehlerbehebung da ja in Zeile 30 kein Fehle rist, muss die Ursache woanders liegen - mit welchen Zeilen hat Zeile 30 zu tun? zum Beispiel mit der folgenden:

deine Zeile:
PHP:
$abfrage = "SELECT * from $tabelle WHERE datum >= '".$datum_anfang."'
AND timestamp <= '".$datum_ende."';


Und wenn man da jetzt mal genau nachschaut wo " benutzt werden, fällt auf, dass am Ende welche fehlen, da ein String ja in Anführungstrichen stehen muss.

Meine Zeile:

PHP:
$abfrage = "SELECT * from $tabelle WHERE datum >= '\".$datum_anfang.\"'
AND timestamp <= '\".$datum_ende.\"'";

Außerdem natürlich noch die " des Strings schützen, denn PHP denkt ja sonst, das bei den ersten " schon der Strin zu Ende ist.


So wie es für mich ausschaut, hast du dir noch nichtmal die Grundlagen so etwas intensiver angeschaut, denn das sind die einfachsten Sachen auf Welt!
 
Zurück