如何使用“发送多个值到PHP”;onchange=";?

如何使用“发送多个值到PHP”;onchange=";?,php,javascript,html,radio-button,onchange,Php,Javascript,Html,Radio Button,Onchange,我有两个单选按钮类别:color1和color2。颜色1可以是黑色或白色,颜色2可以是红色或蓝色。我只希望用户能够从一个类别或两个类别中进行选择,然后使用PHP重复选择 我的问题是,它不会同时呼应两个类别的选择。例如,如果我单击“白色”单选按钮,然后单击“蓝色”单选按钮,它将只回显“蓝色”,而不是“白色”和“蓝色” 更新: <?php session_start(); if(isset($_GET['color1'])){ $_SESSION['color1'] = $_GET['c

我有两个单选按钮类别: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

选择第一种颜色:
黑色
白色
选择第二种颜色:
红色
蓝色

也可以考虑使用jQuery

< P>你可以将两个单选按钮都放在一个表单中,在两个Onchange事件中,只需提交表单。

你需要把两个变量都发送到你正在做请求的时候(就像在<强> YES123中回答)所示。

或者,您可以在PHP中使用
$\u 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-红色=1,蓝色=5等

然后执行
$\u SESSION['color2']=intval($\u GET['color2'])这意味着您可以将颜色存储为数字,便于使用
intval()
进行消毒。当您需要显示已选择的颜色时,您只需编写一个方法,该方法接受一个数字并返回一个带有颜色的字符串。(简单的开关语句)。这将阻止人们向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;
}
只需使用一个类

<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
    });

}
黑色
白色
Jquery{ $(.myElementClass).change(函数(){ //我想做什么就做什么 }); }
尝试以下方法:

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 />
选择第一种颜色:

你能举个例子说明如何在我的情况下使用$\u会话吗?嗯,这两个类别仍然不一致。请参阅我更新的OP.@user701510。在回答中,您可以参考我描述的如何测试会话中的任何问题,或者检查它们是否有效。您还可以为我提供var_dump($\u SESSION,$\u GET),以确保会话实际上在请求之间保持,并且您正在正确地传递。它只显示一个类别还是根本没有显示任何内容?var_dump($\u SESSION,$\u GET)获取数组(2){[“color1”]=>string(5)“black”[“color2”]=>string(4)“blue”}数组(1){[“color1”]=>string(5)“black”}但在这之后,如果我单击任何其他颜色,什么都不会发生。@user701510-hmm。。vardump正确地显示了
$\u会话
中有color1和color2,而
$\u GET
中有一个变量是正确的。所以我只能想到两件事情出了问题。a) 在回显之前,您正在以某种方式更改会话['colorX']
(b)回显时您的拼写有问题吗?
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 />