到目前为止,我已经完成了这段代码:
$assign = $_POST['assign'];
if(!empty($name) && !empty($description) && !empty($deadline))
{
if(validateDate($deadline))
{
$final_deadline = strtotime($deadline);
$sql .= "INSERT INTO projects
(project_id, project_name, project_description, project_deadline, project_status, project_priority)
VALUES ('" . $project_id . "', '" . $name . "', '" . $description . "', '" . $final_deadline . "', '" . $status . "', '" . $priority . "');";
if(is_array($assignments))
{
foreach($assignments as $assigned_user)
{
$sql .= "INSERT INTO assignments (user_id, project_id) VALUES('" . $assigned_user . "', '" . $project_id . "');";
}
}
else
{
echo '<br /><br />not an array<br />';
}
$result = mysql_query($sql) or die(mysql_error());
echo '<br />' . var_dump($assignments);
}
else
{
$_SESSION['ERROR'] = "Not a valid deadline";
header("Location: dashboard.php");
}
}
哪个会使用此复选框列表:
<input type="checkbox" value="<?php echo $row['user_id']; ?>" id="<?php echo $row['username']; ?>" class="usercheckbox" name="assign[]" />
问题出现的时候,我提交的表单是为每个复选框插入一条记录,它返回一个空数组......
它说:
注意:未定义的索引:分配 [...]第41行
不是数组
NULL
所以基本上复选框什么都没有,复选框中已经有值,assign[]
是正确的,现在我不知道在提交表单时它没有包含任何内容的问题。< / p>
答案 0 :(得分:3)
是否选中了任何复选框?如果您提交的表单未选中所有框,则不会发布任何内容。
如果您希望警告消息消失,请在设置$ assign之前添加if(isset($_POST['assign']))
。然后添加一个else { $assign = array() }
这将初始化$ assign到一个空数组,这样你就不会收到更多关于在null状态下使用$ assign的警告。
答案 1 :(得分:2)
您在FORM代码中使用assign [],在PHP代码中使用$ assignments,这些变成了两个不同的变量。
<击> 2。当检查复选框时,我认为值变成'已检查'而不是一个值(这可能是错误的,因为我这样做了一段时间)
编辑我错了,它确实使用了值
答案 2 :(得分:0)
你确定你的FORM正在使用POST方法吗?
答案 3 :(得分:0)
第一个意图是我认为你没有使用表单标签或错误的方法属性。
<form method="post" action="target.php">
....
</form>
如果不是这种情况,请尝试在Post数组上使用var_dump
var_dump($_POST);
在目标PHP文件中,如果它是空的,则没有任何发送。我记得没错,如果选中了一个复选框,只会进入数组,所以请尝试使用
if(isset($_POST['assign'])){
//...
}else{
//What to do if it isn't set.
}
如果您无法解决问题,请再次询问并发布var_dump。
答案 4 :(得分:-1)
你的代码是对的。尝试$ _REQUEST []而不是$ _POST。确保在结算前至少选中了一个复选框。