首页 > 解决方案 > 复选框数据的未定义索引

问题描述

我收到错误:未定义的索引:运行以下代码时的数据

以下是代码的关键部分,包括可以正常工作的部分:

我创建了一个表格来选择日期 - 这一切都很好

<div class="dates">
<form method="POST" action="">
<label for="StartDate">Start Date:</span></label>
<input type="datetime-local" id="StartDate" name="StartDate" value="<?php 
if(isset($_POST['StartDate'])){echo $_POST['StartDate'];}?>"/>
<label for="EndDate">End Date:</span></label>
<input type="datetime-local" id="EndDate" name="EndDate" value="<?php if(isset($_POST['EndDate'])) 
{echo $_POST['EndDate'];}?>"/>
<input type="submit">
</form>
</Body>
</HTML>
</div>

然后我运行一个 sql 查询并为每行数据添加一个复选框。我使用lead_id 作为值。这一切都显示得很好,并且值被正确分配:

$result = mysqli_query($link,$query);

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

?>
<form method="POST"> 
<?php

echo '<tr><td>'.$row['lead_id'].'</td>';
echo '<td>'.$row['status'].'</td>';
echo '<td>'.$row['campaign_id'].'</td>';
echo '<td>'.$row['call_date'].'</td>';
echo '<td>'.$row['user'].'</td>';
echo '<td>'.$row['status_name'].'</td>';

?>

<td><input type="checkbox" value='<?php echo $row['lead_id']?>' name="data[]"/></td></tr>";
</form> 
<?php

}

然后我有一个提交按钮,用于触发电子邮件 - 所有工作都需要包含来自复选框的潜在客户 ID,并且不是由于此错误

 ?>

<div>
<form method="post"> 
<input type="submit" name="Button1"
value="Send Email"/>   
</form> 
</head>
</div>

我得到的错误是未定义索引:数据

我正在使用下面的代码尝试在屏幕上输出数据以及 var_dump。出于某种原因,所有结果都为 NULL,因为它没有收到 POST。

if(isset($_POST['data']) && !empty($_POST['data']))   
foreach($_POST['data'] as $name) echo $name;

如果有人能看到我的错误,我将不胜感激。

标签: phpcheckboxundefined

解决方案


问题是:

<form method="POST"> 
<?php
...
<td><input type="checkbox" value='<?php echo $row['lead_id']?>' name="data[]"/></td></tr>";
</form>

这些复选框位于不同的<form>标签中,您的提交按钮位于<form>这些复选框下方的不同标签中:

<div>
<form method="post"> 
<input type="submit" name="Button1"
value="Send Email"/>   
</form> 
</head>
</div>

这就是为什么在提交表单时您没有得到这些复选框。要解决此问题,请将复选框移动到按钮所在的同一<form>标记中。submit


推荐阅读