2

何日も悩まされてきた問題があります - チェックボックスがオンまたはオフのままになっているときに、変数をオプション値に追加しようとしています。変数は表示されていますが、私が意図した方法ではありません。チェックボックスがオフの場合は「サブスクリプションなし」をオプション値に追加し、チェックボックスがオンの場合は「サブスクライブ」をオプション値に追加します。これが私のスクリプトです:

<?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

設定されていません。

4

4 に答える 4

1

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

于 2012-05-02T07:23:14.900 に答える
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>
于 2012-05-02T07:40:04.750 に答える
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>
于 2012-05-02T07:32:02.783 に答える