0

我无法显示联系表格中选择的正确答案/值。收到的电子邮件只会显示 C 作为答案,而不是选择的选项。

<tr>
      <td><label for="gategory">Lemosine</label></td>
      <td><input type="checkbox" name="carchoice[]" value="A" /><td>
  </tr>
  <tr>
      <td><label for="gategory">Mini</label></td>
      <td><input type="checkbox" name="carchoice[]" value="B" /></td>
  </tr>
  <tr>
      <td><label for="gategory">Van</label></td>
      <td><input type="checkbox" name="carchoice[]" value="C" /></td>
  </tr>
  <tr>    
      <td><label for="gategory">Off-Road</label></td>
      <td><input type="checkbox" name="carchoice[]" value="D" /></td>
  </tr>
  <tr>
      <td><label for="gategory">Station-car</label></td>
      <td><input type="checkbox" name="carchoice[]" value="E" /></td>
  </tr>

和 PHP 代码

$check_box_values = "Check box value: ";
  if(isset($_POST['carchoice'])){
    foreach($_POST['carchoice'] as $value){
    $check_box_values .= $value;
    $check_box_values .= ', ';
  }
}


$msg=
  'Name:    '.$_POST['name'].'<br />
  Email:    '.$_POST['email'].'<br />
  IP:   '.$_SERVER['REMOTE_ADDR'].'<br /><br />

  IP:   '.$check_box_values['carchoice[]'].'<br /><br />

  Message:<br /><br />

  '.nl2br($_POST['message']).'

';

这是我在电子邮件中得到的

Name:   awdawd aw
Email:  adasda@live.dk
IP:         195.249.185.254

IP:         C

Message:

awdawdawdd awd awdawd awd awd

不明白我在这里出了什么问题?

4

2 回答 2

0

复选框的值设置为“C”,因此将获取 C,因为每次尝试在复选框值中给出标签名称时都有标签。

于 2013-07-17T09:50:29.737 回答
0

正如评论中提到的,您尝试访问的属性$check_box_values就像它是一个数组一样,而实际上它是一个字符串。结果,PHP 将返回方括号之间指定位置处的字符,因为这也是一个字符串,它尝试将其转换为整数,结果为 0(所以它基本上返回位置 0 处的字符,$check_box_values其中 is C) .

阅读:按字符访问和修改字符串

此外,您不需要循环构建值字符串,您可以使用implode()

if (isset($_POST['carchoice'])) {
    $val = implode(', ', $_POST['carchoice']);
    $check_box_values = "Check box value(s): " . $val;
}
于 2013-07-17T10:01:31.137 回答