选择标记以设置会话变量

时间:2015-01-23 16:46:46

标签: php html html-select

我有一个用html编写的网页,它以列表的形式显示查询结果。每条记录都包含一个链接,按下此链接可打开该记录的pdf报告。

我希望能够让用户选择可能包含的内容,并在页面顶部使用<select>标记,以便他们做出选择(在示例中&# 34;在报告中加入评论&#34;)

enter image description here

是否可以设置session variable,以便每次选择<select>时,会话变量都会获取选择的值,这样我就可以知道什么时候需要包含pdf文档是否已创建?

如果没有,有没有办法实现我想要实现的目标?

这是用于创建下载链接的代码的编辑版本:

Include comments in report
<br>
<select value="selectedReport">
<option value="Yes">Yes</option>
<option value="No">No</option>
</select>


<?php
while($row = mysql_fetch_array($result))
{
?>
<tr>
<td>
<form name="createPdf" action="https://...createpdf.php" method="Post" target="_blank">
<input name="pdfID" size="0" type="submit" value="<?php echo $row['pdfID'] ?>" class="pdfButton">
</form>
</td>
</tr>
<?php
}
?>

2 个答案:

答案 0 :(得分:1)

如果您使用 PHP 重定向到新的页面,则只需在php文件中使用 $_POST['selectedReport']

$selectedReport = $_POST['selectedReport'];

你的选择应该是这样的:

<select name="selectedReport">
   <option value="1">Report1</option>
   <option value="2">Report2</option>
   <option value="3">Report3</option>
</select>

如果您在同一页面,则可以使用 Javascript 执行此操作:

var sel = document.getElementById("selectedReport");

//to get the value of the selected option
var selectedReport = sel.options[sel.selectedIndex].value;

//to get the text of the selected option
var selectedReport = sel.options[sel.selectedIndex].text;

你的选择应该是这样的:

<select id="selectedReport">
   <option value="1">Report1</option>
   <option value="2">Report2</option>
   <option value="3">Report3</option>
</select>

修改

回复您的评论:您可以在表单中使用隐藏的输入,如下所示:

<form action="..." method="POST">
<input type="hidden" id="myReport" value=""/>
//... and the content of your form goes here
</form>

并使用以下javascript函数将所选选项放入隐藏的输入值,以便您可以使用表单提交:

function takeValue(){
var sel = document.getElementById("selectedReport");
var selectedReport = sel.options[sel.selectedIndex].text;
//put the selected value in the hidden input value
document.getElementById("myReport").value=selectedReport;
}

然后使用您选择的 onchange 事件来应用它:

<select id="selectedReport" onchange="takeValue()">
   <option value="1">Report1</option>
   <option value="2">Report2</option>
   <option value="3">Report3</option>
</select>

价值将与表格一起提交。

答案 1 :(得分:1)

我找到了一个非常好的解决方案,所以我想分享它:

HTML - 当选择的选择

时,脚本会向setSessionVariable.php发送请求
<script language="JavaScript" type="text/javascript">
function takeValue()
{
var sel = document.getElementById("selectedReport");
var selectedReport = sel.options[sel.selectedIndex].text;
var xmlhttp;

if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
}

urlString="https://website/setSessionVariable.php?choiceSelected=" + selectedReport;
xmlhttp.open("GET",urlString,true);
xmlhttp.send();
}
</script>

select标签 - 选择when选项后,将调用takeValue函数。

<select id="selectedReport" onchange="takeValue()">
<option value="Yes" Selected>Yes</option>
<option value="No" >No</option>
</select>

setSessionVariable.php - 在选择select时在后台运行,并设置会话变量$ selected。

<?php
session_start();
if (isset($_GET[choiceSelected])) 
{
$_SESSION['$selected']=$_GET[choiceSelected];   
}

&GT;