Reputation: 27
I have form html like this:
<html>
<head>
<body>
<form action='upload_data.php' method="POST" enctype="multipart/form-data">
<input type="text" name="total_container">
<button id="submit">Add</button>
</form>
</body>
</head>
</html>
upload_data.php
include 'connect.php';
$total_container = $_POST["total_container"];
if (!empty($total_container)){
$fill="INSERT INTO `container`(`total_container`, `time`)VALUES($total_container,'blabla')";
$data=mysql_query($fill);
if(isset($data)){
echo "<script>alert ('Great');</script>";
} else {
echo "<script>alert('No...');</script>";
}
}
I want to fill my database table (container) like this:
id_block | total_container | time |
---------------------------------------
1 | 1 | 00:00:20 |
2 | 2 | 00:00:40 |
3 | 3 | 00:01:00 |
4 | 6 | 00:02:00 |
so, what should I do in my Query?, I want to fill time field automatically, multiplied with 20 seconds.
Upvotes: 0
Views: 2132
Reputation: 16458
try this
INSERT INTO `container`(`total_container`, `time`)
VALUES($total_container, SEC_TO_TIME($total_container*20) )
See reference for SEC_TO_TIME
Upvotes: 3
Reputation: 1162
Change your code like this:
<?php
include 'connect.php';
$total_container = $_POST["total_container"];
$time = date("H:i:s", $total_container);
if (!empty($total_container)){
$fill="INSERT INTO `container`(`total_container`, `time`)VALUES($total_container,'$time ')";
$data=mysql_query($fill);
if(isset($data))
{
echo "<script>alert ('Great');</script>";
}
else
{
echo "<script>alert('No...');</script>";
}
}
?>
Upvotes: 1
Reputation: 1814
First of all, always escape data you receive from user, since you're using old MySQL extension. Otherwise you're open to SQL injections.
Here is a code that builds a proper SQL query (I omitted a check for empty($total_container)
for better understanding).
//Get data from user and escape
$total_container=mysql_real_escape_string($_POST['total_container']);
//Calculate time in seconds * 20
$time_in_seconds=$total_container*20;
//format as hh:mm:ss.
//Using gmdate('H:i:s',$time_in_seconds) for this is ok,
//but only if your $time_in_seconds is never going to exceed 24 hours
$time=sprintf('%02d:%02d:%02d',
($time_in_seconds/3600), ($time_in_seconds/60%60), $time_in_seconds%60);
//build SQL query
$fill="INSERT INTO `container` (`total_container`, `time`)
VALUES($total_container,'$time')";
Upvotes: 0
Reputation: 1128
Add a
$time = $total_container*20; $time = '00:00:'.$time;
and edit the query to
$fill="INSERT INTO `container`(`total_container`, `time`)
VALUES ($total_container,'$time')";
You also could use gmdate("H:i:s", $time);
instead of $time = '00:00:'.$time;
The method you use depends on the table structure. If time is a text filed, you can use both. But if time is a time field, it'll better to use the second example (gmdate).
Upvotes: 0
Reputation: 23948
<?php
$timeRaw = $total_container * 20;
$time = gmdate("H:i:s", $timeRaw);
$fill="INSERT INTO `container`(`total_container`, `time`)VALUES($total_container,'$time')";
?>
Hope it works for you.
Upvotes: 0