Probleem met datum en tijd in gevonden script.
Alleen nu heb ik een datum en tijd erbij gezet , maar hij slaat mij deze op in allemaal nullen.
Dus in de database slaat hij mij dit zo op.: 0000-00-00 00:00:00
De code die hiervoor zorgt is de volgende.:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
if(isset($_POST["action"]))
{
$output = '';
$connect = mysqli_connect("localhost", "root", "xxx", "xxxxx");
if($_POST["action"] =="Add")
{
$DatumTijdRegP1 = mysqli_real_escape_string($connect, $_POST["DatumTijdRegP1"]);
$StartTijd = mysqli_real_escape_string($connect, $_POST["StartTijd"]);
$EindTijd = mysqli_real_escape_string($connect, $_POST["EindTijd"]);
$Opmerking = mysqli_real_escape_string($connect, $_POST["Opmerking"]);
$procedure = "
CREATE PROCEDURE insertUser(IN DatumTijdRegP1 datetime, StartTijd varchar(250), EindTijd varchar(250), Opmerking varchar(250))
BEGIN
INSERT INTO Prep1Opm(DatumTijdRegP1, StartTijd,EindTijd,Opmerking) VALUES (DatumTijdRegP1, StartTijd,EindTijd,Opmerking);
END;
";
if(mysqli_query($connect, "DROP PROCEDURE IF EXISTS insertUser"))
{
if(mysqli_query($connect, $procedure))
{
$query = "CALL insertUser('".$DatumTijdRegP1."', '".$StartTijd."', '".$EindTijd."', '".$Opmerking."')";
mysqli_query($connect, $query);
echo 'Data Inserted';
}
}
}
{
$output = '';
$connect = mysqli_connect("localhost", "root", "xxx", "xxxxx");
if($_POST["action"] =="Add")
{
$DatumTijdRegP1 = mysqli_real_escape_string($connect, $_POST["DatumTijdRegP1"]);
$StartTijd = mysqli_real_escape_string($connect, $_POST["StartTijd"]);
$EindTijd = mysqli_real_escape_string($connect, $_POST["EindTijd"]);
$Opmerking = mysqli_real_escape_string($connect, $_POST["Opmerking"]);
$procedure = "
CREATE PROCEDURE insertUser(IN DatumTijdRegP1 datetime, StartTijd varchar(250), EindTijd varchar(250), Opmerking varchar(250))
BEGIN
INSERT INTO Prep1Opm(DatumTijdRegP1, StartTijd,EindTijd,Opmerking) VALUES (DatumTijdRegP1, StartTijd,EindTijd,Opmerking);
END;
";
if(mysqli_query($connect, "DROP PROCEDURE IF EXISTS insertUser"))
{
if(mysqli_query($connect, $procedure))
{
$query = "CALL insertUser('".$DatumTijdRegP1."', '".$StartTijd."', '".$EindTijd."', '".$Opmerking."')";
mysqli_query($connect, $query);
echo 'Data Inserted';
}
}
}
Ik vermoed zelf dat het in dit stukje zou kunnen zitten.:
Maar ik kan natuurlijk ook fout zitten.
Kan mij iemand helpen waarom hij dit niet in datum en tijd zet, de Type staat op datetime in de database.
Gewijzigd op 07/11/2018 20:25:58 door Pascal Schuffelers
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
if($_POST["action"] =="Add")
{
$datetime = date('Y-m-d H:i:s',$_POST["DatumTijdRegP1"]);
$DatumTijdRegP1 = mysqli_real_escape_string($connect,$datetime);
$StartTijd = mysqli_real_escape_string($connect, $_POST["StartTijd"]);
$EindTijd = mysqli_real_escape_string($connect, $_POST["EindTijd"]);
$Opmerking = mysqli_real_escape_string($connect, $_POST["Opmerking"]);
$procedure = "
CREATE PROCEDURE insertUser(IN DatumTijdRegP1 datetime, StartTijd varchar(250), EindTijd varchar(250), Opmerking varchar(250))
BEGIN
INSERT INTO Prep1Opm(DatumTijdRegP1, StartTijd,EindTijd,Opmerking) VALUES (DatumTijdRegP1, StartTijd,EindTijd,Opmerking);
END;
";
if(mysqli_query($connect, "DROP PROCEDURE IF EXISTS insertUser"))
{
if(mysqli_query($connect, $procedure))
{
$query = "CALL insertUser('".$DatumTijdRegP1."', '".$StartTijd."', '".$EindTijd."', '".$Opmerking."')";
mysqli_query($connect, $query);
echo 'Data Inserted';
}
}
{
$datetime = date('Y-m-d H:i:s',$_POST["DatumTijdRegP1"]);
$DatumTijdRegP1 = mysqli_real_escape_string($connect,$datetime);
$StartTijd = mysqli_real_escape_string($connect, $_POST["StartTijd"]);
$EindTijd = mysqli_real_escape_string($connect, $_POST["EindTijd"]);
$Opmerking = mysqli_real_escape_string($connect, $_POST["Opmerking"]);
$procedure = "
CREATE PROCEDURE insertUser(IN DatumTijdRegP1 datetime, StartTijd varchar(250), EindTijd varchar(250), Opmerking varchar(250))
BEGIN
INSERT INTO Prep1Opm(DatumTijdRegP1, StartTijd,EindTijd,Opmerking) VALUES (DatumTijdRegP1, StartTijd,EindTijd,Opmerking);
END;
";
if(mysqli_query($connect, "DROP PROCEDURE IF EXISTS insertUser"))
{
if(mysqli_query($connect, $procedure))
{
$query = "CALL insertUser('".$DatumTijdRegP1."', '".$StartTijd."', '".$EindTijd."', '".$Opmerking."')";
mysqli_query($connect, $query);
echo 'Data Inserted';
}
}
Alleen de datum klopt van geen meter, hij geeft niet de datum en tijd van invullen in maar dit.: 1970-01-01 01:00:00
Gewijzigd op 07/11/2018 20:52:30 door Pascal Schuffelers
Weet je zeker dat het formulier dat je gebruikt DatumTijdRegP1 de datum wel ontvangt als: yyyy-mm-dd hh:mm:ss ?
Zou je het eens willen proberen?
de $_POST["DatumTijdRegP1"] en $DatumTijdRegP1, kijken wat er gebeurt is :)
Wellicht heb je wel een foutmelding, error_reporting(E_ALL); kun je altijd tijdens development even bovenaan je script zetten.
Probeer trouwens maar gewoon
Code (php)
1
2
3
2
3
$DatumTijdRegP1 = mysqli_real_escape_string($connect, $_POST["DatumTijdRegP1"]); //ff cleanen
$DatumTijdRegP1 = strtotime($DatumTijdRegP1); // omzetten naar timestamp
$DatumTijdRegP1 = date('Y-m-d H:i:s',$DatumTijdRegP1); // timestamp omzetten naar string in gewenste format Y-m-d H:i:s
$DatumTijdRegP1 = strtotime($DatumTijdRegP1); // omzetten naar timestamp
$DatumTijdRegP1 = date('Y-m-d H:i:s',$DatumTijdRegP1); // timestamp omzetten naar string in gewenste format Y-m-d H:i:s
Van php.net "string date ( string $format [, int $timestamp = time() ] )"
Gewijzigd op 07/11/2018 21:37:53 door Dennis WhoCares
Dat zet de klok van de server op de gebruikte tijd.
De uitvoer van de tijd zet je dan op de juiste tijdzone. De servertijd verander je er niet mee.
Jan te Pas op 08/11/2018 12:01:32:
Dat lijkt mij niet erg handig, want een heleboel functionaliteit voor het formatteren van datums en tijden gaat uit van UTC. Het lijkt mij beter om alles op te slaan in UTC, en naar behoefte deze tijden te converteren naar de juiste tijszone bij weergeven.
Ontopic: maar ja, als er 0000-00-00 00:00:00 in je database belandt (en vervolgens 1 januari 1970 weergegeven wordt), grote kans dat er onderweg ergens iets misgaat met de datums. Deze hebben dan een zodanig formaat wat niet geldig is om in een DATETIME kolom opgeslagen te worden, dus dan wordt de default genomen.
Gewijzigd op 08/11/2018 14:51:17 door Thomas van den Heuvel
Mijn excuses voor het late antwoord , maar door alle problemen op het werk heb ik geen tijd eerder gevonden om een reactie te plaatsen.
Met de code van @dennis gaat het niet goed.
Dan plaats hij weer allemaal nullen.
Als tijdelijke oplossing heb ik in dat stukje voor het wegschrijven dezelfde php code gebruikt in de command en dan gaat het wel goed.
Code (php)
1
$query = "CALL updateUser('".$_POST["id"]."', '".date('Y-m-d H:i:s')."', '".$StartTijd."', '".$EindTijd."', '".$Opmerking."')";
Ik ga nog straks even kijken waar het precies dan nu misgaat.
Waarom zou je hier trouwens een procedure van maken die je continu DROPped? Dit lijkt mij onnodig complex en inefficiënt?
Ik hou mijn volgend vraagje ook even hier aangezien we het toch over tijd hebben.
Ik probeer en scriptje te schrijven die eerst kijkt wat de huidige tijd is.
Dan heb ik 3 diensten dd, md en nd met de begin tijden.
Nu moet het scriptje kijken in welke dienst de huidige tijd valt, alleen hij werkt niet hoe het moet zijn.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
$now = date('H:i:s');
$DD = new DateTime('07:00:00');
$MD = new DateTime('15:00:00');
$ND = new DateTime('23:00:00');
if($DD >=$now && $DD <$MD){
echo "Dagdienst";
}
if($MD >=$now and $MD <$ND){
echo "Middagdienst";
}
if($ND >=$now and $ND <$VD){
echo "Nachtdagdienst";
}
$DD = new DateTime('07:00:00');
$MD = new DateTime('15:00:00');
$ND = new DateTime('23:00:00');
if($DD >=$now && $DD <$MD){
echo "Dagdienst";
}
if($MD >=$now and $MD <$ND){
echo "Middagdienst";
}
if($ND >=$now and $ND <$VD){
echo "Nachtdagdienst";
}
Toevoeging op 08/11/2018 19:56:14:
Of hebben jullie een andere manier om dit goed te laten werken?
http://php.net/manual/en/datetime.gettimestamp.php
En $VD bestaat trouwens niet
(net als het warenhuis ;-) )
Gewijzigd op 08/11/2018 20:10:05 door - Ariën -
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$now = date('H:i:s');
// $now = '06:59:59'; // om te oefenen
$DD = '07:00:00';
$MD = '15:00:00';
$ND = '23:00:00';
echo '<p>$now = ' . $now . '</p>';
if ( $now >= $ND || $now < $DD ) {
echo '<p>nachtdienst</p>';
} elseif ( $now >= $MD ) {
echo '<p>middagdienst</p>';
} elseif ( $now >= $DD) {
echo '<p>dagdienst</p>';
}
?>
$now = date('H:i:s');
// $now = '06:59:59'; // om te oefenen
$DD = '07:00:00';
$MD = '15:00:00';
$ND = '23:00:00';
echo '<p>$now = ' . $now . '</p>';
if ( $now >= $ND || $now < $DD ) {
echo '<p>nachtdienst</p>';
} elseif ( $now >= $MD ) {
echo '<p>middagdienst</p>';
} elseif ( $now >= $DD) {
echo '<p>dagdienst</p>';
}
?>
De laatste ifelse kan een else worden omdat het de overgebleven dienst is.
Gewijzigd op 08/11/2018 20:17:30 door Adoptive Solution
Alvast super bedankt mensen.
Toevoeging op 09/11/2018 19:05:26:
Update.
Het doet zoals ik graag wilde, super bedankt @Adoptive.
Fijn dat het werkt. :-)