【问题标题】:PHP Echo SUM session value & form selectPHP Echo SUM 会话值和表单选择
【发布时间】:2017-12-08 15:42:14
【问题描述】:

我有一个这样的会话值的 PHP 回显语句:

<?php echo $userinfo['RenewAgreementAmount'] ;?>

我有一个这样的表单选择元素:

<select id="Lock" name="Lock">
                      <option value="1" selected="selected">1 Year</option>
                      <option value="2">2 Years</option>
                      <option value="3">3 Years</option>
                      <option value="4">4 Years</option>
                    </select>

我正在尝试更新&lt;?php echo $userinfo['RenewAgreementAmount'] ;?&gt; 输出,方法是在与表单交互时将用户在选择值 id Lock 中选择的内容与此会话值一起使用?

我试过&lt;?php echo ($userinfo['RenewAgreementAmount'] * #Lock) ;?&gt;,但没有成功。

当用户与选择表单输入进行实时交互时,更新此值的最简单方法是什么?

【问题讨论】:

  • @pr1nc3 好的,谢谢...在哪里可以做到这一点?
  • 给我一些时间来为您提供解释您需要什么的答案。我会回来找你的。
  • @pr1nc3 非常感谢!我找不到非常明确的答案...我认为这对社区来说是一个很好的问题/答案组合。

标签: javascript php


【解决方案1】:
<script>
renewAmount = <?= $userinfo['RenewAgreementAmount']; ?>
function calc(year){
    var amount = renewAmount*year;
    // here you can perform an ajax request to update the amount on server
}
</script>
<select id="Lock" name="Lock" onchange="calc(this.value)">
  <option value="1" selected="selected">1 Year</option>
  <option value="2">2 Years</option>
  <option value="3">3 Years</option>
  <option value="4">4 Years</option>
</select>

【讨论】:

    【解决方案2】:

    这是因为您的 PHP 在您的 HTML 之前被解释。这就是 PHP 的全部意义所在。您可以解决此问题的一种方法是将您的 $userinfo['RenewAgreementAmount'] 存储到 Javascript 变量中并使用此变量。例如:

    <script>var RenewAgreementAmount = <?php echo $userinfo['RenewAgreementAmount'] ?></script>
    

    然后,您可以将新创建​​的RenewAgreementAmount javascript 变量的值放在您想要显示的位置:

    <span id="renewAgreementAmountField"></span>
    <script>
        document.getElementById("renewAgreementAmountField").innerHTML = RenewAgreementAmount
    </script>
    

    然后您可以使用您的变量并更改值。

    RenewAgreementAmount = RenewAgreementAmount * document.getElementById("Lock").value;
    

    如果你想在服务器端更新值,你可以使用 AJAX 请求(纯 Javascript 中的 XMLHttpRequest)和你的新变量。

    【讨论】:

      【解决方案3】:

      好的,所以你有这个下拉菜单,并且你想在每次选择某些东西时获得实时选项:

         $('#Lock').on('change',function() {
             var option
             option = $('#Lock').val()
      
             $.ajax({
                 type: 'post',
                 url: "your_php_file.php",
                 dataType: 'data',
                 data: {
                     option: option
                 }
             })
         })
      

      每次从此下拉列表中选择一个值时,此代码都会获取该值,并将对您要处理的 php 类进行 ajax 调用。你的 php 类名应该放在url: 字段中

      在您的 php 中,您只需像这样检索数据:

      $option=$_POST['option'];
      

      这意味着每次选择某些内容时都会执行 ajax 调用。我建议你放一个按钮,当用户点击按钮时触发ajax,所以设置和onClick事件。

      不要忘记在你的 html-head 中包含 jquery 版本:

      <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>
      

      【讨论】:

      • 你有机会做一个小提琴吗?我无法完成这项工作。
      【解决方案4】:

      使用一些 jQuery 的方法,会是这样的--

      <?php
      session_start();
      
      $_SESSION["RenewAgreementAmount"] = 50;
      
      ?>
      <html>
          <head>
              <script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
          </head>
          <body>
              <select id="Lock" name="Lock">
                  <option value="1" selected="selected">1 Year</option>
                  <option value="2">2 Years</option>
                  <option value="3">3 Years</option>
                  <option value="4">4 Years</option>
              </select>
      
              <script>
                  $(document).ready(function() {
                      $("#Lock").bind("change", function(index){
                          var value = $(this).val();
                          //console.log("Changed to: " + value);
                          $.post("updateSessionValue.php". {"newVal": value});
                      });
                  });
              </script>
          </body>
      </html>
      

      对于updateSessionValue.php页面:

      <?php
      session_start();
      $_SESSION["RenewAgreementAmount"] = $_POST["newVal"];
      

      显然,这只是一个示例代码...确保采取所有必要的安全预防措施!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-04
        • 2015-04-08
        • 1970-01-01
        • 1970-01-01
        • 2016-05-10
        • 1970-01-01
        • 1970-01-01
        • 2013-01-24
        相关资源
        最近更新 更多