nächsten anstehenden Termin aus Datenbank anzeigen?!
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abgebrochen beitrag
aktuellen tages
anstehende termin
blocken
break
code
date
datum
ersten passenden datensatzes
extra sortieren
formulieren
jemand
limit
ordern
satz
schleife
tag
termin
test
veranstaltung
-
hi! hoffentlich kann mir tag/jemand">jemand helfen!
ich hab ne mySQL tabelle die sieht so aus:
datum veranstaltung
2008-02-02 test
2008-04-06 test 2
...
nun möchte ich das auf der startseite immer der nächstanliegenste termin erscheint, aber nicht so formatiert, wie in der datenbank, sondern 01.01.2008.
das hab ich auch hinbekommen, aber die anzeige, der nächsten termins will nicht klappen.
das hier hat nicht geklappt, dabei hat er immer ALLE termine angezeigt, und nicht nur die nach dem heutigen Datum, sondern auch die davor.
<?php
require (\"admin/config.inc.php\");
$heute = date(\"Y-m-d\")
$satz = mysql_query(\"SELECT * FROM $dbtermine WHERE datum > $heute ORDER by datum\" );
while ($row = mysql_fetch_array($satz)) {
extract($row);
$datum = explode(\"-\", $datum);
echo \"$datum[2].$datum[1].$datum[0]<br><br>\";
}
?>
dann habe ich es hiermit versucht:
<?php
require (\"admin/config.inc.php\");
$heute = date(\"Y-m-d\");
$satz = mysql_query(\"SELECT * FROM $dbtermine WHERE datum > $heute ORDER by datum\");
while ($row = mysql_fetch_array($satz)) {
extract($row);
if ($datum >= $heute)
{
$datum = explode(\"-\", $datum);
echo \"<b>$datum[2].$datum[1].$datum[0]</b><br><br>\";
}
}
?>
da zeigt er zwar NUR die nachfolgenden an, aber ALLE und nicht nur das eine nächste.
tja und nun komme ich nicht weiter. hab es schon mit LIMIT probiert, aber das klappt auch nicht so richtig. ich müsste eine riesenzahl: zb 5 eingeben und es würde mir das eine nächste anzeigen.
sobald das heutige datum allerdings wechseln würde klappt es dann schon wieder nicht.
jemand ne idee? oder noch besser: ahnung davon?? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Mir fallen 2 Möglichkeiten ein.
1.
LIMIT sollte eigentlich gehen. Versuchs mal mit \"SELECT * FROM $dbtermine WHERE datum >= $heute ORDER BY datum ASC LIMIT 1\". Dann müsstest du die Datensätze in aufsteigender Reihenfolge des Datums geliefert bekommen.
2.
Bau vor der while Schleife noch ne Variable ein, z.B. \"$suchen = true\" und die setzt du nach dem Auffinden des ersten passenden Datensatzes auf false. Und brichst halt die Schleife durch Abfrage ab.
ODER du benutzt einfach ein \"break;\" in dem if-Block in der while Schleife. Dadurch wird die weitere Ausführung der Schleife abgebrochen.
Beitrag geändert: 12.3.2008 15:08:57 von xenodez -
Du könntest statt
if ($datum >= $heute)
auch einfach
if ($datum == $heute)
schreiben, dann sollte es auch gehen und er liefert dir alle Termine des aktuellen Tages. -
Und was ist dann, wenn der nächste anstehende Termin erst am nächsten Tag ist?
-
Und was ist dann, wenn der nächste anstehende Termin erst am nächsten Tag ist?
Da hast du recht...Das hab ich nicht beachtet.
Ich finde die Datumsformatierung von MySQL eh blödsinnig, die Arbeit mit Timestamps vereinfacht das wesentlich, dann muss ich nur mein Query so formulieren, wie ich es brauche. Bei einem Datum im MySQL-Format ist der > oder >= Vergleich ziemlich sinnlos, er wird immer alle Ergebnisse ausspucken und man muss sie danach noch extra sortieren. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage