Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改选择字段时更新PHP变量_Php_Variables_Select - Fatal编程技术网

更改选择字段时更新PHP变量

更改选择字段时更新PHP变量,php,variables,select,Php,Variables,Select,我正在整理我找到的其他人的代码片段。我想在select字段更改后更新一个PHP变量 变量的名称为$ProductType,如下所示。当前代码执行预期的操作,因此现在我要做的就是将变量设置为changed选项 <?php $ProductType = ''; if(isset($_GET['trade'])){ //Everything in here will get echoed in the DIV echo "You selected: ".$_GET['t

我正在整理我找到的其他人的代码片段。我想在select字段更改后更新一个PHP变量

变量的名称为$ProductType,如下所示。当前代码执行预期的操作,因此现在我要做的就是将变量设置为changed选项

<?php
  $ProductType = '';

  if(isset($_GET['trade'])){
    //Everything in here will get echoed in the DIV
    echo "You selected: ".$_GET['trade'];
    $ProductType = $_GET['trade']; // I'd have thought this might work but when I echo $ProductType, it returns nothing.
    exit;
  }

?>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>

<form name="x" action="" method="POST">
  <select name="trade" onchange="$('#extra').load('?trade='+this.value);">
    <option value="1">item1</option>
    <option value="2">item2</option>
    <option value="3">item3</option>
    <option value="4">item4</option>
  </select>
  <input type="submit" value="SEARCH" class="submit-button btn" />
</form>

<div id="extra" style="color:red;"></div>

PHP在服务器上运行,jquery(javascript)在客户端机器的浏览器中运行,这基本上意味着如果您在chrome或IE中检查PHP为您创建的html,您所看到的只是html,您的PHP代码将丢失,它丢失是因为服务器已经运行了它(在“服务器端”)并使用它的输出更改/附加包含在php中的html

您的html表单使用“post”方法,因此当http协议向服务器发布(发送回)时,您需要使用
$\u post[“trade”]
访问从浏览器上发送的值


通常,在html表单中添加一个隐藏变量,php可以使用该变量作为检查,如果表单已回传给服务器,或者没有收到回传(第一次运行),那么隐藏变量将不会出现在变量的
$\u POST
集合中

是否
$\u GET['trade']
为空?您是否尝试在退出后
回显
它?您可以为onchange事件调用ajax您尝试混合使用php和javascript,php脚本在您完成加载调用后不存在,因此在您完成调用后没有$ProductType,您需要将其存储在某个会话变量中。我已经测试了您的代码,它非常完美。当我更改选择框时,它会显示您选择的输出:2。您为selectbox编写了
onchange
事件,因此当您的选择选项更改为新选项时,它会显示结果。谢谢大家,我已经添加并编辑了,希望它能澄清我想要实现的目标。感谢Nnoel的详细描述。由于从GET更改为POST,页面现在重新加载并回显正确的变量输出。现在我只需要弄清楚这个会话变量是如何从您的链接中工作的。会话变量很有用,但是如果您只是将所有内容写入html表单变量,您可以通过重新加载html回发中的所有内容来跟踪php变量,否则是的,会话需要记住哪个页面交付给哪个用户,因此可以加载正确的变量@六英尺詹姆斯