2012-05-03 19 views
2

私は、チェックボックスにチェックが入っているかどうかに基づいて隠しフォームフィールドをエコーするようにしたいのですが、送信ボタンが押される前に非表示のフォームフィールドをペイパルにエコーする必要があります。ここで私はこれまで持っているものである -PHPの条件付きチェックボックスに基づいて非表示のフォームフィールドをエコーする方法は?

<?php  
echo ('<form action="https://www.paypal.com/cgi-bin/webscr" method="post">'); 
echo ('<input type="hidden" name="cmd" value="_cart">'); 
echo ('<input type="hidden" name="upload" value="1">'); 
echo ('<input type="hidden" name="business" value="[email protected]">'); 
echo ('<input type="hidden" name="currency_code" value="US">'); 
echo ('<input type="checkbox" name="camp1" value="a">'); 
echo ('<input type="checkbox" name="camp2" value="b">');  

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

echo ("<input type='hidden' name='item_name_1' value='beach ball'>"); 
("<input type='hidden' name='amount_1' value=50'>"); 
} 
if (isset($_POST['camp2'])) { 

echo ("<input type='hidden' name='item_name_2' value='towel'>"); 
("<input type='hidden' name='amount_2' value='20'>"); 
} 
echo ("<input type='submit' value='PayPal'>"); 
("</form>"); 
?> 

私も運で

if(IsChecked('camp1','a')) { 

ようなもので

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

を交換しようとしています。

ご協力いただければ幸いです。

答えて

3

フォームをsubmitingされていない場合は、そこに実行一切POSTまたはGET方法はありません、あなたのif文でPOST $_POST['camp1']から変数を呼び出しているし、その値を取得することはありません。

あなたの変更PHP:

<html> 
<head> 
<title>Paying process</title> 
</head> 
<script scr="jquery-1.7.2.js" type="text/javascript" /> 
<script scr="functions.js" type="text/javascript" /> 
<body> 
<?php  
echo ('<form id="payForm" action="https://www.paypal.com/cgi-bin/webscr" method="post">'); 
echo ('<input type="hidden" name="cmd" value="_cart">'); 
echo ('<input type="hidden" name="upload" value="1">'); 
echo ('<input type="hidden" name="business" value="[email protected]">'); 
echo ('<input type="hidden" name="currency_code" value="US">'); 
echo ('<input type="checkbox" name="camp1" value="a">'); 
echo ('<input type="checkbox" name="camp2" value="b">');  
echo ('<div id="productInfo" style="display:none;"></div>'); 
echo ("<input type='submit' value='PayPal'>"); 
echo ("</form>"); 
?> 
</body> 
</html> 

functions.jsファイル:

$(document).ready(function(){ 

    $("#payForm").submit(function(e){ 
     if($('#productInfo').html() == ''){ 
      //if there is no product in the hidden div, prevent the submit and show msg. 
      alert('Please select at least one product'); 
      e.preventDefault(); 
     } 
    }); 

    // event when user clicks a checkbox 
    $("input[type='checkbox']").on('click', function(){ 
     var checked = $(this).attr('checked'); 
     if(checked){ 
      var value = $(this).val(); 
      $.post('product.php', { value:value }, function(data){ 
       // data = 0 - means that there was an error or no product 
       if(data != 0){ 
       // At this point you will have your "a" or "b" products in hidden 
       // Also submit button will appear 
       // This means that everything was Ok and the user selected a product 
       $('#productInfo').append(data); 
       } else { 
       // data = 0 
       alert('Please try again.'); 
       } 
      }); 
     } 
    }); 

}); 

product.phpファイルこれを解決するための代替は、JSやjQueryの、例を使用することができ(jQueryポストで使用):

<?php 
    if ($_POST && isset($_POST['value'])) { 

     // db connection 
     $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); 
     if (!$link) { 
      // error happened 
      print(0); 
     } 
     mysql_select_db('mydb'); 

     // sanitize the value 
     $value = mysql_real_escape_string($_POST['value']); 

     // start the query - I am assuming one :-) 
     $sql = "SELECT * FROM products WHERE Id = '$value'"; 
     $result = mysql_query($sql, $link); 

     // check if the product exists 
     if(mysql_num_rows($result) > 0){             
      while($row = mysql_fetch_array($result)){ 
      if($value == 'a'){ 
       echo ("<input type='hidden' name='item_name_1' value='".$row['product_name']."' />"); 
       echo ("<input type='hidden' name='amount_1' value='".$row['product_price']."'>");  
      } else { 
       echo ("<input type='hidden' name='item_name_2' value='".$row['product_name']."' />"); 
       echo ("<input type='hidden' name='amount_2' value='".$row['product_price']."'>");  
      }        
      } 
     } else { 
      // no product found 
      print(0);          
     } 
    ?> 

これで、ユーザーが少なくとも1つの商品を選択した場合にのみ、商品1または商品2またはその両方の隠し値を提示することができます。

希望これはあなたがPHPが不可能なクライアント側の動作を実行するために取得しようとしているようですね:-)

+0

投稿を使用せずにチェックボックスがオンになっているかどうかを確認する方法はありますか? IsChekedのラインに沿ってもっと何か – Keith

+0

私の投稿を編集していて、PHPでjQueryを使ってみて、今コーディングしています。2分待ってからもう一度投稿をチェックしてください:-) –

+0

ありがとうオスカー! – Keith

1

に役立ちます。 PHPは、ユーザーが最初にページをリクエストしたときにそのページをレンダリングし、フォームを送信したり別のページをロードするまで(または、ajaxやjqueryを使用している場合は他の通信が発生するまで)何もしません。チェックボックスをクリックしたときにページの内容を変更したい場合は、JavaScriptを組み込む必要があります。

+0

okこれは良いスタートです。jsとの解決策を探しています。 – Keith

関連する問題