php - 复选框数据的未定义索引
问题描述
我收到错误:未定义的索引:运行以下代码时的数据
以下是代码的关键部分,包括可以正常工作的部分:
我创建了一个表格来选择日期 - 这一切都很好
<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;
如果有人能看到我的错误,我将不胜感激。
解决方案
问题是:
<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