Counter

@tombe
Bei mir wird jetzt die Zahl "0" angezeigt für gestern
Wenn ich den anderen code nehme mit DATEDIFF kommt "2"
Woran kann das jetzt liegen?
 
Also die Bezeichnung für das Feld "tag" ist DATETIME ? Dann wird also z.B. "2001-04-26 19:30:00" gespeichert und nicht nur der Tag "26". Darauf lässt nämlich der Name des Feldes schließen.

Wenn du jetzt die Datensätze von gestern willst, so ist obige Anweisung schon richtig. Wie du auf die Zhal 0 oder 2 kommst, verstehe ich nicht. Die Anweisung liefert keine Zahl als Ergebnis.
 
Ja genau, das Feld heißt tag und so wird das bei mir gespeichert
Ich verstehe jetzt nicht was du meinst. was sollte denn deiner meinung sonst als ergebis raus kommen?
Ich wil ja die User Anzahl die gestern online waren.
Wenn ich es mit datediff mache, dann kommt bei mir 2 raus, also gestern waren 2 user online. Das stimmt auch so, habe in die Datenbank rein geschaut.
Wenn ich aber dein code benutze mit Date_sub. dann kommt das ergebniss null 0 raus.
Verstehst du was ich meine?
 
Du suchst eigentlich nach einem Datumsbereich und welcher das ist hängt von Deinen Wünschen ab.

Möglichkeit 1)
Die Anzahl Besucher der letzten 24 Stunden vom aktuellen Zeitpunkt aus (dann wäre DATE_SUB mit Berücksichtigung der Stunden und Minuten richtig).

Möglichkeit 2)
Die Anzahl Besucher des vergangenen Tages (dann wäre DATE_SUB beschränkt auf den Tag ohne Zeitangabe richtig).

Bei

Code:
SELECT * FROM $online WHERE tag = DATE_SUB(CURDATE(), INTERVAL 1 DAY)

kommt auf deutsch eigentlich folgender Vergleich raus:
Zeige alle Treffer deren Zeitpunkt exakt einen Tag in der Vergangenheit liegt. Also z.B. 26.04.2011 23:55:55 - 1 Tag = 25.04.2011 23:55:55 - kein Zeitraum.
 
Also irgendwie bin ich Dumm :-)
Ich verstehe das jetzt immer noch nicht :-(
Warum zeigt mir das bei....
Code:
SELECT * FROM $online WHERE tag = DATE_SUB(CURDATE(), INTERVAL 1 DAY)
GESTERN: 0 USER ONLINE
und bei
Code:
SELECT * FROM $online WHERE DATEDIFF(NOW(), tag) = 1";
GESTERN: 2 USER ONLINE
 
Zuletzt bearbeitet:
also ich glaub das ist mir gerade alles bissle zu hoch :-(
Dabei würde ich es so gerne verstehen.

Verstehe ich das jetzt richtig das bei DATE_SUB mir kein ergebniss bzw. Zahl Angezeigt werden kann sondern nur das Datum?

Denn ich war ja zb. gestern auf der Seite drauf und wenn ich den Code mit DATE_SUB benutze kommt bei mir heute das 0 Leute gestern auf der Seite waren.
Das ist doch falsch ****? :-(
 
Kannst du uns nicht mal ein paar Einträge deiner DB zeigen. Dann fällt es uns vielleicht leichter dir das anhand der Daten zu erklären!
 
So und mit den obigen Angaben liefert diese Abfrage:

SQL:
SELECT COUNT(*) AS user FROM deine_tabelle WHERE DATEDIFF(CURDATE(), tag) = 1 LIMIT 1

den Wert 2 für das Feld "user" zurück.
Ändere ich bei der Bedingung die 1 in eine 2, dann liefert "user" den Wert 1 (ist jetzt verwirrend weil sich die Zahlen tauschen, ist aber so).

In PHP sieht der Vorgang vereinfacht so aus:

PHP:
<?php
$sql = "SELECT COUNT(*) AS user FROM deine_tabelle WHERE DATEDIFF(CURDATE(), tag) = 1 LIMIT 1";
$rs = mysql_query($sql);
echo mysql_result($rs, 0, "user");
?>

Du musst für "deine_tabelle" hier natürlich den entsprechenden Wert einsetzen.
 
Zurück