Nur anzeigen was hinter dem Datum liegt...

Trash

Erfahrenes Mitglied
Hi, ich möchte einen DB-Abfrage so modifizieren das er das aktuelle Datum mit dem eingetragenen vergleicht. Wenn das aktuelle Datum hinter dem eingetragenden ist, so soll er den Eintrag nicht ausgeben...ich hab mir das so gedacht:

PHP:
$anfrage = mysql_query("SELECT id, datum, inhalt FROM table order by id desc WHERE $date > $date2 LIMIT 5");
while ($ergebnis = mysql_fetch_array($anfrage)) { 
$date = date("d.m");
$date2 = $ergebnis[1];

aber so kann das ja nicht gehen, da die abfrage vor dem $date2 liegt und somit eigentlich das $ergebnis[2] nocht nicht verfügbar ist...hat da jemand eine lösung ?

P.S.: Datum soll ohne das Jahr "ausgegeben" werden...Es ist kein Timestamp drin ! Das Datum wird einfach mit "11.05" in die DB eingetragen !
 
Zuletzt bearbeitet:
utfsb.jpg


-> http://www.tutorials.de/forum/showthread.php?threadid=17175

das kannst du an dein problem anpassen
 
ich hab gesucht, aber Du kannst das auch freundlicher sagen und nicht mit so einem hässlichen Bild...und mit deiner Lösung kann ich absolut nichts anfangen...sorry
 
Zuletzt bearbeitet:
ist nicht so böse gemeint, wie es vielleicht scheint.. aber so ist es hoffentlich etwas ausdrucksstärker.

ich denke außerdem nicht, dass mySQL eine zahl, die per "." abgetrennt ist sofort als datum vergleichen wird, sondern als kommazahl, somit musst du leider noch php ins spiel bringen, eine einfach abfrage wird das ergebnis nicht liefern, zwei jedoch schon.

dann kannst du es dir ähnlich aufbauen, wie im gezeigten thread.

aber wenn du nur zeilen auswählen willst, in denen das datum höher ist, dann kannst du das eben nicht mit der abfrage machen, es sei denn, du arbeitest mit timestamps.
 
hmm...kannste mir kurz erklären wie ich das denn mit timestamps mache ? Ich glaub ich bin faul ;)

Also ich erstell ne Spalte mit der Art "TIMESTAMP" aber wie füge ich da nun was ein ? also wie muss das im Quellcode aussehen ? nicht einfach date(d.m.Y); oder ?
 
die Art der Spalte ist bei mir immer BIGINT gewesen, da ein timestamp ja aus zahlen besteht, aber vielleicht ist es besser, wenn du timestamp benutzt. Falls das nicht funktioniert, dann versuch es mit BIGINT.

den timestamp bekommst du mit
PHP:
$zu_insertender_timestamp = mktime("15"\*hour*\, "30"\*minutes*\, "5"\*seconds*\, "2"\*month*\, "28" \*day*\, "2002" \*year*\);

## inserten kannst du dann mit einem normalen query

$q = "INSERT INTO me (blubb, name, timestamp) VALUES ('blubb', 'Hasabusa'. '".$zu_insertender_time."')
mysql_query($q);

danach könntest du es wie in deinem eigenen quellcode aus dem ersten post machen:


PHP:
$aktueller_timestamp = time();
$q = "SELECT * FROM me WHERE timestamp < ".$aktueller_timestamp." LIMIT 5";
$res = mysql_query($q);

hoffe mal, du hast verstanden was ich meine, ist nicht so super erklärt :rolleyes:
 
Zurück