Quote:
Originally Posted by Terrorkrieger
hi ich hab ma ne frage zum datetime
$old_date = date("Y-m-d H:i:s");
$old_date_timestamp = strtotime($old_date);
$new_date = date("Y-m-d H:i:s", $old_date_timestamp);
if ($old_date_timestamp = date("Y-m-d H:i:s"))
$db_eintragen_rRebirthDate = $new_date = date("Y-m-d H:i:s", $old_date_timestamp);
if($db_auslesen_chars_trebirthinfo_save[0]->rRebirthNo == 0)
{
$db_eintragen_syntax_trebirthinfo = "
INSERT INTO [dbo].[tRebirthInfo]
(
nCharNo,rRebirthDate,rRebirthNo
)
VALUES
(
'".$_POST['character']."','".$db_eintragen_rRebirthDate."','".$db_eintra gen_rRebirthNo."'
)
";
}
else
{
$db_eintragen_syntax_trebirthinfo = "
UPDATE
[dbo].[tRebirthInfo]
SET
rRebirthDate='".$db_eintragen_rRebirthDate."',
rRebirthNo='".$db_eintragen_rRebirthNo."'
WHERE
nCharNo='".$_POST['character']."'
";
}
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.
$old_date = date("Y-m-d H:i:s");
//also altes datum ist gleich aktuelles Datum???
$old_date_timestamp = strtotime($old_date);
//ok dann machen wir nen timestamp aus dem "alten-aktuellen-Datum"???
$new_date = date("Y-m-d H:i:s", $old_date_timestamp);
// super, jetzt machen wir aus dem zuvor erstelltem timestamp vom "alten-aktuellen-Datum" also wieder das neue Datum???
if ($old_date_timestamp = date("Y-m-d H:i:s"))
//naja, macht ja alles nix, setzen wir halt hier wieder den timestamp zu nem normalen datum!?!?! soll das ein vergleich sein? dann == ansonsten ist es immer wahr
$db_eintragen_rRebirthDate = $new_date = date("Y-m-d H:i:s", $old_date_timestamp);
// hm warte mal warum formatieren wir jetzt nicht nochmal den timestamp der ja gar keiner mehr ist zu nem normalem Date und speichern es in newdate,
// nur um newdate dann nochmal in die eintragen variable zu speichern wobei newdate eigentlich doch schon lange im richtigen format sein sollte...???? hmmmmmmmm
// wobei, eigentlich ists jetzt eh wurscht denn $new_date = date("Y-m-d H:i:s", $old_date_timestamp) funzt nun eh nich mehr da das format von $old_date_timestamp
// ja vorhin mit date("Y-m-d H:i:s") überschrieben wurde
//nachfolgender code macht soweit sinn
if($db_auslesen_chars_trebirthinfo_save[0]->rRebirthNo == 0)
{
$db_eintragen_syntax_trebirthinfo = "
INSERT INTO [dbo].[tRebirthInfo]
(
nCharNo,rRebirthDate,rRebirthNo
)
VALUES
(
'".$_POST['character']."','".$db_eintragen_rRebirthDate."','".$db_eintra gen_rRebirthNo."'
)
";
}
else
{
$db_eintragen_syntax_trebirthinfo = "
UPDATE
[dbo].[tRebirthInfo]
SET
rRebirthDate='".$db_eintragen_rRebirthDate."',
rRebirthNo='".$db_eintragen_rRebirthNo."'
WHERE
nCharNo='".$_POST['character']."'
";
}
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.
Code:
<?php
####################################################################################
## zu Debugzwecken, sollte in der Entwicklungsphase immer benutzt,
## später aber auskommentiert werden um ungewollten output bei fehlern zu vermeiden.
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
###################################################################################
## Zeitzonen sollten festgelegt werden um Probleme zu vermeiden,
## Standard in php ist meistens Asia/Kuwait nach neuinstallation
## und müsste soweit ich mich entsinne in der php.ini geändert werden können.
date_default_timezone_set('Europe/Berlin');
## hier sollte der alte wert aus der Datenbank landen, also new DateTime(Datenbankwert)
$old_date = new DateTime('2019-08-24 07:35:00');
## ermittelt aktuelles Datum/Uhrzeit, new DateTime('now') würde auch gehen
$current_date = new DateTime(date("Y-m-d H:i:s"));
## die maximale Differenz der Daten in Stunden
$max_diff_hours = 24;
## hier wird bereits die differenz beider Daten ermittelt
$calculated_diff = $current_date->diff($old_date);
## hier rechnen wir die differenz in Stunden um
$hours = $calculated_diff->h + ($calculated_diff->days*24);
## wenn dann
if($hours >= $max_diff_hours){
## wenn die verglichene Differenz größer ist als der festgelegte maximalwert dann mach was
echo "Es sind bereits ".$hours." Stunden vergangen, von mir aus darfste widergeboren werden.";
}else{
## wenn nich mach was anderes oder nix
echo "Sorry, du musst noch ".($max_diff_hours-$hours)." Stunden auf die Wiedergeburt warten.";
}
?>