Ik heb eindelijk een scriptje gevonden die mijn voldoening geeft kwa werking wat ik wil.
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.:

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';
                }
           }
      }


Ik vermoed zelf dat het in dit stukje zou kunnen zitten.:

$DatumTijdRegP1 = mysqli_real_escape_string($connect, $_POST["DatumTijdRegP1"]);

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.
Oke heb dat voorbeeld geprobeerd en staat zo in mijn code nu.:

 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';
                }
           }


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
Weet je zeker dat het formulier dat je gebruikt DatumTijdRegP1 de datum wel ontvangt als: yyyy-mm-dd hh:mm:ss ?
Het heb ik hem in mijn script staan om het te tonen op het invul veld.:

 <input  size="20" type="text" name="DatumTijdRegP1" value="<?php echo date('Y-m-d H:i:s'); ?>"
Ikzelf doe weleens, eigenlijk wel.. heel vaak beide variables echo'en om te kijken of het wel veranderd of wat ik er eigenlijk ook mee doe.

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

$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

Van php.net "string date ( string $format [, int $timestamp = time() ] )"
Ik voeg dit voor het wegscrhijven toe:

date_default_timezone_set("Europe/Amsterdam");

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
Ik voeg dit voor het wegscrhijven toe:

date_default_timezone_set("Europe/Amsterdam");

Dat zet de klok van de server op de gebruikte tijd.

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.
Hallo mensen,

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.

 $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?

Reageren