(geen) datum in database via formulier
Wanneer ik een datum invul dan werkt het formulier, doe ik dit niet krijg ik een foutmelding: Incorrect date value: '' for column 'Datumeinde' at row 1
Mijn code:
Code (php)
1
$einddatum = date_validation(trim(isset($_POST['einddatum'])?$_POST['einddatum']:NULL));
Invoer naar database:
Code (php)
1
2
2
if($error == false){
$einddatum1 = mysqli_real_escape_string($connect, $einddatumcheck);
$einddatum1 = mysqli_real_escape_string($connect, $einddatumcheck);
Ook heb ik met if en else mogelijkheden tussen bovenstaande codes in gewerkt, maar dan werkt het nog niet.
(Nog een vraag over deze code: werk met meerdere foutcontroles tussen de codes in vandaar de if error = false, is het tocch mogelijk om de bovenstaande codes samen te voegen of moet ik dit zo houden ivm. foutcontroles?
Gewijzigd op 20/09/2017 12:08:13 door Michel Bak
Dat trimmen en de data_validation kan je prima op de output doen.
Verder vind ik $einddatum1 niet echt duidelijk, qua naam. Dit zou later tot veel verwarring kunnen leiden.
Gewijzigd op 20/09/2017 12:15:16 door - Ariën -
Oke maar ik heb bv de postcode en een aantal andere dingen op dezelfde manier gecodeerd en die werken wel. Wanneer ik in mijn database kijk staat de standaardwaarde (net als bij de andere inputs) op NULL.
(en als dat het niet is: wat doet date_validation()?)
Daar ben ik ook benieuwd naar, want er is ook binnen PHP een checkdate()-functie. ;-)
en
zit ik met hetzelfde probleem
(date_validation is een eigen functie die de nederlandse datuminvoer converteert naar de datuminvoer van de database)
Quote:
(date_validation is een eigen functie die de Nederlandse datuminvoer converteert naar de datuminvoer van de database)
Dan is date_validation niet echt de correcte naam, en zou ik date_convert() verwachten.
Ikzelf zou het makkelijker maken door mysqli_real_escape_string() direct in je query te verwerken, in plaats van een losse variabele. Dan weet je zeker dat je de boel escaped, en dat een typfout niet zomaar zorgt voor een SQL-injection.
Nou kan ik wel een tip geven ala
maar eigenlijk moet je gewoon met bind-variabelen werken. Met dit soort spaghetti loop je veels teveel kans dat je er een keertje een over het hoofd ziet.
Toevoeging op 20/09/2017 14:48:32:
Ahhh, vergeet dat eerste advies maar, want die ga je natuurlijk weer zo in een stuk SQL plakken en dan wordt het wederom alsnog helaas pindakaas een string (maar nu met de tekst 'null')
Neem dus advies twee ten harte, en gebruik bind variabelen!
Gewijzigd op 20/09/2017 14:49:36 door Rob Doemaarwat
What Rob says: Prepared statements gebruiken en weg met mysqli_real_escape_string.
http://php.net/manual/en/mysqli-stmt.bind-param.php
En een voorbeeld: https://www.phphulp.nl/php/tutorial/overig/mysqli/499/nu-goed-stmt/1209/
Nog even linkje naar de docs (met voorbeeld): En een voorbeeld: https://www.phphulp.nl/php/tutorial/overig/mysqli/499/nu-goed-stmt/1209/