Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Curdate() - Problem [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Curdate() - Problem


 
infeloba
01-07-2010, 10:09 
 
Moin Leudde ;)

Ein für einem für Euch vielleicht ein eher kleineres Problem...

Ich hate in meiner DB ein Datum im Format: 01.07.2010 - 05:47:39

abgespeichert. Nun gehe ich davon aus, dass ich mit "CURDATE()" die Einträge suchen/ausgeben kann, die exakt 1 Monat zurück liegen.

Habe shon viel probiert/gesucht mit MONTH oder -30 DAYS aber leider nichts gefunden...

Bitte um Hilfe ;)


LG :D

 
streuner
01-07-2010, 10:29 
 
Hi.

Wie wäre es mit PHP: strtotime - Manual (http://de.php.net/manual/de/function.strtotime.php) ?

streuner

 
infeloba
01-07-2010, 10:42 
 
Damit habe ich den Timestamp.... Nützt mir aber nichts. Brauche die letzten 30 Tage aus einem Datum....

 
streuner
01-07-2010, 10:53 
 
Ähm, weiter unten in dem Link findest einige gute Beispiele (du kannst strtotime doch mit beliebigen Befehlen, wie z.B. date(), koppeln).

streuner

 
infeloba
01-07-2010, 10:54 
 
Habe das jetzt mit einer Datums-Umwandlung und anschließend mit:

WHERE DATE_ADD(datum,INTERVAL 1 MONTH)<=NOW()

gelöst, viel einfacher ;)



Gruß und Danke trotzdem !

 
streuner
01-07-2010, 10:56 
 
ach...jetzt sehe ich auch gerade, dass Du in deinem ersten Beitrag geschrieben hast "Datenbank" - völlig überlesen und gewundert wegen Curdate();)!

Brauche erstmal nen Kaffee;)

streuner

 
infeloba
01-07-2010, 11:04 
 
Den Kaff mach ich mir jetzt auch, weil er mir die Ergebnisse nicht richtig sortiert... :(


Hier die Abfrage:

$sql2 = mysql_query("SELECT nickname,aktiv,gesperrt,letzterlogin FROM user
WHERE aktiv = '1' AND gesperrt = '0' AND DATE_ADD(datum_10,INTERVAL 1 MONTH)<=NOW()
OR DATE_ADD(datum_20,INTERVAL 1 MONTH)<=NOW() OR DATE_ADD(datum_50,INTERVAL 1 MONTH)<=NOW()
OR DATE_ADD(datum_80,INTERVAL 1 MONTH)<=NOW() OR DATE_ADD(datum_100,INTERVAL 1 MONTH)<=NOW()
OR DATE_ADD(datum_120,INTERVAL 1 MONTH)<=NOW() OR DATE_ADD(datum_150,INTERVAL 1 MONTH)<=NOW()
OR DATE_ADD(datum_180,INTERVAL 1 MONTH)<=NOW() OR DATE_ADD(datum_200,INTERVAL 1 MONTH)<=NOW()
ORDER BY letzterlogin DESC LIMIT 15");

 
streuner
01-07-2010, 11:07 
 
Wieso, wie gibt er Sie Dir aus und wie willst Du es haben?

streuner

 
derHund
01-07-2010, 11:08 
 
Sortieren musst du dann wohl ebenso mit einer Datums-Umwandlung.

 
infeloba
01-07-2010, 11:16 
 
Wieso, wie gibt er Sie Dir aus und wie willst Du es haben?

streuner

Also ich möchte diejenigen ausgeben, die zuletzt gespielt bzw. eingeloggt waren.

Wenn jemand eingeloggt war, wird ein Datum gespeichert im Format: 01.07.2010 - 05:47:39

 
h3ll
01-07-2010, 11:20 
 
Wenn jemand eingeloggt war, wird ein Datum gespeichert im Format: 01.07.2010 - 05:47:39

Dann wird es im falschen Format gespeichert. Bei MySQL gibt es genau dafür den DATETIME-Typ. Dann wird auch jede Abfrage und Sortierung zum Kinderspiel (und es ist auch deutlich schneller).

 
infeloba
01-07-2010, 11:24 
 
Dann wird es im falschen Format gespeichert. Bei MySQL gibt es genau dafür den DATETIME-Typ. Dann wird auch jede Abfrage und Sortierung zum Kinderspiel (und es ist auch deutlich schneller).

Ok, habe jetzt das Format auf Datetime geändert, wie speichere ich denn am besten in die DB ab? Mit time() oder date() ?

 
infeloba
01-07-2010, 11:28 
 
Speichern funktioniert :) Und wie frage ich jetzt die letzten 30 Tage ab?

SELECT nickname,aktiv,gesperrt,letzterlogin
FROM user
WHERE aktiv = '1' AND gesperrt = '0' AND DATE_ADD(letzterlogin,INTERVAL 1 MONTH)<=NOW()
ORDER BY DAY(letzterlogin)-30 DESC LIMIT 15

geht irgendwie nicht

 
infeloba
01-07-2010, 11:41 
 
Eine letzte nervige Frage habe ich noch ;)

Funktioniert das so, dass ich die letzten Logins bekomme

SELECT nickname,aktiv,gesperrt,letzterlogin
FROM user
WHERE aktiv = '1' AND gesperrt = '0'
ORDER BY letzterlogin DESC LIMIT 15");


Gruß und Danke!

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:35 Uhr.