DB Abfrage Datumsbezogen...

xony

Erfahrenes Mitglied
Hallo Forum,

ich stecke wiedermal in einer Sackgasse, in meinen PHP Büchern die ich mir Gestern gekauft hab finde ich leider auch keine Lösung.
Ich möchte folgende DB Abfrage auf den heutigen Tag beziehen.

Das bedeutet in meinem Fall, ich möchte nicht wissen wieviele User sich insgesamt angemeldet haben, sondern wieviele sich HEUTE angemeldet haben.
Dazu muss ich die DB Abfrage Datumsbezogen gestalten, aber wie.
Vielen Dank

Ach ja hier der Code für die DB Abfrage:
Code:
$customers_query = tep_db_query("select count(*) as count from " . TABLE_CUSTOMERS);
 
Die Abfrage gestaltet sich, solange du das Datum bei jeder Registrierung aufzeichnest, nicht besonders schwierig:
PHP:
<?php
  [...]
  $query = "
	SELECT
	        COUNT(*) AS `count`
	  FROM
	        `".TABLE_CUSTOMERS."`
	  WHERE
	        CURDATE() = `datumsspalte`
	";
  $customers_query = tep_db_query($query);
  [...]
?>
 
DAnke für die Hilfe, aber leider zeigt es null an.

den Code hab ich angepasst, da bei Deiner ersten version leider überhaupt nix angezeigt wurde, aber es ist ein Ansatz.
So sieht der momentane Code aus:
Code:
  $customers_query = tep_db_query("select count(*) as count from " . TABLE_CUSTOMERS_INFO. " where CURDATE() = 'customers_info_date_account_created'");

Weist Du woran es liegen kann.?:(
 
Hast du es schon versucht, einfach den korrekten Spaltennamen in mein Vorschlag einzufügen?

Wenn's nicht klappt: Welchen Spaltentyp hat customers_info_date_account_created?
 
mmmmhhh, also ich hab das jetzt so drin:


Die Abfrage:


$query = "
SELECT
COUNT(*) AS `count`
FROM
`".TABLE_CUSTOMERS."`
WHERE
CURDATE() = `datumsspalte`
";
$customers_query = tep_db_query($query);



Die Ausgabe:

echo 'Benutzer Heute: '.$customers_query['count'].'<br>';

So sieht die tabelle aus:


DROP TABLE IF EXISTS customers_info;
CREATE TABLE customers_info (
customers_info_id int NOT NULL,
customers_info_date_of_last_logon datetime,
customers_info_number_of_logons int(5),
customers_info_date_account_created datetime,
customers_info_date_account_last_modified datetime,
global_product_notifications int(1) DEFAULT '0',
PRIMARY KEY (customers_info_id)
);

Komisch...
 
Also ich habs jetzt hinbekommen das angezeigt wird wieviele Benutzer sich heute angemeldet haben.
Indem ich das heutige Datum eingetragen habe anstatt den Spaltennamen.
Aber jetzt muss ich ja jeesmal das Datum manuell ändern um ein korrektes Ergebniss zu bekommen.
Gibt es keine Funktion die Automatisch das Datum ermittelt, die ich dann dort eintragen kann?.

Hier nochmals der Code:

$customers_query = tep_db_query("select count(*) as count from " . TABLE_CUSTOMERS_INFO. " where CURDATE() = '2004-06-25'");
$customers = tep_db_fetch_array($customers_query);

Gruss
 
Da deine Spalte customers_info_date_account_created vom Typ DATETIME ist, muss ich etwas improvisieren:
PHP:
<?php
  [...]
  $query = "
	SELECT
	        COUNT(*) AS `count`
	  FROM
	        `".TABLE_CUSTOMERS."`
	  WHERE
	        CURDATE() = LEFT(`customers_info_date_account_created`, 10)
	";
  $customers_query = tep_db_query($query);
  $customers = tep_db_fetch_array($customers_query);
  [...]
?>
Ich hoffe, es funktioniert diesmal.
 
:-) 100 x in die Luft-Spring...............

Genial Due glaubst nicht wielange ich schon daran sitze.....! Bin halt noch Anfänger und versteh deshalb auch nicht die Logik die hinter Deiner Lösung steckt, aber Sie funktioniert...Danke.:-)
 
Möglicherweise solltest du auch mit einer Datenbankadministrationsumgebung wie MySQL Control Center arbeiten. Damit kannst du Abfragen schneller und unkomplizierter entwickeln und testen:
&nbsp;&rsaquo;&rsaquo;&nbsp;MySQL® Control Center


Die Syntax der Abfrage ist eigendlich recht simpel:
CURDATE() gibt in einem Zeichenketten-Zusammenhang das Datum von heute im 'YYYY-MM-DD'-Format zurück.
Da aber deine Spalte vom Typ DATETIME und somit Daten im 'YYYY-MM-DD HH:MM:SS'-Format speichert, werden nur die ersten 10 Zeichen aus der Spalte zum Vergleich benötigt. Nichts anderes macht die LEFT()-Funktion.


Folgender Abschnitt im MySQL-Handbuch könnten von Interesse sein:
&nbsp;&rsaquo;&rsaquo;&nbsp;MySQL Manual | 7.3 Funktionen für die Benutzung in SELECT- und WHERE-Klauseln
 
Zurück