我将表单数据传递到要通过服务器发送的电子邮件中(在这种情况下我使用的是SendGrid,但我认为这与PHP有关,而不是API),我有一个可重复的工作部分。形成。他们可以在表单上添加多个作业来填写,如果他们这样做,只需克隆字段并在每个字段标签/名称和id前面加上一个整数,例如wh-company2
和wh-company2
和等等。他们最多可以增加10个工作岗位。
然后我将其传递到我发送的电子邮件模板中。一切都很好,但是当涉及到工作部分时,我想要检查一下,如果例如wh-company8
存在,那么它将返回8个工作数据。
<?php for ($count = 1; $count <= 10; $count++) : ?>
<?php if (isset($submitted_data['wh-company' . $count . '\''])) : ?>
<p><strong>Work History <?php echo $count; ?></strong><br/>
Company: <?php echo $submitted_data['wh-company' . $count . '\'']; ?><br/>
Position: <?php echo $submitted_data['wh-position' . $count . '\'']; ?><br/>
Company address: <?php echo $submitted_data['wh-address-1' . $count . '\'']; ?><br/>
Date worked from: <?php echo $submitted_data['wh-date-started' . $count . '\'']; ?><br/>
Date worked until: <?php echo $submitted_data['wh-date-ended' . $count . '\'']; ?><br/>
Reasons for leaving: <?php echo $submitted_data['wh-reasons-you-left' . $count . '\'']; ?><br/>
Referee name(s): <?php echo $submitted_data['wh-referee-name' . $count . '\'']; ?><br/>
Referee position: <?php echo $submitted_data['wh-referee-position' . $count . '\'']; ?><br/>
Referee phone number: <?php echo $submitted_data['wh-referee-telephone' . $count . '\'']; ?><br/>
Referee email: <?php echo $submitted_data['wh-referee-email' . $count . '\'']; ?><br/></p>
<?php endif; ?>
<?php endfor; ?>
这是我到目前为止所拥有的。我没有isset
而只是if ($submitted_data['wh-company' . $count . '\'']) :
但是它为10个项目中的每一个都返回了Notice: Undefined index
错误。然后我加入了isset
,但现在还没有返回任何内容。
我做了什么明显错误的事吗?
答案 0 :(得分:1)
你没有其他声明。这意味着isset
返回false,跳过html片段并执行循环的下一次迭代。因为每个isset
都失败了,所以你说过
它返回了一条通知:10个项目中每个项目的未定义索引错误
没有ouptut。
修改强>
正如评论中所述,添加'
字符是导致Undefined index error
而isset
正在完美执行其任务的原因,只需使用以下内容:
<?php if (isset($submitted_data['wh-company' . $count])) : ?>
答案 1 :(得分:0)
您可以将[]
用于表单中重复的字段,以便在发送到PHP时成为数组,并且您无需担心向新字段添加索引。下面是一个示例,在PHP文件中复制粘贴下一个代码并在浏览器中打开它(在作业<input>
字段中键入内容):
<script type="text/javascript">
function add_job ()
{ var jobs = document.getElementById("jobs"); // <DIV>.
jobs.innerHTML += "<br/>" + // ◄■■ ADD NEW <INPUT> INSIDE <DIV>.
"Enter job <input type='text' name='job[]'/>"; // ◄■■ JOB[]
}
</script>
<form method="post"> <!-- ◄■■ FORM WILL REFRESH BECAUSE NO ACTION DEFINED -->
<button type="button" onclick="add_job()">Add job</button>
<br/>
<div id="jobs"></div> <!-- ◄■■ DIV FOR THE JOBS -->
<br/>
<input type="submit" value="Submit jobs"/>
</form>
<?php
if ( isset( $_POST["job"] ) ) // ◄■■ IF PAGE REFRESHED (FORM SUBMISSION).
{ echo "Entered jobs: ";
foreach ( $_POST["job"] as $job ) // ◄■■ "JOB" IS THE NAME OF THE <INPUT>S.
echo $job . " ";
}
?>
逻辑很简单:当单击按钮Add job
时,会向<input>
添加一个新的<div>
,当提交表单时,PHP会将作业作为数组获取并显示它们。请注意,所有<input>
具有相同的名称:“job []”,PHP会将它们识别为“job”(数组)。