我需要能够将一系列Date值发送到我的数据库。以下是我目前使用的解决方案:一次添加一个日期:
HTML: 编辑:我更新了HTML表单以包含from / to字段而不是单个字段。
<form method="post" action="/PHP/update.php">
<table width="400" border="0" cellspacing="1" cellpadding="2">
<tr>
<td width="100">From:</td>
<td><input name="fromdate" type="date" id="fromdate"></td>
</tr>
<tr>
<td width="100">To:</td>
<td><input name="todate" type="date" id="todate"></td>
</tr>
<tr>
<td width="100">Customer Name</td>
<td><input name="name" type="text" id="name"></td>
</tr>
<tr>
<td width="100"> </td>
<td> </td>
</tr>
<tr>
<td width="100"> </td>
<td>
<input name="update" type="submit" id="update" value="Update">
</td>
</tr>
</table>
</form>
PHP:
<?php
header( "refresh:2;url=/protected/update.html" );
if(isset($_POST['update']))
{
$dbhost = 'localhost';
$dbuser = 'USER';
$dbpass = 'PASS';
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
$date = $_POST['date'];
$name = $_POST['name'];
$sql = "INSERT INTO calendar (date, customer)
VALUES ('$date', '$name')";
mysqli_select_db($conn, 'website_main');
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
die('Could not update data: ' . mysqli_error($conn));
}
echo "Updated data successfully,\n";
echo "You will be re-directed shortly.\n";
mysqli_close($conn);
}
else
{
?>
<?php
}
?>
此设置目前允许我在html表单中每次点击更新按钮发送一个日期。
但是我想编辑表格(我可以自己做)以获得日期:从[dd / mm / yyyy]到[dd / mm / yyy]。然后当我点击更新时,PHP将能够填写空白,例如如果是2016年1月1日至2016年1月3日,PHP将提交到数据库01/01 / 2016,02 / 01/2016和03/01/2016。
我是一个完整的PHP菜鸟,并且在尝试使单日期提交工作时遇到了很多问题。任何和所有的帮助将不胜感激。
编辑:我应该首先澄清一下,道歉。数据库链接到日历,该日历更新并标记数据库中的红色日期。因此,每个日期必须在表格中有一个单独的条目。由于我已经设置了日历的方式,我不能将startDate和endDate作为同一条目中的2个单独列。有没有办法解决这个问题而不必为我的日历重做代码?答案 0 :(得分:1)
在您的情况下,我希望仅使用两个日期start_date和end_date,并在检索数据时比较每个日期。根据您的要求,您可以使用此代码并保存以逗号分隔的日期。
while (strtotime($date) <= strtotime($end_date)) {
echo "$date\n";
$date = date ("Y-m-d", strtotime("+1 day", strtotime($date)));
}
然而前者将是正确的解决方案。
答案 1 :(得分:1)
您应该捕获两个日期参数并将其保存在数据库中。 你可以用:
$todate = $_POST['fromdate'];
$fromdate = $_POST['todate'];
然后您需要在表格中添加新列。新SQL可能如下所示:
$sql = "INSERT INTO calendar (fromdate,todate, customer)
VALUES ('".$fromdate."', '".$todate."', '".$name."')";
使用fromdate,todate和customer列。 如果要填写空白字段,则应为表单创建PHP文件。然后你有一个方法来移交属性。就像通过GET发送它一样。
header( "refresh:2;url=/protected/update.php" );
if(isset($_POST['update']))
{
$dbhost = 'localhost';
$dbuser = 'USER';
$dbpass = 'PASS';
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
$todate = $_POST['fromdate'];
$fromdate = $_POST['todate'];
$name = $_POST['name'];
$sql = "INSERT INTO calendar (fromdate,todate, customer)
VALUES ('".$fromdate."', '".$todate."', '".$name."')";
mysqli_select_db($conn, 'website_main');
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
die('Could not update data: ' . mysqli_error($conn));
}
echo "Updated data successfully,\n";
echo "You will be re-directed shortly.\n";
mysqli_close($conn);
}
else
{
?>
<?php
}
答案 2 :(得分:0)
非常感谢哈里什·拉尔瓦尼(Harish Lalwani)指出了我的正确路线。
略微适应他的建议后,我设法创建了一个while循环,它将每个循环的日期递增,直到它到达结束日期。
正在运行的PHP:
<?php
header( "refresh:2;url=/protected/update.html" );
if(isset($_POST['update']))
{
$dbhost = 'localhost';
$dbuser = 'aidan';
$dbpass = 'Bathgate69107965';
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
$fromDate = $_POST['fromdate'];
$toDate = $_POST['todate'];
$name = $_POST['name'];
$date = $fromDate;
while ($date <= $toDate) {
$sql = "INSERT INTO calendar (date, customer)
VALUES ('$date', '$name')";
mysqli_select_db($conn, 'website_main');
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
die('Could not update data: ' . mysqli_error($conn));
}
echo "Updated data successfully,\n";
$date = date ("Y-m-d", strtotime("+1 day", strtotime($date)));
}
echo "You will be re-directed shortly.\n";
mysqli_close($conn);
}
else
{
?>
<?php
}
?>