2015-09-27 29 views
2

HTML和PHP都是全新的,因此原谅我可能是一个基本问题。仅HTML/PHP复选框值仅返回“开”

此代码适用于通过电子邮件发送某些用户输入的骨架HTML/PHP表单。我一直在寻找很多小时来解决这个问题,但是我一直无法获得解决方案。

我试图找到一种方法来存储复选框值(即第一,第二)的实际字符串,而不是让PHP代码返回“On”时检查框中的任何复选框的布尔值。

这里有以下相关代码:

形式:

<form action="formhandle.php" method="post"> 

<div class="row"> 
    <label>Choose</label> 
    <input name="samplecheck[]" type="checkbox" value="First"><label>Checkbox 1</label> 
    <input name="samplecheck[]" type="checkbox" value="Second"><label>Checkbox 2</label> 
</div> 

</form> 

处理方法1:

$value = $_POST['samplecheck']; 

for($i=0; $i < count($value); $i++){ 
    $box .= "Checked : " . $value[$i] . "\n"; 
} 

处理方法2:

foreach($_POST['samplecheck'] as $value) { 
    $box .= "Checked: $value \n"; 
} 

我知道有有限的验证但那我现在不担心。这两种处理方法都“有效”,因为它们可以正确识别复选框值为“On”或“Off”时,但它们只会返回“On”,而我不知道如何返回值的实际字符串。

在任何情况下,如果两个复选框被选中,我会得到这个输出为$箱:

经过:在 经过:在

我在做什么错?它是否曾经应该返回?如果是这样,我该如何区分每个数组项?

+0

请您澄清一下:**但他们只会回到“开”**? –

+0

就像我在问题描述中所说的那样,$ value变量在复选框被选中时存储“On”,而不是实际值* string * names(First,Second)。 – plateheld

+0

另外为了澄清,输出是“开”,全部小写,而不是“开”。我的错。 – plateheld

回答

0

感谢CBOE:

on是送价值对于没有设置值属性的复选框。检查您的HTML代码是否存在错误 - 很可能您在那里写了错误的内容,以便解析器无法识别value属性。验证你的HTML总是一个好主意 - 验证器.w3.org“

在我的情况下,这是我的错,因为没有包含更完整的代码片段,我的复选框与我的收音机共享相同的行,并简单地将它们放置在不同的行允许复选框值正常工作:

错误代码:

<div class="row"> 
     <div class="large-6 medium-6 columns"> 
      <label>Choose</label> 
      <input type="radio" name="rad_choices" value="Red" id="rad_id1"><label for="rad_id1">Radio 1</label> 
      <input type="radio" name="rad_choices" value="Blue" id="rad_id2"><label for="rad_id2">Radio 2</label> 
     </div> 
     <div class="large-6 medium-6 columns"> 
      <label>Choose</label> 
      <input name="samplecheck[]" type="checkbox" value="First" id="check_id1"><label for="check_id1">Checkbox 1</label> 
      <input name="samplecheck[]" type="checkbox" value="Second" id="check_id2"><label for="check_id2">Checkbox 2</label> 
     </div> 
    </div> 

好的代码:

<div class="row"> 
     <div class="large-6 medium-6 columns"> 
      <label>Choose</label> 
      <input type="radio" name="rad_choices" value="Red" id="rad_id1"><label for="rad_id1">Radio 1</label> 
      <input type="radio" name="rad_choices" value="Blue" id="rad_id2"><label for="rad_id2">Radio 2</label> 
     </div> 
    </div> 

    <div class="row"> 
     <div class="large-6 medium-6 columns"> 
      <label>Choose</label> 
      <input name="samplecheck[]" type="checkbox" value="First" id="check_id1"><label for="check_id1">Checkbox 1</label> 
      <input name="samplecheck[]" type="checkbox" value="Second" id="check_id2"><label for="check_id2">Checkbox 2</label> 
     </div> 
    </div> 

他们为什么不能放在同一排,我不知道。这可能是由于我看不到我的代码的另一个问题,但这对我的目的来说是一个适当的解决方案。对于任何具有类似用途的人,只需检查您的代码是否有任何会影响其识别或存储复选框值的功能。

2

当我在我的服务器上测试您的示例时,我收到了期望值。所以,我会为您提供我的代码,这样你就可以对其进行编辑以满足您的需求

<form action="" method="post"> 
<div class="row"> 
    <label>Choose</label> 
    <input name="samplecheck[]" type="checkbox" value="First"><label>Checkbox 1</label> 
    <input name="samplecheck[]" type="checkbox" value="Second"><label>Checkbox 2</label> 
</div> 
<input type='submit'> 
</form> 

<?php 
if(!empty($_POST)){ 
    $box = ''; 
    foreach($_POST['samplecheck'] as &$value) { 
     $box .= "Checked: $value \n"; 
    } 
    echo $box; 
} 
?> 

“我收到预期值”的价值观没有收到哪个? - 佩德罗洛比托”

要回答这个问题

如果我不选择任何复选框,我没有收到输出。

如果我选择了“第一”复选框,我收到文本

经过:一是

如果我选择“第二个”复选框,我收到文本

经过:Second

如果我选择“Sec OND“复选框,如果我选择了‘第一’复选框,我收到文本

检查:先检查:第二

+0

**“我收到了预期值” **该值没有收到? –

+0

我用你的PHP代码,但仍收到的回波输出“经过:在经过:上”。任何关于这里发生了什么的想法? – plateheld

+0

不幸的是,这不能根据您提供的代码进行复制。请随时将我的代码粘贴到http://phpfiddle.org/的codespace部分。 – Jesse