单击按钮时设置 PHP $_SESSION 变量
Setting PHP $_SESSION variable on button click
我试图在用户单击模式 table 中的记录时设置一个 PHP $_SESSION 变量 table。
模态 table 是通过对 SQL 服务器 table 中的记录进行 while 循环来设置的。显示如下:
Value | Link
---------------------------
0 | <a href= changeVar.php?ficheNum=0></a>
1 | <a href= changeVar?ficheNum=1></a>
2 | <a href= changeVar?ficheNum=2></a>
...
单击 table 中的链接之一时,它会运行此代码:
<?php
$ficheNum=$_REQUEST['ficheNum'];
$_SESSION['ficheCount'] = $ficheNum;
header("Location: test.php");
?>
test.php 页面只是一个输入页面,其中填充了来自数据库 table 的值。它还具有上面显示的模态 table。 test.php上的PHP如下
$fiche_array = array();
$sel_query = "SELECT fiche
FROM test.dbo.[TLM.Fiche_Globale]
ORDER BY fiche ASC;";
$sel_result = sqlsrv_query($con, $sel_query) or die( print_r( sqlsrv_errors(), true));
while($sel_row = sqlsrv_fetch_array($sel_result)) {
array_push($fiche_array, $sel_row['fiche']);
}
if(isset($_POST['new']) && $_POST['new']==1)
{
$_SESSION['ficheCount'] ++;
}else if(isset($_POST['new2']) && $_POST['new2']==1)
{
$_SESSION['ficheCount'] = $_SESSION['ficheCount'] - 1;
}else if(isset($_SESSION['ficheCount']) && $_SESSION['ficheCount'] > 0)
{
$_SESSION['ficheCount'] = $_SESSION['ficheCount'];
}else{
session_start();
$_SESSION['ficheCount'] = 0;
}
if/else语句中的前两条语句是操作下一个和上一个记录按钮。他们工作正常。最后一条语句是在触发语句 1-3 的 none 时运行的代码。
如果用户从 changeVar.php 页面重定向回该页面,则应该触发第三条语句。但是,这永远不会触发。或者,它会触发但什么都不做——我不确定。
我已经尝试手动测试 changeVar 页面:
<?php
$ficheNum=$_REQUEST['ficheNum'];
$_SESSION['ficheCount'] = $ficheNum;
echo $_SESSION['ficheCount'];
?>
它将变量设置为正确的数字,但是,当我 return 到 test.php 页面时,它总是默认返回到之前设置的 ficheCount,就好像我从未在changeVar.php 页。
如果有人能看到我在这里做错了什么,将不胜感激。
干杯,
为了使用 PHP 会话,您总是需要 运行 命令 session_start();
在每个使用会话的 PHP 文件的开头。 http://php.net/manual/en/function.session-start.php
我试图在用户单击模式 table 中的记录时设置一个 PHP $_SESSION 变量 table。
模态 table 是通过对 SQL 服务器 table 中的记录进行 while 循环来设置的。显示如下:
Value | Link
---------------------------
0 | <a href= changeVar.php?ficheNum=0></a>
1 | <a href= changeVar?ficheNum=1></a>
2 | <a href= changeVar?ficheNum=2></a>
...
单击 table 中的链接之一时,它会运行此代码:
<?php
$ficheNum=$_REQUEST['ficheNum'];
$_SESSION['ficheCount'] = $ficheNum;
header("Location: test.php");
?>
test.php 页面只是一个输入页面,其中填充了来自数据库 table 的值。它还具有上面显示的模态 table。 test.php上的PHP如下
$fiche_array = array();
$sel_query = "SELECT fiche
FROM test.dbo.[TLM.Fiche_Globale]
ORDER BY fiche ASC;";
$sel_result = sqlsrv_query($con, $sel_query) or die( print_r( sqlsrv_errors(), true));
while($sel_row = sqlsrv_fetch_array($sel_result)) {
array_push($fiche_array, $sel_row['fiche']);
}
if(isset($_POST['new']) && $_POST['new']==1)
{
$_SESSION['ficheCount'] ++;
}else if(isset($_POST['new2']) && $_POST['new2']==1)
{
$_SESSION['ficheCount'] = $_SESSION['ficheCount'] - 1;
}else if(isset($_SESSION['ficheCount']) && $_SESSION['ficheCount'] > 0)
{
$_SESSION['ficheCount'] = $_SESSION['ficheCount'];
}else{
session_start();
$_SESSION['ficheCount'] = 0;
}
if/else语句中的前两条语句是操作下一个和上一个记录按钮。他们工作正常。最后一条语句是在触发语句 1-3 的 none 时运行的代码。 如果用户从 changeVar.php 页面重定向回该页面,则应该触发第三条语句。但是,这永远不会触发。或者,它会触发但什么都不做——我不确定。
我已经尝试手动测试 changeVar 页面:
<?php
$ficheNum=$_REQUEST['ficheNum'];
$_SESSION['ficheCount'] = $ficheNum;
echo $_SESSION['ficheCount'];
?>
它将变量设置为正确的数字,但是,当我 return 到 test.php 页面时,它总是默认返回到之前设置的 ficheCount,就好像我从未在changeVar.php 页。
如果有人能看到我在这里做错了什么,将不胜感激。
干杯,
为了使用 PHP 会话,您总是需要 运行 命令 session_start();
在每个使用会话的 PHP 文件的开头。 http://php.net/manual/en/function.session-start.php