2012-02-26 9 views
1

誰かが私のコードを手伝ってくれることを願っています。私は書き換えられたURLを使用しており、このコードをフォーム上に持っています。ページが最初にmypage.htmをロードすると、デフォルトでtype_24チェックボックスがチェックされます。彼らはtype_12ボックスをチェックする場合、私はtype_24ボックスのチェックを外したい。PHPのチェックボックスとURLの書き換え

私の問題は、私がtype_12ボックスをチェックすると、ページがリフレッシュされ、type_12とtype_24の両方のボックスがチェックされているということです。私はそれが私がアクションとしてphpファイルを持っていれば正常に動作するので、私は私のアクションで私の書き換えられたURLをリロードしているからだと思う。

どのように私は私がtype_24ボックスをチェックするときにtype_12がチェックされるように自分のコードを修正することができますか?私は機能を持っているヘッダで

<form name="frmrefresh" id="frmrefresh" method="post" action="mypage.htm"> 

<input type="checkbox" name="type_12" id="type_12" <?php if(isset($_POST['type_12']) && $_POST['type_12']=="12"){?> checked="checked"<?php }?> value="12" onClick="uncheck24(this);" /> <label>12</label> 

<input type="checkbox" name="type_24" id="type_24" <?php if(isset($_GET['id']) && $_GET['id']!=''){?>checked="checked"<?php }?><?php if(isset($_POST['month_24']) && $_POST['type_24']=="24"){?> checked="checked"<?php }?> value="24" onClick="uncheck12(this);"/> <label>24 Months</label> 

<input type="hidden" name="id" value="<?php echo $_REQUEST['id'];?>" /> 
</form> 

function uncheck12(obj) 
    { 
    if (obj.checked == true) 
     { 
      document.getElementById("type_12").checked = false; 
      document.frmrefresh.submit(); 
     } 
} 

function uncheck24(obj) 
{ 
     if (obj.checked == true) 
     { 
      document.getElementById("type_24").checked = false; 
      document.frmrefresh.submit(); 
     } 
    } 

答えて

0

発言の数:

  • ラジオボタンの代わりに、チェックボックス
  • の使用を検討してください、私はあなたがisset($_POST['type_24'])代わりの意味だと思いますisset($_POST['month_24'])

あなたの問題については、私はあなたの書き換えルールを賭けのようなものです:

RewriteRule ^mypage.htm$ mypage.php?id=5 

これは、フォームがPOST経由で提出があったときには、クエリ文字列になので、PHPはまだあなたのために$_GET['id']変数を設定することを意味します。 $_GET['id']が設定されているときはいつでも '24'オプションをチェックするので、2番目のチェックボックスは常にチェックされます。 あなたがチェック$_SERVER['REQUEST_METHOD'] == 'GET'を追加することを検討可能性があり、この問題を解決するには、次の

<form name="frmrefresh" id="frmrefresh" method="post" action="mypage.htm"> 
<input type="checkbox" name="type_12" id="type_12" <?php if(isset($_POST['type_12']) && $_POST['type_12']=="12"){?> checked="checked"<?php }?> value="12" onClick="uncheck24(this);" /> <label>12</label> 
<input type="checkbox" name="type_24" id="type_24" <?php if(isset($_GET['id']) && $_GET['id']!='' && $_SERVER['REQUEST_METHOD']=='GET'){?>checked="checked"<?php }?><?php if(isset($_POST['type_24']) && $_POST['type_24']=="24"){?> checked="checked"<?php }?> value="24" onClick="uncheck12(this);"/> <label>24 Months</label> 
<input type="hidden" name="id" value="<?php echo $_REQUEST['id'];?>" /> 
</form> 
+0

こんにちはジョン、あなたの助けをありがとう。 ($ _REQUEST ['type_24'])&& $ _REQUEST ['type_24'] == '24')それでもなお、type_24と考えています。画面に表示されていてもチェックされていないのに、まだチェックされていますか?なぜどんなアイデア?ありがとう! – gatin

+0

「まだtype_24はまだチェックされていると思っています」という意味を明確にすることはできますか?あなたはどこにどのようにこれを見ますか? – John