Daten vergleichen in PHP geht nicht?

5 Antworten

Warum holst du dir aus der Datenbank nicht mit UNIX_TIMESTAMP() einen Timestamp und vergleichst es damit?

Woher ich das weiß:Berufserfahrung – Entwickle Webseiten seit über 25 Jahren.
Lucnardo 
Fragesteller
 12.07.2021, 15:34

ich frage alles von dem user ab und nicht nur den timestamp

0
Babelfish  12.07.2021, 16:51
@Lucnardo

Ist doch egal, du kannst dir in deinem Query trotzdem noch den Timestamp mitliefern lassen:

SELECT *,UNIX_TIMESTAMP(datumfeld) AS my_timestamp FROM …
0

Geht nicht ist keine gute Fehlerbeschreibung. Entweder das Skript bricht mit einer Fehlermeldung ab oder es besteht ein logisches Problem.

Mit strtotime kannst du die Strings in Zeitstempel konvertieren und dann mit den mathematischen Operatoren vergleichen. Lies für Weiteres hier.

strings möchtest du mit strcmp vergeleichen. < wandelt vorher in Zahlen um.

Lucnardo 
Fragesteller
 12.07.2021, 15:28

wie meinst du das?

0
iQa1x  12.07.2021, 15:32

nö. das ist PHP, kein C.

0
iQa1x  12.07.2021, 15:41
@freejack75

Entschuldigung. Du hast Recht. Gerade nachgelesen und für ziemlich mies und inkonsistent befunden.

[1234] vs [ 1234]
string(4) "1234"
string(5) " 1234"
EQUAL !

[1234] vs [1234 ]
string(4) "1234"
string(5) "1234 "
DIFFERENT !
1
freejack75  12.07.2021, 15:42
@iQa1x

ja, php halt. Immer wieder für ein WTF gut. Das ist schon eine liebevoll vermurkste Sprache. ;-)

0

Was steht in $row["last_seen"] ? Wenn das eine DATETIME Spalte in mySQL ist, kommt da schon mm/dd/yyyy hh:ii:ss raus (oder so ähnlich). Das dann nochmal mit date() umwandeln ist Blödsinn.

Lasse dir von der DB (im Beispiel mysql) direkt einen UNIX_TIMESTAMP geben, also z.B. SELECT UNIX_TIMESTAMP(last_seen) as last_seen FROM ... , dann sollte das gehen. Allerdings kannst du dann auch gleich if($row['last_seen'] > (time() -30)) abfragen und das Ganze umwandeln sparen.

Alternativ lässt du dir gleich nur die passenden Datensätze von der DB liefern:

SELECT ... WHERE last_seen > (DATE_SUB(NOW(), INTERVAL 30 SECOND))

Woher ich das weiß:Studium / Ausbildung – Informatiker
Lucnardo 
Fragesteller
 12.07.2021, 15:37

das proplem ist das ich mehrere dinge in der DB auslese mit der abfrage und nicht NUR den timestamp

0
iQa1x  12.07.2021, 15:42
@Lucnardo

Du kannst in dem Select gern noch durch Komma getrennt, alle andere Spalten dazuschreiben, SELECT spalte1, spalte2, UNIX_TIMESTAMP(last_seen) as last_seen FROM... ist kein Problem. Nur * geht je nach Version nicht.

0
Lucnardo 
Fragesteller
 12.07.2021, 15:44
@iQa1x

Ah und schon wieder was gelernt gleich mal testen kann ich dann die variablen genau so auslesen wie immer also mit $variable = $row["variable"]

0