我正在尝试为每个日期创建一个带有复选框的日历。当用户单击提交按钮时,我希望将那些选定的日期插入到数据库中,如果那些已经存在,那么将从数据库中删除那些未选择的日期。我创建了一个index.php页面,我在其中编写了以下代码来生成日期:
的index.php:
<form name="form1" method="post" action="show.php">
<?php
$year="2011";
$month="8";
$d=cal_days_in_month(CAL_GREGORIAN,1,2011);
$i=1;
while($i<=$d)
{
?>
<input type="checkbox" name="date[]" value="<? echo " $year-$month- " . $i . ""."<br>"; ?>">
<? echo " $year-$month- " . $i . ""."<br>"; ?>
<?
$i++;
}
?>
<input type="submit" name="Submit" value="Submit">
</form>
show.php:
<?
mysql_connect("localhost", "root", "") or die("Could not connect: " . mysql_error());
mysql_select_db("database");
$media_array = $_POST['date'];
foreach ($media_array as $one_media)
{
$source .= $one_media.", ";
}
$media = substr($source, 0, -2);
$query = "INSERT INTO table1 (id,media) VALUES('', '$media')";
$result = mysql_query($query); }
?>
然后我创建了另一个名为show.php的页面,我试图编写用于插入信息的代码,但是我失败了。 请你帮我这样做吗?我尽我所能,但我无法做到。提前谢谢。
答案 0 :(得分:1)
最简单的方法是使用Ajax(使用JQuery库使其更容易)。因此,每次复选框更改值时,会向 updateDatabase.php 触发Ajax请求,并删除或插入记录。
因此,如果您在页面上显示复选框,请执行以下操作:
<script>
$(document).ready(function() {
//Every time a checkbox changes (gets ticked or unticked) send n Ajax request
//to updateDatabase.php containing its value and a BOOLEAN checked/unchecked
$('input[type="checkbox"]').change(function() {
var checked = $(this).is(':checked');
$.ajax({
url: "updateDatabase.php",
type: "POST",
data: {value : $(this).val(),
checked : checked },
dataType: "html",
async:false,
success: function(msg) {
//Show the answer from the file in an alertbox.
//Use this to debug your code. Leave it out afterwards.
alert(msg);
}
});
});
});
</script>
因此,每次选中或取消选中复选框时,它都会将其值和“已检查”布尔值发送到 updateDatabase.php 。
在此文件中,您可以执行类似以下操作:
<强> updateDatabase.php 强>
<?php
//Get POST variables
$value = mysql_real_escape_string($_POST['value']);
$checked = $_POST['checked'];
//If the checkbox was checked, INSERT its value into the database
//else you remove it.
if ($checked == true) {
$query = "INSERT INTO table (value) VALUES ('" . $value . "')";
}
else {
$query = "DELETE FROM table WHERE value = '" . $value . "'";
}
mysql_query($query);
?>
如果您不想在流程上执行此操作 如果您想在用户点击“提交”时更新数据库,只需将表单提交到 show.php 。
<强> show.php 强>
<?php
$dates = $_POST["date"];
echo "Dates chosen: " . count($dates) . "<br /><br />";
if (count($dates)>0) {
echo "You picked the following dates:<br />";
}
for ($i=0; $i<count($dates); $i++) {
echo ($i+1) . ") " . $dates[$i] . "<br />";
mysql_query("INSERT INTO table (value) VALUES ('" . mysql_real_escape_string($dates[$i]) . "')");
}
?>
希望这能帮到你!
(我没有测试这段代码,所以如果还有一些小错误,我很抱歉。但我相信你会抓住这个漂移!)