2012-05-02 57 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