5

I have been trying to Use a form written in HTML to input a "Name" and a "Date" into a SQL Database.

Concerning the connection to SQL everything is fine. It is just that using the the HTML5 Date Input type (which include a drop down calendar) the data and PHP does not seem to show up. When I input the data into the SQL table the "Name" shows up but the "Date" remains blank. I have put some of my code below. The Form is input.html and the data handling code is table.php. The DB name is users and the table name is staff.

input.html

<html>
<form action='table.php' method='POST'>
    Name <input type="text" name="name"> <br />
    Date of Expiry <input type="date" name="date1"> <br />
    <input type="submit" name="submit" value="Submit"> <br />
</form>
</html>

table.php

<?php
  $name = $_POST["name"];
  $date1 = $_POST["date1"];
  $servername = "exampleserver.net";
  $uname = "exampleusername";
  $pass = "password";
  $dbname = "users";
  $errors = array();
  $conn = new mysqli($servername, $uname, $pass, $dbname);
  if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
  } 
  if(mysqli_query($conn,"INSERT INTO staff (`name`, `date1`) VALUES('$name','$date1')")) { 
    header("Location: http://newpageafterdataentry.com"); 
    die(); 
  } else { 
    echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
  } 
  mysqli_close($conn);
?>
3
  • 1
    Is the datatype of the date column 'date'? That would result in the database not accepting any date information not formatted in MySQL date format (i.e. YYYY-MM-DD). Commented Jul 9, 2015 at 11:00
  • 1
    try dumping $date1 and post the dump here (var_dump($date1)), I suspect that the date format is not as expected Commented Jul 9, 2015 at 11:00
  • 1
    not directly related to your problem, but please remeber to properly escape the user input you use in your query! Commented Jul 9, 2015 at 11:23

1 Answer 1

6

You can use strtotime() for converting into timestamp and date() for formatting before saving into DB mysql.Try following:

$day1 = strtotime($_POST["date1"]);
$day1 = date('Y-m-d H:i:s', $day1); //now you can save in DB

Full code should be:

<?php
  $name = $_POST["name"];
  $day1 = strtotime($_POST["date1"]);
  $day1 = date('Y-m-d H:i:s', $day1); //now you can save in DB
  $servername = "exampleserver.net";
  $uname = "exampleusername";
  $pass = "password";
  $dbname = "users";
  $errors = array();
  $conn = new mysqli($servername, $uname, $pass, $dbname);
  if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
  } 
  if(mysqli_query($conn,"INSERT INTO staff (`name`, `date1`) VALUES('$name','$date1')")) { 
    header("Location: http://newpageafterdataentry.com"); 
    die(); 
  } else { 
    echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
  } 
  mysqli_close($conn);
?>
Sign up to request clarification or add additional context in comments.

1 Comment

Great it worked! Thank you very much Im new to SQL and I wasnt sure about how dates are stored!

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.