2012-05-02 34 views
2

我有一个困扰了我好几天的问题 - 当复选框处于打开状态或关闭状态时,我试图将一个变量添加到选项值中。变量显示,但不是我想要的方式,当复选框关闭时,我希望“No Subscription”被添加到选项值中,当复选框打开时,“subscribe”被添加到选项值中。 这里是我的脚本:PHP没有选择正确的复选框状态来设置变量

<?php 

if(isset($_POST['subscribe']) == '1') { 
    $sub = ", Subscribe"; 
    } else { 
    $sub = ", No Subscription";} 
?> 

-------------------------------------------------------------------------------------------- 


      <form class="cart" action="http://serber.com" method="post"> 
      <section class="clear"></section> 
      <label>Tampons (Non-Applicator) Regular :&nbsp;</label> 
       <select name="productpr"> 
       <option value="NT12<?php printf($sub); ?>:17.95">1 Month - $17.95 <span></span> </option> 
       <option value="NT12 3 Months<?php printf($sub); ?>:33.85">3 Months - $33.85</option> 
       <option value="NT12 6 Months<?php printf($sub); ?>:57.70">6 Months - $57.70</option> 
       </select> 
       <input type="hidden" name="submitted" value="true" /> 
       <br /><input type="submit" value="Add to Cart">&nbsp; 
       <input type="hidden" name="subscribe[]" value="0" /> 
       <input type="checkbox" name="subscribe[]" value="1">Check Box if you wish to have a recurring subscription</input> 
      </form> 

I am at my wit's end with this because it seems I have the isset correct but the checkbox value 

没有被设置。如果

+0

为什么使用复选框名称作为数组 –

回答

1

你既有hidden fieldcheckbox的同名。请更改隐藏的字段名称。 并在PHP代码把代码

if(isset($_POST['subscribe']) && ($_POST['subscribe'][0] == '1')) 

在地方的

if(isset($_POST['subscribe']) == '1') 

如果你不能改变隐藏字段的名称,然后在if条件

if(isset($_POST['subscribe']) && ($_POST['subscribe'][1] == '1')) 

感谢

使用代码
+0

我可能会建议删除隐藏的字段, – mwotton

+0

感谢球员,这似乎工作,我已经把数组和隐藏的领域放在绝望之中没有意识到我所需要做的只是检查一个简单的布尔值,因为我的变量只需要设置作为2件事中的1件,我也将研究所有这些答案,因为看起来我的错误是由于不知道我的情况会/应该如何工作而产生的! – Beroge

1

(isset($ _ POST [ '订阅'])与$ _ POST [ '订阅'] == '1'){

+0

isset在成功时返回TRUE,所以严格g“1”从来都不是真的。 – djot

+0

对字符串的检查是值检查 - 与isset()分开的条件。所以这个答案是有效的,但我会用&&而不是AND。 – mwotton

0

isset()返回一个布尔值考虑,请评价它作为一个布尔或比较它用布尔值===。虽然类型强制将仍然给你所做的正确结果,但它是低效率和混乱。只要做:

if (isset($_POST['subscribe'])) { 

...但是,这本身并不能解决问题。因为您已命名为您的输入subscribe[]$_POST['subscribe']将始终设置,它将始终是一个具有1或2个元素的数组。为此目的创建阵列没有意义,请尝试使用下面的代码:

<?php 

    if (isset($_POST['subscribe'])) { 
    $sub = ", Subscribe"; 
    } else { 
    $sub = ", No Subscription"; 
    } 

?> 

<!---------------------------------------------> 

<form class="cart" action="http://serber.com" method="post"> 
    <section class="clear"></section> 
    <label>Tampons (Non-Applicator) Regular :&nbsp;</label> 
    <select name="productpr"> 
    <option value="NT12<?php printf($sub); ?>:17.95">1 Month - $17.95</option> 
    <option value="NT12 3 Months<?php printf($sub); ?>:33.85">3 Months - $33.85</option> 
    <option value="NT12 6 Months<?php printf($sub); ?>:57.70">6 Months - $57.70</option> 
    </select> 
    <input type="hidden" name="submitted" value="true" /><br /> 
    <input type="submit" value="Add to Cart" />&nbsp; 
    <input type="checkbox" name="subscribe" value="1"<?php if (isset($_POST['subscribe'])) echo ' checked="checked"'; ?>>Check Box if you wish to have a recurring subscription</input> 
</form> 
0

试试这个。它用你的代码为我工作。你已经把<input type="hidden" name="subscribe[]" value="0">。没有必要。

<?php 
echo"hi"; 
if(isset($_POST['subscribe']) == '1') { 
    $sub = ", Subscribe"; 
    } else { 
    $sub = ", No Subscription";} 
    echo $sub; 
?> 

<html> 
<body> 
      <form class="cart" method="post"> 
      <section class="clear"></section> 
      <label>Tampons (Non-Applicator) Regular :&nbsp;</label> 
       <select name="productpr"> 
       <option value="NT12<?php echo($sub); ?>:17.95">1 Month - $17.95 <span></span> </option> 
       <option value="NT12 3 Months<?php echo($sub); ?>:33.85">3 Months - $33.85</option> 
       <option value="NT12 6 Months<?php echo($sub); ?>:57.70">6 Months - $57.70</option> 
       </select> 
       <input type="hidden" name="submitted" value="true" /> 
       <br /><input type="submit" value="Add to Cart">&nbsp; 
       <input type="checkbox" name="subscribe[]" value="1">Check Box if you wish to have a recurring subscription</input> 
      </form> 
      </body> 
</html> 
+0

如果条件不成立,您还没有纠正无效。无论是(isset($ _ POST ['subscribe'])或(isset($ _ POST ['subscribe'])&& $ _POST ['subscribe'] =='1') – mwotton