PHP & SQL Datetime

08/23/2019 04:00 Terrorkrieger#1
hi ich hab ma ne frage zum datetime


das wäre der so genannte datums und uhrzeit eintrag und co so nun hab ich folgendes vor das man zwischen den rebirth 24 stunden warten muss wie das geht ist ja klar aber ich hab halt nen ganz anderes problem er trägt mir zwar ein datum in die SQL DB ein aber leider nicht das aktulle halt er trägt mir das hier immer ein [ 1970-01-01 00:00:23.000 ]

hab ich da vielleicht irgend ein fehler gemacht oder liegt es am SQL Server oder der PHP version

was ich nutze ist im moment

Windows 10
IIS
PHP v7.2
SQL Server 2017
08/23/2019 04:38 Pr0xyPlayZ#2
Beispiel :

PHP Code:
<td><?php echo date('d.m.y H:i:s'$row['Time']); ?></td>
08/24/2019 09:29 KuminDesu#3
Also als ich mal für meine Website ein Posting system gemacht habe aus lw hatte ich da auch ein Datum Column inserted hab ich es einfach indem ich mir ein String gemacht habe mit
PHP Code:
$date date('Y-m-d H:i:s'); 
und dann mit insert code eingefügt zeigt mir auch jetzt noch den heutigen datum an wenn ich was poste.
08/24/2019 10:32 D0n!#4
Quote:
Originally Posted by Terrorkrieger View Post
hi ich hab ma ne frage zum datetime


das wäre der so genannte datums und uhrzeit eintrag und co so nun hab ich folgendes vor das man zwischen den rebirth 24 stunden warten muss wie das geht ist ja klar aber ich hab halt nen ganz anderes problem er trägt mir zwar ein datum in die SQL DB ein aber leider nicht das aktulle halt er trägt mir das hier immer ein [ 1970-01-01 00:00:23.000 ]

hab ich da vielleicht irgend ein fehler gemacht oder liegt es am SQL Server oder der PHP version

was ich nutze ist im moment

Windows 10
IIS
PHP v7.2
SQL Server 2017

Hier mal ein paar winks mit dem Zaunpfahl, ich kenne das rebirth system und seine funktionsweise leider nicht aber im grunde genommen sollte es vermutlich so laufen, dass du aus der datenbank, das zuletzt eingetragene Datum ausliest, in einer variable speicherst und die differenz zum aktuellen datum ermittelst und dann vergleichst ob diese größer als 24std ist. Sollte dem so sein, dann skript ausführen, wenn nich dann nich.


dass dir 1970 eingetragen wird liegt vermutlich daran, dass du mit leeren bzw. falschen werten arbeitest und damit meine ich ganz speziell die zeile
Code:
if ($old_date_timestamp = date("Y-m-d H:i:s"))
denn hier setzt du den timestamp den du später bei
Code:
$db_eintragen_rRebirthDate = $new_date = date("Y-m-d H:i:s", $old_date_timestamp);
benutzen willst wieder in ein normales datumsformat und zerstörst dir so den wert.

also mein tipp fürs erste, ändere zuallererst mal
Code:
if ($old_date_timestamp = date("Y-m-d H:i:s"))
zu
Code:
if ($old_date_timestamp == date("Y-m-d H:i:s"))
das sollte dir zumindest schonmal das problem mit den 70ern beheben ;)

edit: Hatte grad noch etwas langeweile und hab dir mal eine möglichkeit zusammengebastelt wie man
den 24Stunden Check vollziehen könnte.

08/24/2019 13:10 Terrorkrieger#5
danke D0n ich werd es dann ma versuchen und geb dann bescheid wenn noch ne frage offen sein sollte
08/24/2019 21:02 Amanecer#6
So vielleicht?

PHP Code:
$db_eintragen_rRebirthDate time();
if (
$db_auslesen_chars_trebirthinfo_save[0]->rRebirthNo == 0) {
    
$db_eintragen_syntax_trebirthinfo "INSERT INTO tRebirthInfo (nCharNo, rRebirthDate, rRebirthNo) VALUES ('".$_POST['character']."', '".$db_eintragen_rRebirthDate."', '".$db_eintra gen_rRebirthNo."')";
} else {
    
$sth $dbh->prepare('SELECT rRebirthDate FROM tRebirthInfo WHERE nCharNo = ?');
    
$sth->bindValue(1$_POST['character'], PDO::PARAM_INT);
    
$sth->execute();
    if (
$sth->fetchColumn() + 86400 <= time()) {
        
$db_eintragen_syntax_trebirthinfo "UPDATE [dbo].[tRebirthInfo] SET rRebirthDate= '".$db_eintragen_rRebirthDate."', rRebirthNo= '".$db_eintragen_rRebirthNo."' WHERE nCharNo= '".$_POST['character']."'";
    }

Keine Ahnung blicke bei dem Script auch net so ganz durch. Wenn du das verwendest muss rRebirthDate ein int bzw bigint sein wenn du vorhast es nach 2038 noch zu verwenden :lul:
08/25/2019 03:29 D0n!#7
Quote:
Originally Posted by Amanecer View Post
So vielleicht?

PHP Code:
$db_eintragen_rRebirthDate time();
if (
$db_auslesen_chars_trebirthinfo_save[0]->rRebirthNo == 0) {
    
$db_eintragen_syntax_trebirthinfo "INSERT INTO tRebirthInfo (nCharNo, rRebirthDate, rRebirthNo) VALUES ('".$_POST['character']."', '".$db_eintragen_rRebirthDate."', '".$db_eintra gen_rRebirthNo."')";
} else {
    
$sth $dbh->prepare('SELECT rRebirthDate FROM tRebirthInfo WHERE nCharNo = ?');
    
$sth->bindValue(1$_POST['character'], PDO::PARAM_INT);
    
$sth->execute();
    if (
$sth->fetchColumn() + 86400 <= time()) {
        
$db_eintragen_syntax_trebirthinfo "UPDATE [dbo].[tRebirthInfo] SET rRebirthDate= '".$db_eintragen_rRebirthDate."', rRebirthNo= '".$db_eintragen_rRebirthNo."' WHERE nCharNo= '".$_POST['character']."'";
    }

Keine Ahnung blicke bei dem Script auch net so ganz durch. Wenn du das verwendest muss rRebirthDate ein int bzw bigint sein wenn du vorhast es nach 2038 noch zu verwenden :lul:
Laut seinem script ist rRebirthDate vom typ Datum im Format "Y-m-d H:i:s" aber ja, sollte er auf typ Datum verzichten und stattdessen nen timestamp dort speichern (bigint vllt. bevorzugt) sollte das ganze genau so problemlos funktionieren, wenns denn genau das ist was er erreichen möchte. :D
08/25/2019 14:46 Terrorkrieger#8
also wie schon Amanecer sagte so ungefähr sieht mein script aus also muss ich in der SQL DB die spalte rRebirthDate auf bigint umstellen dann ja ?