如何使用“发送多个值到PHP”;onchange=";?
我有两个单选按钮类别:color1和color2。颜色1可以是黑色或白色,颜色2可以是红色或蓝色。我只希望用户能够从一个类别或两个类别中进行选择,然后使用PHP重复选择 我的问题是,它不会同时呼应两个类别的选择。例如,如果我单击“白色”单选按钮,然后单击“蓝色”单选按钮,它将只回显“蓝色”,而不是“白色”和“蓝色” 更新:如何使用“发送多个值到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
<?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 />