【问题标题】:Undefined offset from my checkbox form我的复选框表单的未定义偏移量
【发布时间】:2019-11-18 20:34:51
【问题描述】:

尽管出现“未定义偏移”错误,但以下函数工作正常,但我仍需要对其进行调试。谁能帮我找出错误在哪里?

这是表格:

$query = "SELECT * FROM application WHERE Shortlist_status = 1 AND Interview_datetime !=  '' AND Email_checked ='' ORDER BY Candidate_id ASC";
$result = mysqli_query($link, $query) or die(mysqli_error($link));

while ($row = mysqli_fetch_array($result)) {

<input type="hidden" name="can_id[]" value=<?php echo $canid ?>>
<input type="hidden" name="job_id[]" value=<?php echo $jobid ?>>

(Some codes)

<input name="email[]" id="id" type="checkbox" value="1">
}

这是表单处理:

foreach ($_POST['can_id'] as $i => $candidate_id) {
$job_id = $_POST['job_id'][$i];

$email = $_POST['email'][$i];

$insertQuery = "UPDATE application SET Email_checked = '$email' WHERE Candidate_id = $candidate_id AND Job_id = $job_id";
$inserted = mysqli_query($link, $insertQuery) or die(mysqli_error($link));
}

if($inserted)
{
    $message = 'Application successfully update <br><a href="interview.php">Manage Candidate</a>';; 
}
else
{
  $message = 'Application failed <br><a href="interview.php">Manage Candidate</a>';
}
echo $message;

【问题讨论】:

  • 查看错误信息。它会告诉您确切错误发生的位置(文件和行号)。您应该可以自己找到它。
  • "但我还需要调试"好吧,继续,你就能解决它
  • 哦是的忘了提到错误代码在第 9 行,这是我的“$email = $_POST['email'][$i];”不知道我在哪里出错了,错误只出现第一次,后来没有

标签: php html checkbox


【解决方案1】:

根据您在 cmets 中描述错误的方式,我猜这个问题可以这样解决:

$email = isset($_POST['email'][$i]) ? $_POST['email'][$i] : "otherValue";

如果没有设置"otherValue",则将其替换为您需要的任何内容(可能是"0"

【讨论】:

  • 解决了问题!抱歉,但可以向我解释解决方案背后的原因,因为我很困惑为什么它会出现,尽管数据仍然通过,为什么只是第一次?
  • 我相信复选框在未选中时不会填充$_POST。自从我进行这种编码以来已经有一段时间了,在提交后打印所有 $_POST 值得仔细检查
【解决方案2】:
$email = isset($request->email[$i]) ? $request->email[$i] : 0;

【讨论】:

  • 本网站上通常不赞成仅使用代码的答案。您能否编辑您的答案以包含一些 cmets 或对您的代码的解释?解释应回答以下问题:它有什么作用?它是如何做到的?它去哪儿了?它如何解决OP的问题?见:How to anwser。谢谢!
猜你喜欢
  • 1970-01-01
  • 2021-10-06
  • 1970-01-01
  • 2013-09-01
  • 2014-02-19
  • 2013-08-18
  • 2011-03-13
  • 1970-01-01
相关资源
最近更新 更多