user319815
user319815

Reputation:

Entering Content Into A MySQL Database Via A Form

I've been working on creating a form that submits content into my database but I decided that rather than using a drop down menu to select the date I'd rather use a textfield. I was wondering what changes I will need to make to my table creation file.

<?php mysql_connect ('localhost', 'root', 'root') ;
mysql_select_db ('tmlblog');

$sql = "CREATE TABLE php_blog (
  id int(20) NOT NULL auto_increment,
  timestamp int(20) NOT NULL,
  title varchar(255) NOT NULL,
  entry longtext NOT NULL,
  PRIMARY KEY  (id)
)";

$result = mysql_query($sql) or print ("Can't create the table 'php_blog' in the database.<br />" . $sql . "<br />" . mysql_error());

mysql_close();
if ($result != false) {
    echo "Table 'php_blog' was successfully created.";
}
?>

It's the timestamp that I need to edit to enter in via a textfield. The Title and Entry are currently being entered via that method anyway.

Whenever I use my form to update the database I get the following error message:

Can't insert into table php_blog. INSERT INTO php_blog (time_stamp,title,entry,) VALUES ('1270140960','kjkkj','jkjkjk') You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') VALUES ('1270140960','kjkkj','jkjkjk')' at line 1

Upvotes: 0

Views: 224

Answers (5)

codaddict
codaddict

Reputation: 455400

If you want to enter the current time stamp into the time_stamp field every time a row is being inserted you can change its definition to:

time_stamp  TIMESTAMP NOIT NULL DEFAULT CURRENT_TIMESTAMP

this way you need not do an explicit insert for time_stamp field.

EDIT:

If you want to edit the field from the form you can use the above def of time_stamp field and include the time_stamp value while doing the insert. It should be in the format:

'YYYY-MM-DD HH:MM:SS'

Note: timestamp is a MySQL reserved word. I've renamed it to time_stamp.

Upvotes: 0

webbiedave
webbiedave

Reputation: 48887

TIMESTAMP is a reserved MySQL word. You will need to place backticks around it if you wish to use it as a field name. However, I recommend changing it.

You should also make it a DATE or DATETIME field as that's the kind of data you're actually storing in it.

Upvotes: 2

nc3b
nc3b

Reputation: 16250

You shouldn't have to modify anything. Just make sure you correctly parse the input from the user and create a timestamp with mktime.

Upvotes: 1

Austin Fitzpatrick
Austin Fitzpatrick

Reputation: 7349

You should probably use the MySQL standard DATETIME type for this. Get the textfield's content for a date and feed it to PHP's strtotime and date functions to get it into a format that matches what MySQL is looking for in a DATETIME object.

Upvotes: 1

Jonas B
Jonas B

Reputation: 2391

You wouldn't have to make any changes to that part of your script. What you would need is to retrieve the users date input through a text input in your form and convert it (if its in valid format) to a timestamp.

Edit: unless of course you really want the timestamp to be a date in string or date format then you'd have to change int to varchar(9) (to contain xxxx-xx-xx or whatever format you prefer) or use date or datetime

Upvotes: 1

Related Questions