使用 php 以更好的格式返回数组


Returning an array using php in a better format

我有一个表单,我允许用户创建一个名称列表。我还需要允许他们为每个名称指定事件的 rsvp 状态。

以下是表单的部分:

<li>
<div id="dynamicInput">
          Name 1<br><input type="text" name="myInputs[]">   Attending Brunch? Yes<input name="attending[]" type="checkbox" value="Attending Brunch" />  No<input name="notattending[]" type="checkbox" value="Not Attending Brunch" /><br>
           Name 2<br><input type="text" name="myInputs[]">   Attending Brunch? Yes<input name="attending[]" type="checkbox" value="Attending Brunch" />  No<input name="notattending[]" type="checkbox" value="Not Attending Brunch" /><br>
            Name 3<br><input type="text" name="myInputs[]">   Attending Brunch? Yes<input name="attending[]" type="checkbox" value="Attending Brunch" />  No<input name="notattending[]" type="checkbox" value="Not Attending Brunch" /><br>
             Name 4<br><input type="text" name="myInputs[]">   Attending Brunch? Yes<input name="attending[]" type="checkbox" value="Attending Brunch" />  No<input name="notattending[]" type="checkbox" value="Not Attending Brunch" /><br>
              Name 5<br><input type="text" name="myInputs[]">   Attending Brunch? Yes<input name="attending[]" type="checkbox" value="Attending Brunch" />  No<input name="notattending[]" type="checkbox" value="Not Attending Brunch" /><br>
     </div>
     <input type="button" value="Add another volunteer" onClick="addInput('dynamicInput');">
 </li>

这是在电子邮件中返回信息的 php:

$myInputs = $_POST['myInputs'];
foreach ($myInputs as $eachInput) {
     $message .= $eachInput . " - " ;
}
$attending = $_POST['attending'];
foreach ($attending as $moreInput) {
     $message .= $moreInput . "<br><br>";
}
$notattending = $_POST['notattending'];
foreach ($notattending as $moreInput) {
     $message .= $moreInput . "<br><br>";
}

$contact = $_POST['contact'];
$from = "$name <$email>";
$to = $_POST['recipient']; //"kim@ka-kingdesigns.com";
$subject = "Day of Caring Team Registration".$_POST['subject'];
$comments = "
<strong>Team Members</strong><br> {$message}<br><br>;

现在它返回输入的信息如下:

团队成员 Kim - 参加早午餐 - 多诺万 - - - - 不参加早午餐

我需要它像这样返回:

团队成员
金 - 参加早午餐
多诺万 - 不参加早午餐

谁能帮忙?

就目前情况而言,您正在循环浏览表单上人员姓名的整个列表; 然后您循环浏览与会者列表; 然后您循环浏览非与会者列表。

我建议明确编号字段:

Name 1<br><input type="text" name="name_1">   
Attending Brunch? Yes<input name="attending_1" type="radio" value="Yes" />  
No<input name="attending_1" type="radio" value="No" /><br>

这使得处理数据变得更加容易:

$count = 1;
while (isset($_POST["name_" . $count])) {
    $message .= $_POST["name_" . $count] . " - " $_POST["attending_" . $count] . "'n";
}

(抱歉,如果语法有点不对劲 - 我整天都在写perl,语法足够接近,当我尝试切换回来时会导致问题)

如果你想使用 javascript 添加一个额外的条目,它只需要遍历表单以找到最高的现有条目,并使用下一个可用的数字来生成字段名称。