【问题标题】:how to send multiple values to PHP using "onchange="?如何使用“onchange =”向 PHP 发送多个值?
【发布时间】:2011-09-21 15:37:30
【问题描述】:

我有两个单选按钮类别:color1 和 color2。颜色 1 可以是黑色或白色,颜色 2 可以是红色或蓝色。我只是希望用户能够从一个类别或两个类别中进行选择,然后用 PHP 回显选择。

我的问题是它不会同时回显两个类别的选择。例如,如果我单击“白色”单选按钮,然后单击“蓝色”单选按钮,它只会回显“蓝色”,而不是“白色”和“蓝色”。

更新:

<?php
session_start();

if(isset($_GET['color1'])){
  $_SESSION['color1'] = $_GET['color1'];
}

if(isset($_GET['color2'])){
  $_SESSION['color2'] = $_GET['color2'];
}

echo $_SESSION['color1']; 
echo $_SESSION['color2'];
?>


select first color:<br/>
<input type="radio" name="color1" value="black" onchange="window.location.href='recom.php?color1='+this.value"> black<br />

<input type="radio" name="color1" value="white" onchange="window.location.href='recom.php?color1='+this.value">  white<br />

select second color:<br/>
<input type="radio" name="color2" value="red" onchange="window.location.href='recom.php?color2='+this.value"> red<br />

<input type="radio" name="color2" value="blue" onchange="window.location.href='recom.php?color2='+this.value">  blue

【问题讨论】:

    标签: php javascript html radio-button onchange


    【解决方案1】:

    试试这样的:

    select first color:<br/>
    <input type="radio" name="color1" value="black" onchange="window.location.href='<?php if(isset($_GET['color2'] echo"\'recom.php?color1=\'+this.value+\'&color2=".$_GET['color2'];else echo"\'recom.php\'+this.value";?>> black<br />
    

    【讨论】:

      【解决方案2】:

      只需使用一个类...

      <input type="radio" name="color1" value="black"  class="myElementClass"> Black <br />
      <input type="radio" name="color2" value="white"  class="myElementClass"> White <br />
      
      
      Jquery {
      
      
          $(.myElementClass).change(function() {
      
          //do whatever i want
          });
      
      }
      

      【讨论】:

        【解决方案3】:

        您需要在请求时将这两个变量都发送到(正如 yes123 的回答所示)。

        或者您可以在 PHP 中使用$_SESSION 来保持已选择和未选择的状态。

        您可以在此处阅读会话 http://www.tizag.com/phpT/phpsessions.php

        Session 只是一个数组(我保持它非常简单)。您可以在该数组中放置一些值,并且每次重新加载页面时,这些值都会保留 - 除非您关闭浏览器窗口。

        你的情况

        session_start(); // Remember to have this on top of your php file before any echo or print or any other html is printed out.
        
        if(isset($_GET['color1']){
          $_SESSION['color1'] = $_GET['color1'];
        }
        
        if(isset($_GET['color2']){
          $_SESSION['color2'] = $_GET['color2'];
        }
        
        echo $_SESSION['color1']; 
        echo $_SESSION['color2'];
        

        我还建议不要使用“红色”、“蓝色”等。

        给每种颜色一个 id - red = 1, blue = 5 etc.

        然后你做$_SESSION['color2'] = intval($_GET['color2']); 这意味着你将你的颜色存储为易于使用intval() 清理的数字。当您需要显示已选择的颜色时,您只需编写一个方法,该方法接受一个数字并返回一个带颜色的字符串。 (简单的 switch 语句)。这将阻止人们在你的 html 中注入一些垃圾。

        function get_colour($i){
          switch(intval($i)){
            case 1:
              $colour = "blue";
              break;
            case 2:
              $colour = "red";
              break;
            default:
              $colour = "blue"; // default colour when people try to fiddle with injection
              break;
          }
          return $colour;
        }
        

        【讨论】:

        • 你能举例说明如何在我的情况下使用 $_SESSION 吗?
        • 嗯,它仍然没有呼应这两个类别。请参阅我更新的 OP。
        • @user701510 你能在回答中参考stackoverflow.com/questions/6300160/sessionuser-not-working/…吗?我已经描述了如何测试会话的任何问题或检查它们是否有效。您还可以向我提供 var_dump($_SESSION, $_GET) 以确保会话实际上是从请求到请求以及您正确传递的。它是只显示一个类别还是根本不显示任何内容?
        • var_dump($_SESSION, $_GET) 得到我 array(2) { ["color1"]=> string(5) "black" ["color2"]=> string(4) "blue " } array(1) { ["color1"]=> string(5) "black" } 但在那之后,如果我点击任何其他颜色,什么都不会发生。
        • @user701510 嗯.. vardump 正确显示$_SESSION 中有 color1 和 color2,$_GET 中有一个变量是正确的。所以我只能想到两件事出了问题。 a)在回显之前,您正在以某种方式更改$_SESSION['colorX'] b)在回显时您在某处有拼写?
        【解决方案4】:

        您可以将两个单选按钮放在一个表单中,并且在两个 onchange 事件中,只需提交表单即可。

        【讨论】:

          【解决方案5】:
          onchange=" window.location.href='recom.php?color1='+this.value+'
                     &color2='+document.getElement[..]
                   "
          

          也可以考虑使用jQuery

          【讨论】:

            猜你喜欢
            • 2016-06-11
            • 1970-01-01
            • 2014-06-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-09-15
            • 2015-10-30
            • 2017-07-24
            相关资源
            最近更新 更多